shell腳本sqlplus
Ⅰ 怎樣能在shell腳本中實現不出現用戶密碼明文的情況下連接sqlplus
怎樣能在shell腳本中實現不出現用戶密碼明文的情況下連接sqlplus
1.SQl語句中沒有循環的語句。
正確。但pl/sql有。
2.這是shell 和 sqlplus 交互的問題。有多種實現。
途徑:
1)可以在shell中處理sql,
2)也可以在plsql中處理調用shell.
1)只需寫shell腳本即可。
2)需要配extproc,雖然有效,比較麻煩。不建議。
3.如果讓sqlplus 在shell循環,要重復連接很多次,不建議。建議先將所有學號的學生先一次性導出,再每條單獨輸出處理。
4. 假設col(COLNO,CNAME) 為 學生(學號,學生名)
#先用 spool_out 01 50 先生成output.txt
Ⅱ linux下shell腳本中sqlplus調用shell變數的問題
1、登陸用戶
su - oracle -c sqlplus crm_uat/crm_uat << EOF
....
EOF
或者在oracle用戶下運行
sqlplus crm_uat/crm_uat << EOF
....
EOF
2、用sysdate代替${DATE}試試。
3、你的日期包含空格,變數應該加引號
Ⅲ 怎樣用sqlplus調用shell腳本
參考如下:
#Oracle Connection
export ORACLECONNECTSTRING='dps/password@frld world'
sqlplus -silent $ORACLECONNECTSTRING @$SQLDIR/ipb_dps_get_status.sql
ipb_dps_get_status.sql 是放在SQLDIR文件夾下的.sqlfile,把sql語句寫在裡面就可以了
或者後面還可以加上log等。
Ⅳ 怎麼在shell腳本裡面獲得sqlplus執行的結果
請參考下面這個方法:
備註:getDbUserByTableName$TableName是獲取表在哪個資料庫的。你可以直接把$DbUSER換成tns串或者別名即可。
#sqlplus連接資料庫的方法
#需要傳入兩個參數,第一個是表名,一個是需要執行的sql語句,一條語句作為一行
sqlBossDb(){
TableName=$1
SqlStr=$2
getDbUserByTableName$TableName
DbUSER=`catdbuser.temp`
Note_Log"$DbUSER連接資料庫,執行語句$SqlStr"
evalecho${$DbUSER}>aaa.temp#查詢出來是sqlDbUser.cfg中DBUSERNAME項,需要換成DBUSERSTR項
DbUSER=`cataaa.temp`
#Note_Log"開始$DbUSER"
sqlplus$DbUSER<<!
setlinesize1000
$SqlStr
commit;
quit
!
e
Ⅳ 關於shell 腳本中調用sqlplus 的問題
for tbl in `cat A.txt`
do
echo " spool test.log; @B/$tbl.sql; commit; spool off;" | sqlplus user/password@DB
done
Ⅵ 如何在shell中調SQLPLUS 執行SQL語句
sqlplus命令本身可以卸載shell腳本中,只要環境變數配置了相關的命令路徑就可以。
然後編寫sql腳本,然後利用sqlplus 用戶名/密碼@XXX @sql命令文件.sql就可以了。
如果害怕兩個@有沖突,那麼就設置一個參數=用戶名/密碼@XXX
然後調用參數,就可以了。
如果還有其他需求,那麼就利用sqlplus的set參數,來達到某些目的。
sqlplus的參數,比如-s等,也會有一些用處,這個要自己把握了。
Ⅶ shell 腳本獲取不到sqlplus執行結果
你本來是想將sqlplus的返回結果賦值給ASM變數,但是你用到了sqlplus /nolog << EOF > /home/oracle/ASM.log,將執行結果重定向到/home/oracle/ASM.log,這時候ASM裡面就是空的了。
Ⅷ 如何在shell腳本中嵌入Oracle資料庫操作
在shell裡面執行sqlplus,大致如下
sqlplus username/password@sid << EOF >> xxxx.log
select field_name from table_name where ....;
exit;
EOF
然後從輸出log裡面分析出你要的值