Sql 如何在日志中显示shell中的select查询?
我在下面有这个shell脚本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/$
#!/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