下面的代码在oracle 10g数据库中完美运行
DECLARE
g_file_handle UTL_FILE.FILE_TYPE;
g_dir varchar2(100);
BEGIN
g_dir := Scamp_Utils.getutlfiledir;
DBMS_OUTPUT.PUT_LINE (g_dir);
g_file_handle := UTL_FILE.FOPEN (g_dir, 'qwe.txt', 'W', 32767);
UTL_FILE.PUT_LINE (g_file_handle, 'BEGINDATA');
UTL_FILE.FCLOSE (g_file_handle);
COMMIT;
END;
/
此处Scamp_Utils.getutlfiledir
是一个返回utl_file_dir
中定义的路径的函数。
但是同样的代码在oracle 12c database
中不起作用。我收到了错误:
ORA-29280:目录路径无效 ORA-06512:在" SYS.UTL_FILE",第41行 ORA-06512:at" SYS.UTL_FILE",第478行 ORA-06512:第7行
我已经向操作系统级别的所有人提供了rwx
权限。我还是得到了这个错误。我可以使用oracle逻辑目录,但我不想更改代码。我该怎么办?
答案 0 :(得分:0)
Oracle有两个选项可以为utl_file
声明一个目录。
1. Change `utl_file_dir='/appl/flstadm/utl_files/wlsbb01'` in INIT.ORA file and restart DB. This solution is not recommended and deprecated.
2. Create directory object in DB.
CREATE OR REPLACE DIRECTORY my_dir AS '/appl/flstadm/utl_files/wlsbb01';
GRANT read, write ON DIRECTORY my_dir TO your_user;
g_file_handle := UTL_FILE.FOPEN ('my_dir', 'qwe.txt', 'W', 32767);
您是否已将路径添加到init.ora?