Печать
Категория: Вопросы и ответы Oracle
Просмотров: 6154

Требуется вывести данные, расположенные во внешнем файле операционной системы, используя при этом только команду 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