SQLPLUS:后台处理到文件时停止终端输出

时间:2019-02-20 07:18:23

标签: oracle unix sqlplus

如何在SQLPLUS中停止Unix中的终端输出并将输出后台处理到文件中?

我在[关闭]模式下尝试了serveroutputechotermoutfeedback,但是没有运气。

它也在显示登录详细信息。

sqlplus -s  $LOGON  << EOF
    WHENEVER OSERROR EXIT 9;
    WHENEVER SQLERROR EXIT 9;
    set serveroutput off;
    set echo off;
    set termout off;
    set feedback off;
    set heading off;
    set linesize 10000;
    set colsep "|";
    set trims on;
    set trimspool on;
    set pagesize 0;
    spool Summary.txt
    ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY';
    Select * from Customer;
    spool off;
    EXIT;
    EOF

PS:我正在Unix脚本中调用此语句

2 个答案:

答案 0 :(得分:0)

set termout off;-这是正确的选项,但不适用于交互模式。

选项:

  1. 将脚本保存到文件并使用sqplus登录名@file_name(更好)执行
  2. 将输出重定向到/ dev / null或其他文件(sqlplus balbalb)> / dev / null

答案 1 :(得分:0)

整个Oracle 12 Release系列的许多新功能都可以提供帮助。例如,在12.2中,有一个新的“历史记录”命令,您可以在会话中显示和运行过去的命令,而不必重新输入。要启用它,您可以“将历史记录设置为开”(默认为100行历史记录),也可以指定要保留的行数。要查看历史记录,只需在命令提示符下键入“ history”,然后执行过去的命令,只需为要执行的SQL语句输入“ run LineNum”即可。

还有“ SET MARK CSV”命令,因为它是格式化Excel电子表格结果集或将数据集加载到其他数据库类型的快速方法。下面的示例显示了如何使用“ SET MARK CSV”,“ SET ROWLIMT”和“ SET FEEDBACK ON SQL_ID”命令。

示例2 enter image description here

下面列出了新的SQL Plus功能及其发布时间。此外,还有一个新参数“ -f”(表示快速),您可以在命令行上将其传递给SQL Plus以加快会话速度。  版本12.2  -历史记录设置历史记录[ORY] {ON |关闭| n}  --  -可以创建CSV格式           将标记CSV设置为[DELIMI {TER}字符] [QUOTE {ON | OFF}]     -SET STATEMENTC [ACHE] {0 | n}     -仅设置反馈           不只是[ON |关]     -Sqlplus –f @ test.sql           设置ARRAYSIZE 100,LOBPREFETCH 16384,PAGESIZE 50000,           ROWPREFETCH 2,STATEMENTCACHE 20           使其运行更快版本18c     -设置线型窗口     -在SQL_ID上设置反馈     -SET ROWLIMIT n版本19c     -EZConnect改进           接受名称/值对列表

最后,我在19c中为sqlplus找到的唯一改进是eZconnect改进,您可以在连接时在命令行上包含标记/值对以修改其他选项。这提供了一种无需编辑SQLNET.ora文件即可进行连接的快速方法。下面列出了使用此功能的示例:

sqlplus soe / soe @ ///主机名:1521 / sales.company.com?connect_time = 60&传输connect_timeout = 30&retry_count = 4