2014-09-20 46 views
-1

剛剛發現SQLPLUS會解析sql腳本的第一行作爲連接字符串,如果我在終端中調用sqlplus時不包括憑證,詳細信息如下:
我有一個SQL腳本名爲runme.sql:sqlplus:sql腳本的第一行中的用戶名/密碼

scott/[email protected]//localhost:1522/orcl 

select * from dual; 

exit; 

如果我調用的sqlplus爲sqlplus @runme.sql,SQLPLUS可以解析第一行並連接到數據庫並運行SQL。如果有的話,任何人都可以指出我的文檔嗎?支持這種語法的優點是什麼?

+0

操作系統的詳細信息很重要。因爲它取決於你如何調用腳本。 – 2014-09-20 15:27:59

回答

1

The documentation通常是一個很好的開始。如果您在命令行上提供用戶名/密碼,請注意warning;提示時至少提供密碼更安全,特別是在Unix類型的環境中,意味着憑據不會出​​現在ps命令的輸出中。

將密碼或用戶名和密碼都放入腳本會自動執行該操作,但當然必須確保腳本不會被任何不知道憑據的人查看。

正如LalitKumarB在評論中指出的那樣,在任何地方硬編碼密碼都是安全風險。如果您以交互方式運行腳本,則允許每次提示都會有輕微的不便。 (與證書被濫用可能造成的損害相比,這並不是非常不方便,以及隨後恢復和/或找到新工作帶來的不便)。如果腳本沒有以交互方式運行,那麼使用調度程序而不是cron。您也可以使用Oracle Wallets以提高安全性,但沒有太多不便。

專爲它解析第一行查詢,the documentation說:

如果不指定登錄但不指定啓動,在SQL * Plus假定腳本的第一行包含一個有效的登錄。

在這種情況下,'start'與在命令行上使用@來提供腳本名稱相同。

+0

只是一個想法,我永遠不會在連接證書中硬編碼密碼;-)而不要忘記SQL注入(儘管間接)可能會毀了我們的生活。 – 2014-09-20 16:09:52

+0

我喜歡你的解釋Alex,從我身邊投票。如果可能,作爲一名資深人士,請您提供關於我的上述建議的更新(只有在您獲得免費時,儘管是週末)。 – 2014-09-20 16:12:53