Chyba, kterou dostáváte, je 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.
Tedy buď /usr/apps/datafiles
adresář neexistuje nebo do něj nemůže zapisovat vlastník procesu Oracle (např. oracle
účet); nebo možná (ale méně pravděpodobné) vámi zadaný soubor protokolu již existuje a nelze jej přepsat.
Protože jste řekli, že existuje, podívejte se na úplná oprávnění adresáře (např. ls -ld /usr/apps/datafiles
, zkontrolujte vlastníka a skupinu vlastníka procesu Oracle (např. id -a
), chcete-li porovnat oprávnění k tomuto adresáři a jeho nadřazenému adresáři. Pokud vše vypadá v pořádku, při přihlášení jako vlastník procesu Oracle zkontrolujte, zda můžete vytvořit soubor v adresáři, např.:
touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file
Pokud to všechno funguje, a myslím, že z vašeho komentáře pravděpodobně ano, pak protože používáte RAC, možná budete muset odkázat na poznámku podpory 1305166.1.
První věc, kterou můžete vyzkoušet, je provést expdp
bez @orcl
, jak se zdá (a) dochází k problémům, když posluchač a databáze běží pod různými účty (např. grid
a oracle
a grid
uživatel nemůže získat přístup k adresáři OS - opakujte touch
otestujte jako tento uživatel, abyste zjistili, zda tomu tak je); nebo (b) pokud je alias vyvážený zátěží a běží na jiném uzlu, který nemá adresář.