2014-10-19 174 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