Требуется вывести данные, расположенные во внешнем файле операционной системы, используя при этом только команду SELECT.
Рассмотрим пример, выводящий содержимое файла «alert.log».
Для начала, создадим директивный объект, указывающий в каталог, где расположен этот файл:
SQL> CREATE DIRECTORY bdump AS '/u01/app/oracle/admin/orcl/bdump'; Директория создана
Далее, создадим внешнюю таблицу, где в качестве источника данных укажем файл alert.log:
SQL> CREATE TABLE alert_log(text varchar2(1000)) 2> ORGANIZATION EXTERNAL 3> ( 4> TYPE ORACLE_LOADER 5> DEFAULT DIRECTORY BDUMP 6> ACCESS PARAMETERS 7> ( 8> RECORDS DELIMITED BY NEWLINE 9> ) 10> LOCATION('alert_orcl.log') 11> ) 12> REJECT LIMIT UNLIMITED; Таблица создана
Теперь данные из файла можно выводить с помощью команды SELECT:
SQL> SELECT SUBSTR(text, 1, 80) text 2> FROM alert_log 3> WHERE text LIKE '%ORA-%'; TEXT -------------------------------------------------------------------------------- ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 87.95% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 97.72% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 99.34% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 87.95% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 97.72% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 98.36% use ORA-19815: ПРЕДУПРЕЖДЕНИЕ. db_recovery_file_dest_size из 524288000 байт 100.00% ORA-19815: WARNING: db_recovery_file_dest_size of 524288000 bytes is 100.00% use ORA-19815: WARNING: db_recovery_file_dest_size of 2147483648 bytes is 85.02% use ORA-19815: ПРЕДУПРЕЖДЕНИЕ. db_recovery_file_dest_size из 1073741824 байт 100.00% ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 100.00% us ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 100.00% us ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 87.47% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 97.23% use ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 100.00% us ORA-19815: ПРЕДУПРЕЖДЕНИЕ. db_recovery_file_dest_size из 1073741824 байт 100.00% ORA-19815: WARNING: db_recovery_file_dest_size of 1073741824 bytes is 100.00% us