Ошибка броска внешней таблицы (иногда) - PullRequest
0 голосов
/ 14 января 2019

Я создал внешнюю таблицу в Oracle 11g.

Выдает ошибку файла, не найденного иногда. Файл присутствует в каталоге внешних таблиц oracle со всеми разрешениями, предоставленными папке / файлу.

Странно то, что ошибка появляется не каждый раз . Выбор на внешней таблице работает большую часть времени. Но иногда эта ошибка выскакивает. Это зависит от настроения Oracle. : P

Уже сделано:

  • Я предоставил все гранты для справочника.
  • Я предоставил chmod 777 (rwx) доступ к файлам.
  • Я архивирую файлы метаданных после каждого запуска (* .log, * .dsc и * .bad).

Ошибка:

ORA-29913: ошибка при выполнении вызова ODCIEXTTABLEOPEN

ORA-29400: ошибка картриджа данных

KUP-04040: файл DIM_OWNING_CENTER_FEED.dat в XFB_EXT_TAB_DATA не найден

Настольный скрипт:

CREATE TABLE SCHEMA_NAME.DIM_OWNING_CENTER_EXT
  (
    S_OWNING_CENTER_ID VARCHAR2 (50),
    OWNING_CENTER      VARCHAR2 (52),
    ED_START_DATE      DATE
  )
  ORGANIZATION EXTERNAL
  (
    TYPE ORACLE_LOADER 
    DEFAULT DIRECTORY XFB_EXT_TAB_DATA 
    ACCESS PARAMETERS (
      RECORDS DELIMITED BY NEWLINE
      SKIP 2
      LOAD WHEN (
        S_OWNING_CENTER_ID != 'FILETRAILER'
      )
      FIELDS TERMINATED BY '|^'
      MISSING FIELD VALUES ARE NULL (
        S_OWNING_CENTER_ID CHAR (50), 
        OWNING_CENTER CHAR (52), 
        ED_START_DATE DATE 'DD-MON-YYYY HH24:MI:SS'
      )
    ) 
    LOCATION ('DIM_OWNING_CENTER_FEED.dat')
  )
  PARALLEL 8 REJECT LIMIT UNLIMITED;

1 Ответ

0 голосов
/ 16 января 2019

Это зависит от настроения Оракула. ​​

Нет, это зависит от того, к какому экземпляру вы подключаетесь и существует ли файл DIM_OWNING_CENTER_FEED.dat на узле, на котором запущен экземпляр. Если вы создали его только на одном из узлов, то иногда это будет работать, а иногда - ошибка. Вы можете проверить, на каком экземпляре вы работаете, когда он работает, а когда нет, запросив v$instance.

Если по какой-то причине вы хотите хранить файл (и иметь дело с журналами и т. Д.) Только на одном узле, вам придется изменить свой сценарий для подключения к этому конкретному экземпляру. Но затем, если этот экземпляр по какой-то причине не работает - исправление или что-то еще - он все равно не сможет. Это, конечно, точка RAC.

Альтернатива состоит в том, чтобы оба узла представляли один и тот же физический файл, например, путем NFS-монтирования одной и той же фактической файловой системы / пути, куда указывает каталог директории XFB_EXT_TAB_DATA, на обоих узлах. Или вы можете использовать сценарий препроцессора для копирования файла из некоторого общего расположения во время выполнения, но у этого есть свои сложности.

...