Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_FILE вопрос / 25 сообщений из 34, страница 1 из 2
28.01.2019, 19:08
    #39766131
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
Подскажите, запуталась,
UTL_FILE.fopen может создавать файлы только на хосте, на котором развернута БД?
Есть ошибка ORA-29283: invalid file operation
...
Рейтинг: 0 / 0
28.01.2019, 20:46
    #39766161
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70896]
UTL_FILE provides file access both on the client side and on the server side.
When run on the server , UTL_FILE provides access to all operating system files that are accessible from the server .
On the client side, as in the case for Forms applications , UTL_FILE provides access to operating system files that are accessible from the client.
...
Рейтинг: 0 / 0
29.01.2019, 06:20
    #39766261
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
Есть еще какие-то нюансы, кроме запуска Oracle под учеткой, имеющей доступ к сетевому диску.

Возможно, сетевой диск надо как-то монтировать в сеансе запуска службы. Т.к., в отличие от Unix, под виндой сетевой диск видится только в сеансе пользователя, его подключившего.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Connected to Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 
Connected as system@//localhost/TEST

SQL> 
SQL> create directory TEST as 'Z:\test';

Directory created
SQL> declare
  2    f utl_file.file_type;
  3  begin
  4    f := utl_file.fopen('TEST', 'test1.txt', 'w');
  5    utl_file.fclose(f);
  6  end;
  7  /

declare
  f utl_file.file_type;
begin
  f := utl_file.fopen('TEST', 'test1.txt', 'w');
  utl_file.fclose(f);
end;

ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 41
ORA-06512: at "SYS.UTL_FILE", line 478
ORA-06512: at line 4

SQL> 

...
Рейтинг: 0 / 0
29.01.2019, 13:24
    #39766500
DarkClaw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
dmdmdm,

GRANT READ, WRITE ON DIRECTORY пробовали?
...
Рейтинг: 0 / 0
29.01.2019, 13:27
    #39766506
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
DarkClawGRANT READ, WRITE ON DIRECTORY пробовали?Метод тыка хорош только для проверки тока в розетке. Хватает одного раза, чтобы больше никогда не тыкать.
...
Рейтинг: 0 / 0
29.01.2019, 13:52
    #39766524
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
andrey_anonymous,
спасибо!

dmdmdm,
у меня Unix.

DarkClaw, -2-
директории в ОС созданы точно, права на них ставили и 770, и 777. Ошибка та же.
Первичные группы у владельца директорий в OC и пользователя oracle - одинаковые.

В БД директории созданы пользователем-схемой через CREATE OR REPLACE DIRECTORY. Этот же пользователь на БД запускает скрипт на открытие и запись файла в директорию. Дополнительные гранты на объект-директорию в БД не создавала. Может нужно? Но вроде тот, кто создал у меня директории, тот и запускает скрипт.
Упорно лезет ошибка ORA-29283: invalid file operation. На ОС ставили права 777. Не знаю, куда дальше копать.
...
Рейтинг: 0 / 0
29.01.2019, 14:59
    #39766574
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
Сделайте test case, он поможет вам и советующим.

[root@localhost init.d]# mkdir /tmp/test
[root@localhost init.d]# chmod 777 /tmp/test

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as system@//192.168.1.80/XE

SQL> alter session set "_ORACLE_SCRIPT"=true;

Session altered

SQL> create user u IDENTIFIED BY "1" DEFAULT TABLESPACE USERS QUOTA 100M ON USERS;

User created

SQL> grant connect to u;

Grant succeeded

SQL> grant create any directory to u;

Grant succeeded

SQL> conn u/1;
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as u@//192.168.1.80/XE

SQL> create directory TEST as '/tmp/test';

Directory created


SQL> 
SQL> declare
  2    f utl_file.file_type;
  3  begin
  4    f := utl_file.fopen('TEST', 'test1.txt', 'w');
  5    utl_file.fclose(f);
  6  end;
  7  /

PL/SQL procedure successfully completed

SQL> 



