本文主要描述shell编程中常用的Oracle相关命令。
1、sqlplus -L/-S参数
sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提示,可判断用户/密码是否正确
sqlplus -S user/password #-S表示设置无提示模式,常用
2、set相关命令
set timing on #显示SQL语句的运行时间。默认值为OFF。可用于性能分析SQL执行效率。
set autotrace on #允许对执行的SQL进行分析
set trimout on # 去除标准输出每行的拖尾空格,缺省为OFF
set trimspool on #去除重定向(SPOOL)输出每行的拖尾空格,缺省为OFF
set echo on #不显示START启动的脚本中的每个SQL命令,缺省为ON
set feedback on #设置显示"已选择XX行",显示本次SQL命令处理的记录条数,缺省为ON
set colsep '|' #输出列之间的分隔符。
set heading off #输出域标题,缺省为on
set pagesize #输出每页行数,缺省为24,为了避免分页,可设定为0。
set linesize 150 #设置每行显示字符数,缺省为80,最大值为999
set numwidth #输出NUMBER类型域长度,缺省为10
set termout off #常用SPOOL XXX时,即关闭报表在屏幕上的显示以节省时间,缺省值为ON
set serveroutput on #设置允许显示输出类似DBMS_OUTPUT
set verify of #可以关闭和打开提示确认信息old 1和new 1的显示.
show all #显示当前所有参数情况
3、保存SQL执行结果
方法一:利用spool命令
sqlplus -S / as sysdba << EOF
set echo off;
set pagesize ;
set linesize ;
spool temp.txt;
select username from dba_users;
spool off;
exit
EOF
方法二:利用重定向
echo "set echo off;" >> ${operate_sql}
echo "set pagesize 0;" >> ${operate_sql}
echo "set linesize 150;" >> ${operate_sql}
echo "select username from dba_users;" >> ${operate_sql}
echo "exit" >> ${operate_sql}
sqlplus -S / as sysdba < ${operate_sql} > ${operate_sql_result}
方法三:利用重定向
sqlplus -S / as sysdba > temp.txt << EOF
set echo off;
set pagesize ;
set linesize ;
select username from dba_users;
exit
EOF
4、常用SQL
select username from dba_users; #dba用户登录 #获取用户记录数一
select 'analyze table'||t.TABLE_NAME||'compute statistics;' from user_tables t; #先刷新
select table_name,num_rows from user_tables;
#获取用户记录数二
select count(*) from table_name;
5、判断oracle实例启动状态
ps -ef | grep ora_pmon | grep -v grep &>/dev/null #通过pmon进程判断
[ $? -eq ] && return || return #返回0表示正常,1表示关闭
6、判断Oracle监听状态
ps -ef | grep tnslsnr | grep -v grep &>/dev/null #通过tnslsnr进程判断
[ $? -eq ] && return || return #返回0表示正常,1表示关闭