oracle - 从 Oracle 中的假脱机中删除“已建立连接”
问题描述
如何删除连接到不同数据库的 SQL 脚本中的字符串“已建立连接”并将一些输出假脱机到一个全局文件中?
这实际上是我的简单脚本:
set feedback off
set echo off
set lines 200
set pages 999
spool check_control_file_record_keep_time.txt;
conn /@"HOST1:1521/DB1"
set echo off
set feedback off
set serveroutput on
DECLARE
actual_param_setting NUMBER;
BEGIN
select value into actual_param_setting from v$parameter where name='control_file_record_keep_time';
IF actual_param_setting >= 11 THEN
DBMS_OUTPUT.PUT_LINE('[OK] - DB1 - Parameter control_file_record_keep_time for this database is OK!');
ELSE
DBMS_OUTPUT.PUT_LINE('[NOK] - DB1 - Parameter control_file_record_keep_time need to be changed for this database!');
END IF;
END;
/
conn /@"HOST2:1521/DB2"
set echo off
set feedback off
set serveroutput on
DECLARE
actual_param_setting NUMBER;
BEGIN
select value into actual_param_setting from v$parameter where name='control_file_record_keep_time';
IF actual_param_setting >= 11 THEN
DBMS_OUTPUT.PUT_LINE('[OK] - DB2 - Parameter control_file_record_keep_time for this database is OK!');
ELSE
DBMS_OUTPUT.PUT_LINE('[NOK] - DB2 - Parameter control_file_record_keep_time need to be changed for this database!');
END IF;
END;
/
conn /@"HOST3:1521/DB3"
set echo off
set feedback off
set serveroutput on
DECLARE
actual_param_setting NUMBER;
BEGIN
select value into actual_param_setting from v$parameter where name='control_file_record_keep_time';
IF actual_param_setting >= 11 THEN
DBMS_OUTPUT.PUT_LINE('[OK] - DB3 - Parameter control_file_record_keep_time for this database is OK!');
ELSE
DBMS_OUTPUT.PUT_LINE('[NOK] - DB3 - Parameter control_file_record_keep_time need to be changed for this database!');
END IF;
END;
/
spool off;
exit
这是假脱机文件中的输出
Connection established.
[NOK] - DB1 - Parameter control_file_record_keep_time need to be changed for this database!
Connection established.
[NOK] - DB2 - Parameter control_file_record_keep_time need to be changed for this database!
Connection established.
[NOK] - DB3 - Parameter control_file_record_keep_time need to be changed for this database!
任何“丢弃”“已建立的连接”的想法。通过在 sqlplus 中执行?
解决方案
您可以-s[ilent]
在调用 SQL*Plus 时使用该标志;从文档:
3.5.1.10 SILENT 选项
-S[ILENT]
抑制所有 SQL*Plus 信息和提示消息,包括命令提示符、命令的回显以及启动 SQL*Plus 时正常显示的横幅。如果省略用户名或密码,SQL*Plus 会提示输入它们,但提示不可见!用于SILENT
在另一个程序中调用 SQL*Plus,以便用户看不到 SQL*Plus 的使用。
这也适用connect
于程序内发出的命令,而不仅仅是初始连接(如果你有一个;你可能正在使用/nolog
)。
然后,您还可以将输出重定向到文件作为使用假脱机的替代方法 - 默认情况下,横幅等将在输出中,但由于这抑制了这一点,输出更清晰。
推荐阅读
- javascript - 如何根据先前的日期输入使用 Bootstrap 4 日期/时间选择器设置 minDate?
- php - imagick 复合产生大的输出文件大小
- reactjs - setState 不会额外渲染一次吗?
- neo4j - 多次返回时总计数发生变化
- .net - EF Core ApplicationUser 无法 .Include() 一对多实体
- angularjs - 为什么我的 AngularJS 不工作,是我的过滤功能吗?
- javascript - 使用 Jquery 选择具有特定属性的元素
- mongodb - 在 MongoDB 中查找具有特定 HashTags 的 Objects[tweets]
- javascript - 在分页中选择“全部”选项时如何在引导表上进行延迟加载?
- php - 将多维数组转换为二维