Sql 如何在日志中显示shell中的select查询?

Sql 如何在日志中显示shell中的select查询?,sql,oracle,shell,unix,Sql,Oracle,Shell,Unix,我在下面有这个shell脚本 #!/usr/bin/ksh # FNC_DIR=/test/Create_User PWD_DIR=/test/users . ${FNC_DIR}/db.profile csrpass=`cat ${PWD_DIR}/csradmin.user` /opt/oracle/product/9.2.0/bin/sqlplus /nolog << EOF > /test/Log/user_create.log conn csradmin/$

我在下面有这个shell脚本

#!/usr/bin/ksh
#

FNC_DIR=/test/Create_User
PWD_DIR=/test/users

. ${FNC_DIR}/db.profile

csrpass=`cat ${PWD_DIR}/csradmin.user`

/opt/oracle/product/9.2.0/bin/sqlplus /nolog << EOF > /test/Log/user_create.log

conn csradmin/${csrpass}@PNDBCSR2
select * from global_name;

echo "select
   dbms_metadata.get_ddl('USER', username) || '/' usercreate
from
   dba_users where username = 'NSAGUN'";




exit;

EOF
我该怎么做

更新

我使用下面提供的代码,我在日志中得到了以下信息:

SQL>
SQL> select
  2     dbms_metadata.get_ddl('USER', username) || '/' usercreate
  3  from
  4     dba_users where username = 'NSAGUN';


   CREATE USER "NSAGUN" IDENTIFIED BY VALUES '1EE5F5XXXXXB194'

      DEFAULT T



SQL>
SQL> spool off
我只想显示create语句部分,它在日志中似乎不完整。我希望日志文件中有这样的内容

CREATE USER "NSAGUN" IDENTIFIED BY VALUES '1EE5F58CB716B194'
      DEFAULT TABLESPACE "PIN01"
      TEMPORARY TABLESPACE "PINTEMP"
 /

echo
是一个shell命令,但您正试图在Oracle SQL脚本中使用它

与Oracle SQL等价的是
spool
。您还需要设置一些附加参数以正确控制输出(即不打印到屏幕、不回显实际命令、行大小、页面大小等)。例如:

/opt/oracle/product/9.2.0/bin/sqlplus -s /nolog << EOF

conn csradmin/${csrpass}@PNDBCSR2
select * from global_name;

set echo off
set termout off
set feedback off
set linesize 80    <<< use a greater value if output lines are truncated
set pagesize 0
set newpage 0
spool /test/Log/user_create.log create

select
   dbms_metadata.get_ddl('USER', username) || '/' usercreate
from
   dba_users where username = 'NSAGUN';

spool off

EOF

/opt/oracle/product/9.2.0/bin/sqlplus-s/nolog目前帮不上什么忙,无法访问oracle系统。但是,1)输出看起来被截断(尝试设置
set linesize 300
或事件更大的值;2)我模糊地记得
set echo off
仅在脚本中工作,而在从标准输入提供命令7时不起作用-在这种情况下,使用
sqlplus-s/nolog
。使用-s即可。谢谢。:)并且能够通过添加:set longcunk 10000来显示整个结果。谢谢
/opt/oracle/product/9.2.0/bin/sqlplus -s /nolog << EOF

conn csradmin/${csrpass}@PNDBCSR2
select * from global_name;

set echo off
set termout off
set feedback off
set linesize 80    <<< use a greater value if output lines are truncated
set pagesize 0
set newpage 0
spool /test/Log/user_create.log create

select
   dbms_metadata.get_ddl('USER', username) || '/' usercreate
from
   dba_users where username = 'NSAGUN';

spool off

EOF