本文主要描述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 0 #输出每页行数,缺省为24,为了避免分页,可设定为0。 set linesize 150 #设置每行显示字符数,缺省为80,最大值为999 set numwidth 12 #输出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 0; set linesize 150; 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 0; set linesize 150; 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 0 ] && return 0 || return 1 #返回0表示正常,1表示关闭
6、判断Oracle监听状态
ps -ef | grep tnslsnr | grep -v grep &>/dev/null #通过tnslsnr进程判断 [ $? -eq 0 ] && return 0 || return 1 #返回0表示正常,1表示关闭