作为数据库管理员经常要查看alert log文件,每次查找都要打入很长的路径,才能访问alert log文件,我以前的做法是建立一个别名,写死整个路径。
例子:
alias vialert='view /u01/app/oracle/diag/rdbms/test/test/trace/alert_test.log'
这样每次输入vialert就可以访问alert log文件。
今天看一个网站http://halisway.blogspot.com/2006/11/oracle-alert-log-shell-alias.html,作者思路很简单,通过shell和sqlplus取出background_dump_dest参数在结合环境变量SID定位alert log文件。仅仅需要注意的是ORACLE_HOME, PATH and ORACLE_SID参数要设置正确!
alias vialert='view + $(printf "set heading off pages 0 feedback off\n select value from v\$parameter where name='\''background_dump_dest'\'';\n"|sqlplus -S "/ as sysdba")/alert_${ORACLE_SID}.log'
--注: 我修改一下,vi换成了view。仅仅查看alert log文件。
我的11G数据库建立在asm之上,如果要访问asm alert log文件:
alias viasmalert='export ORACLE_SID=+ASM;export ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid;view + $(printf "set heading off pages 0 feedback off\n select value from v\$parameter where name='\''background_dump_dest'\'';\n"|sqlplus -S "/ as sysdba")/alert_${ORACLE_SID}.log;export ORACLE_SID=test;export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1'
有点长,修改为function更好一些。如下:
vimasmalert() {
export ORACLE_SID=+ASM
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid
view $(printf "set heading off pages 0 feedback off\n select value from v\$parameter where name='background_dump_dest';\n"|sqlplus -S "/ as sysdba")/alert_${ORACLE_SID}.log
export ORACLE_SID=test
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
}