Я пытаюсь записать содержимое файла listener.ora в другой файл без жесткого кодирования в каталоге.
Первоначально это работало, когда я указывал каталог как:
'C:\app\OracleDB11g\product\11.2.0\dbhome_1\NETWORK\ADMIN'
Но я не хочу жестко кодировать, потому что этот скрипт будет использоваться на разных машинах / БД.
CREATE OR REPLACE DIRECTORY LISTENERDIR AS '%ORACLE_HOME%/NETWORK/ADMIN/';
declare
f utl_file.file_type;
fOUT utl_file.file_type;
s varchar2(200);
begin
f := utl_file.fopen('LISTENERDIR','listener.ora','R');
loop
utl_file.get_line(f,s);
fOUT := utl_file.fopen('OUTPUT','oraDBoutput.txt','A');
utl_file.put_line(fOUT,s);
utl_file.fclose(fOUT);
end loop;
exception
when NO_DATA_FOUND then
utl_file.fclose(f);
end;
/
drop directory LISTENERDIR;
Я пытался использовать другие косые черты, маленькие заглавные буквы, различные варианты, например \NETWORK\ADMIN
, и даже назначать переменную из dbms_system.get_env()
, но безрезультатно.