在UNIX下我常常要執行Oracle的命令,如sqlplus/sqlldr, 這些命令都需要登錄到數據才行,這時我們就要用到連接的user和password,如果我們直接用sqlplus來連的話,user和passoword都可以用
ps -ef | grep sqlplus
看到,出於安全的考慮,這個是很不好的,下面的方法可以很好地解決sqlplus 和sqlldr 這兩個命令登錄的問題。
1. SQLPLUS
sqlplus /nolog > $LOG_FILE << ENDSQL
connect $DB_USER/$DB_PASS@$TNSNAME;
@sql/xxx.sql $parameter_1 $parameter_2;
ENDSQL
if [ `grep "ERROR" $LOG_FILE | wc -l` -ne 0 ]
then
# Error Handling
endif
2. SQLLDR
sql loader的寫有一點特別:
set APP_USER=something
set APP_PASS=somepass
set APP_SID=sid
#put the connection parameter at the end.
sqlldr control=contril.ctl data=data.dat << END_OF_SQLLDR
$APP_USER/$APP_PASS@APP_SID
END_OF_SQLLDR