[root@localhost init.d]# ls -lh /tmp/test
total 0
-rw-r-----. 1 oracle oinstall 0 Jan 29 06:55 test1.txt
...
Рейтинг: 0 / 0
29.01.2019, 15:06
    #39766580
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
Кто знает, как посмотреть трассировку вызова open на unix, типа strace. Но он у меня не работает
Код: plsql
1.
2.
strace -f -e open -p 1234
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted


Каким еще способ отслеить, что передается на вызов при UTL_FILE.fopen?
...
Рейтинг: 0 / 0
29.01.2019, 15:11
    #39766586
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
dmdmdm,
делали такие тесты, файлы создаются
...
Рейтинг: 0 / 0
29.01.2019, 15:37
    #39766613
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
В этом и суть test case. Не одним словом "делали", а конкретно, что делали.

Раз в ОС не работает, надо, чтоб заработало. Потом будете в СУБД пробовать.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
[root@localhost etc]# mount -t cifs //192.168.1.3/R /mnt/test -o username=user1,password=******,rw
[root@localhost etc]# su - oracle
Last login: Tue Jan 29 07:31:37 EST 2019 on pts/0
[oracle@localhost ~]$ touch /mnt/test/test1.txt
touch: cannot touch ‘/mnt/test/test1.txt’: Permission denied
[oracle@localhost ~]$ logout
[root@localhost etc]# touch /mnt/test/test1.txt
[root@localhost etc]# ls -lh /mnt/test/test*
-rwxr-xr-x 1 root root 0 Jan 29 07:35 /mnt/test/test1.txt



Копать куда-то туда.
...
Рейтинг: 0 / 0
29.01.2019, 16:02
    #39766634
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5dmdmdm,
делали такие тесты, файлы создаются

А под каким OC пользователем? UTL_FILE выполняется из-под OC юзера oracle и посему 777 на конечную директорию может и не хватить - oracle нужен read на всю цепочку. Ну и не NAS ли часом? Если да, то он должен быть mounted с определенными параметрами.

SY.
...
Рейтинг: 0 / 0
29.01.2019, 17:03
    #39766687
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
SY,

под oracle на клиенте. Права выдавались, как chmod -R, так что на все подкаталоги.

тест
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[oracle@test ~]$ cd /home/user/output/files
[oracle@test files]$ echo "test" >  test_20190129.txt
[oracle@test files]$ ls -all | grep test_20190129.txt
-rw------- 1 oracle  oinstall    5 Jan 29 test_20190129.txt
[oracle@test files]$



[user@test ~]$ ls -all output
total 20
drwxrwxrwx  5 user oinstall 4096 Jan 16 14:14 .
drwx------ 20 user      501 4096 Jan 22 10:57 ..
drwxrwxrwx  2 user oinstall 4096 Jan 16 14:14 files


...
Рейтинг: 0 / 0
29.01.2019, 17:08
    #39766691
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5под oracle на клиенте.
utl_file Вы тоже НА КЛИЕНТЕ гоняете или все-таки на сервере?
...
Рейтинг: 0 / 0
29.01.2019, 17:09
    #39766692
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5,

И диск не NAS?

SY.
...
Рейтинг: 0 / 0
29.01.2019, 18:09
    #39766727
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
andrey_anonymous,
на клиенте

SY,
не NAS

dmdmdm,
написал про монтирование. Не поняла этот момент. Что нужно монтировать? Директории с клиента на сервер?

Ещё думаю, что может на сервере процессы, листенер не под oracle запущены... мало ли, проверю.
...
Рейтинг: 0 / 0
29.01.2019, 20:49
    #39766766
oragraf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5на клиенте utl_file - серверный пакет и работает на файловой системе, где установлена субд(Если не формсы, конечно)
...
Рейтинг: 0 / 0
30.01.2019, 08:37
    #39766839
MirnyiAtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5,
И проверьте еще что у директории в оракле есть права на запись
...
Рейтинг: 0 / 0
30.01.2019, 10:25
    #39766884
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
oragraf,

