2014-10-19 177 views
0

說,我有一個Oracle目錄並授予用戶「SCOTT」授予正確的權限UTL_FILE方法

CREATE OR REPLACE DIRECTORY dataFolder AS '/data/'; 
GRANT READ, WRITE ON DIRECTORY dataFolder TO scott;  

然後,我有一個shell腳本說ExtractData.sh它使用UTL_FILE從數據庫BLOB數據轉換成存儲在上述目錄dataFolder中的物理文件。

但是,由於服務器中的安全問題,此/data/目錄僅授予770權限,因此導致我的腳本無法將文件寫入目錄。

但是,當我將權限更改爲777時,腳本成功寫入文件。

如何解決這個不給777權限?

+0

unix和linux是兩回事;不要混淆他們;特別是當你真正問到的是一個_shell腳本_時。 – 2014-10-19 06:58:57

+0

爲什麼這是一個shell腳本?所有的功能似乎都是PL/SQL,所以大概你只是調用一個存儲過程。爲什麼不把這個調用加入數據庫呢? – APC 2014-10-19 07:46:55

+0

是的,腳本調用PL/SQL和做一些其他的東西 – bigbang 2014-10-19 14:49:28

回答

2

你沒有提到目錄的所有者。

使用oracle擁有的目錄,或者在osoper或dba組中使用,您不需要777權限。顯然,該目錄由root或其他用戶擁有,所以所有者和組位不會幫助你。

您可以使用chown來更改所有權。

chown oracle:osoper /data 

只要確保您知道其他程序訪問/數據,如果您更改所有權,請確保相應地調整priv。

+0

我可以添加此用戶:oracle:osper到文件夾組所有者,而不是? – bigbang 2014-10-19 14:44:26

+0

例如,將oracle:osper添加到組中,並說可以訪問該文件夾的'admins'。這個命令是正確的嗎? usermod -a -G管理員oracle:osoper – bigbang 2014-10-19 14:56:32