Я хотел создать внешнюю таблицу, но не имел разрешения CREATE ANY DIRECTORY
(и не мог предоставить ее). Справедливо, я попросил АБД выполнить следующие действия:Внешняя таблица Oracle с каталогом dba
CREATE OR REPLACE DIRECTORY ext_data_files AS '/data/ext_data_files';
GRANT ALL ON DIRECTORY ext_data_files TO MYAPPUSER;
Они сделали, и конечный объект имеет следующий сценарий:
CREATE OR REPLACE DIRECTORY
EXT_DATA_FILES AS
'/data/ext_data_files';
GRANT READ, WRITE ON DIRECTORY SYS.EXT_DATA_FILES TO MYAPPUSER;
(я получил, что с просьбой к desc
с жабой)
я тогда надеялся использовать этот каталог, чтобы создать свою внешнюю таблицу с помощью сценария следующим образом:
CREATE TABLE MYAPPUSER.MY_EXT_TABLE
(
ID VARCHAR2(100 BYTE),
LOGIN VARCHAR2(100 BYTE),
CODE VARCHAR2(100 BYTE),
CREATED_AT VARCHAR2(100 BYTE)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY SYS.EXT_DATA_FILES
ACCESS PARAMETERS
(RECORDS DELIMITED BY NEWLINE
NOBADFILE
NOLOGFILE
FIELDS TERMINATED BY ';'
MISSING FIELD VALUES ARE NULL
(ID, LOGIN, CODE, CREATED_AT))
LOCATION (SYS.EXT_DATA_FILES:'the_external_file.txt')
)
REJECT LIMIT 0
PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT)
NOMONITORING;
, но потом, когда я SELECT * FROM MY_EXT_TABLE
, результатом является пресловутый
ORA-29913: ошибка при выполнении ODCIEXTTABLEOPEN выноски
ORA-29400: данные об ошибке картриджа
КУП-04040: файл the_external_file.txt в EXT_DATA_FILES не найдено
ORA-06512: на "SYS.ORACLE_LOADER", строка 19
(который имеет довольно много хитов на Google, но ни один не кажется связаны)
Я уверен в синтаксисе, так как это тот же самый скрипт, который используется в нашей среде DEV. Кроме того, были проверены разрешения всех файлов и каталогов, и нет ничего ниже 775
.
Единственное отличие, которое я имею здесь от DEV (где он работает) заключается в том, что каталог EXT_DATA_FILES
не был создан MYAPPUSER. Я попытался создать синоним для него .. но не имел никакого эффекта.
Возможно, стоит упомянуть, это Oracle 10g, о котором мы говорим.
Я пропустил что-то очевидное? Это разрешено?
1. Почему в системах? Не могли ли DBA создать его в правильной схеме? 2. Вы действительно существуете в каталоге? – Ben
действительно ли файл txt существует? – Randy
Ну, этот каталог должен использоваться более чем одной схемой .. Я думал, что это имело смысл быть в SYS или где-то общее для всех пользователей. Что касается файлов, да, он существует, и, как я упоминаю, «были проверены разрешения всех файлов и каталогов». :/ – filippo