Так вот и вопрос, то есть физически директории должны быть созданы на том же сервере, где и БД развёрнута? Или на сервер с БД можно монтировать директории с клиентского сервера? Я этот момент не понимаю. Сам скрипт запускается через Sqlplus.

MirnyiAtom права есть.
...
Рейтинг: 0 / 0
30.01.2019, 11:17
    #39766916
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5Или на сервер с БД можно монтировать директории с клиентского сервера?
Технически это, конечно, возможно, но по сути полная ерунда.
Вам нужен файл на клиенте?
Так и формируйте его на клиенте и оставьте UTL_FILE в покое.
...
Рейтинг: 0 / 0
30.01.2019, 11:53
    #39766940
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
andrey_anonymous,
нужен на клиенте. Ткните подробнее, как без UTL_FILE, записать файлы? Файлы - это результат работы разных процедур.
...
Рейтинг: 0 / 0
30.01.2019, 12:02
    #39766946
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5как без UTL_FILE, записать файлыecho 123 > 123.txt
...
Рейтинг: 0 / 0
30.01.2019, 12:08
    #39766951
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
Для теста запускаю скрипт через sqlplus.
В реальной работе всё запускается через Web и дергает процедуры PL/SQL.

код
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
SET SERVEROUTPUT ON
DECLARE
  v_Filename         VARCHAR2(255);
  v_Location          VARCHAR2(32767) := '/home/user/outfiles';
  v_Dir_Name        all_directories.Directory_Name%TYPE;  
  g_File                 UTL_FILE.FILE_TYPE;   
BEGIN
  v_Filename := 'test_' || To_Char(SYSDATE, 'yyyymmdd_hh24miss');
  DBMS_OUTPUT.PUT_LINE( 'Step 1' );  
  
  BEGIN 
	SELECT DIRECTORY_NAME INTO v_Dir_Name 
	  FROM ALL_DIRECTORIES 
	 WHERE directory_path = v_Location AND rownum = 1;  	 
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE( 'Error! Can''t find directory ' || v_Location || ' in ALL_DIRECTORIES table!');	
      RAISE;
    WHEN OTHERS THEN
      RAISE;	 
  END;
	
  DBMS_OUTPUT.PUT_LINE( 'v_Dir_Name: '|| v_Dir_Name ); 

  g_File := UTL_FILE.FOPEN( location      => v_Dir_Name
                          , filename      => v_Filename
                          , open_mode     => 'w'
                          , max_linesize  => 32767
                          );
  DBMS_OUTPUT.PUT_LINE( 'Step 2' );								  
  UTL_FILE.PUT_LINE(g_File, 'test');								  
  DBMS_OUTPUT.PUT_LINE( 'Step 3' );  			
  UTL_FILE.fclose(g_File);  
  DBMS_OUTPUT.PUT_LINE( 'Step 4' );   
EXCEPTION   
    WHEN OTHERS THEN
      DBMS_OUTPUT.PUT_LINE( 'Error! '|| SQLERRM );  
END;
/
 
Step 1
v_Dir_Name: TEST_DIR
Error! ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line
536
ORA-29283: invalid file operation
PL/SQL procedure successfully completed.


...
Рейтинг: 0 / 0
30.01.2019, 12:10
    #39766953
LVV5
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
-2-,

мне из PL/SQL запускать shell команды? Это ещё хуже.
...
Рейтинг: 0 / 0
30.01.2019, 12:15
    #39766958
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5Для теста запускаю скрипт через sqlplus.
В реальной работе всё запускается через Web и дергает процедуры PL/SQL.
Представленный код смело выбрасывайте полностью - выбранный Вами инструмент не походит для решения задачи в указанном окружении.
Попробуйте сформулировать исходную задачу, а не ту, которую Вы вынесли на форум.
Вам помогут с подбором инструмента.
...
Рейтинг: 0 / 0
30.01.2019, 12:15
    #39766959
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UTL_FILE вопрос
LVV5из PL/SQL запускать shell команды?из шелла
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_FILE вопрос / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]