ORA-29283 안녕하세요 세계
DECLARE
v_file UTL_FILE.file_type;
BEGIN
v_file := UTL_FILE.fopen('DIR_SHORTNAME', 'FILENAME.txt', 'w');
END;
/
Tim Hall's Oracle PL/SQL "CSV" package을 .
SQL에서 CSV를 작성하는 익명 PL/SQL
케이티 ・ 10월 8일 ・ 3분 읽기
#csv
#sql
#database
안타깝게도
.generate()
프로시저가 실행될 때 오류를 반환했습니다.ORA-29283: invalid file operation
내 PL/SQL 코드의 본문에서 Tim이 호출한
.generate()
절차를 실행하면 오류가 발생했습니다.generate('my_oracle_directory_name', 'my_filename.csv', p_query => 'SELECT * FROM sample_table_name');
동료들과 나는 스택 추적에서 다음과 같은 Tim의 코드 부분에 멈춘 것을 볼 수 있었습니다.
IF g_out_type = 'F' THEN
l_file := UTL_FILE.fopen(p_dir, p_file, 'w', 32767);
END IF;
"간단한"문제를 제거하기 위해 Ask Tom forums에서 제안한 SQL 쿼리를 실행해 보았습니다.
먼저 "Oracle 디렉토리"
my_oracle_directory_name
가 존재하는지 확인했습니다.SELECT *
FROM all_directories
WHERE directory_name = 'my_oracle_directory_name';
다음으로 그들은 내 코드가 실행되고 있는 사용자가 "Oracle 디렉토리"로 표시되는 운영 체제 디렉토리에 대한 쓰기 권한이 있는지 확인했습니다
my_oracle_directory_name
.SELECT *
FROM all_tab_privs
WHERE table_name = 'my_oracle_directory_name'
AND grantee = user
AND grantee = 'the_executing_oracle_username'
AND privilege = 'WRITE';
그것들은 문제가 아니었으므로 Ask에서 제안한 대로 운영 체제의 폴더에 문제가 발생했는지 또는 운영 체제의 "Oracle 사용자"가 해당 OS 폴더에 데이터를 쓸 수 있는 권한에 문제가 발생했는지 확인하는 단계로 넘어갈 때였습니다. 톰.
우리는 DBA/sysamin으로 이에 대해 문의해야 했기 때문에
utl_file.fopen()
가 표시된 디렉토리에 대해 "쓰기"모드에서 작동하는지 테스트하기 위해 "hello world"역할을 할 수 있는 5줄 PL/SQL 스크립트를 작성했습니다. my_oracle_directory_name
여부:DECLARE
v_file UTL_FILE.file_type;
BEGIN
v_file := UTL_FILE.fopen('my_oracle_directory_name', 'my_filename.csv', 'w');
END;
/
짧은 스크립트를 제공하는 것이 도움이 되었습니다. 왜냐하면 시스템 관리자가 최근 일부 파일 시스템 "개선 사항"의 사상자로 판명된 것을 걱정 없이 디버깅하고 수정하면서 "작동하지 않음"에서 "작동 중"으로 스크립트가 변경되는 것을 시스템 관리자 및 DBA가 신속하게 볼 수 있었기 때문입니다. Tim Hall 코드의 내부 작동에 대해.
Reference
이 문제에 관하여(ORA-29283 안녕하세요 세계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/katiekodes/ora-29283-hello-world-4gfc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)