在ora9.2.0.1 时我就一直认为UTL_FILE_DIR 这个参数即将离我们远去,但到11g 仍然顽强的活着且在EBS 中有发扬光大的迹象。
但我还是认为这个参数的左右已经很弱,修改必须重启DB,对SLA为 7*24 的DB 来说显得不能适用。
我们先看这个UTL_FILE_DIR 的作用:
UTL_FILE_DIR 参数的作用是让Oracle通过Package 来对OS上面的文件进行操作(如创建,修改等等)
UTL_FILE_DIR 参数如何设定:
initSID.ora 中 utl_file_dir='/disk/exp_dir'
(意思是说,在/disk/exp_dir 下Oracle 可以对在这个目录下进行文件的操作)
在8.1 包括以前版本只能定义一个值
utl_file_dir='/disk/exp_dir'
如果你定义了
utl_file_dir='/disk/exp_dir' utl_file_dir='/u01/exp_dir'
SQL>select name,value from v$parameter where name like 'utl’;
NAME VALUE
--------------- -------------------------------------
utl_file_dir /u01/exp_dir ----只有最后一次赋值。
在9i 以后参数有了该进:
initSID.ora
utl_file_dir='/disk/exp_dir'
utl_file_dir='/u01/exp_dir'
SQL> show parameter utl_file_dir
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
utl_file_dir string /u01/exp_dir, /disk/exp_dir
(很牛X 的定义方式,哎不知道当时设计的人怎么想的,完全不符合一般编程变量定义)
不过也可以使用
utl_file_dir='/disk/exp_dir','/u01/exp_dir'
utl_file_dir 也可以使用通配符来定义
utl_file_dir=* --意思是说在Server 上你可以在任何路径读写数据,
切忌使用这个变量,不然别说你的数据库,就你的Oracle server 也很脆弱。
但我认为这个utl_file_dir 这个参数最终将会被 DIRECTORY 所代替,而且DIRECTORY 权限更好控制。
可以使用下面创建:
create or replace directory UTF_DIR as '/disk/exp_dir';
grant read,write on directory UTF_DIR to XX schema.
有权限的用户都能使用这个utf_dir 没有权限的用户不能访问,比 utl_file_dir 好很多。而且新增和修改值都不用重启数据库。
所以坚持认为这个utl_file_dir 这个参数将会被废弃。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/34596/viewspace-606965/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/34596/viewspace-606965/