L'errore che ricevi è ORA-29283
:
> oerr ora 29283
29283. 00000 - "invalid file operation"
*Cause: An attempt was made to read from a file or directory that does
not exist, or file or directory access was denied by the
operating system.
*Action: Verify file and directory access privileges on the file system,
and if reading, verify that the file exists.
Quindi o il /usr/apps/datafiles
la directory non esiste o non è scrivibile dal proprietario del processo Oracle (ad es. oracle
account); o forse (ma meno probabile) il file di registro che hai specificato esiste già e non può essere sovrascritto.
Dato che hai detto che esiste, guarda i permessi completi della directory (ad es. ls -ld /usr/apps/datafiles
, controlla il proprietario e il gruppo del proprietario del processo Oracle (ad es. id -a
) per confrontare le autorizzazioni su quella directory e il relativo genitore. Se tutto sembra a posto, mentre sei connesso come proprietario del processo Oracle controlla se puoi creare un file nella directory, ad esempio:
touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file
Se tutto funziona, e immagino che probabilmente lo sia dal tuo commento, dal momento che stai utilizzando RAC potresti dover fare riferimento alla nota di supporto 1305166.1.
La prima cosa da provare è fare expdp
senza il @orcl
, come sembra (a) ci sono problemi quando il listener e il database vengono eseguiti con account diversi (ad es. grid
e oracle
e la grid
l'utente non può accedere alla directory del sistema operativo - ripeti il touch
prova come quell'utente per vedere se è così); o (b) se l'alias è con bilanciamento del carico e sta finendo per essere eseguito su un nodo diverso che non ha la directory.