Грешката, която получавате е 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.
Така че или /usr/apps/datafiles
директорията не съществува или не може да се записва от собственика на процеса на Oracle (напр. oracle
сметка); или евентуално (но по-малко вероятно) лог файлът, който сте посочили, вече съществува и не може да бъде презаписан.
Тъй като казахте, че съществува, вижте пълните разрешения на директорията (напр. ls -ld /usr/apps/datafiles
, проверете собственика и групата на собственика на процеса на Oracle (напр. id -a
), за да сравните разрешенията за тази директория и нейния родител. Ако всичко изглежда наред, докато сте влезли като собственик на процеса на Oracle, проверете дали можете да създадете файл в директорията, напр.:
touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file
Ако всичко това работи, а предполагам, че вероятно е така от вашия коментар, тогава, тъй като използвате RAC, може да се наложи да се обърнете към бележка за поддръжка 1305166.1.
Първото нещо, което трябва да опитате, е да направите expdp
без @orcl
, както изглежда (a) има проблеми, когато слушателят и базата данни работят под различни акаунти (напр. grid
и oracle
и grid
потребителят няма достъп до директорията на ОС - повторете touch
тествайте като този потребител, за да видите дали случаят е такъв); или (б) ако псевдонимът е балансиран на натоварването и в крайна сметка се изпълнява на различен възел, който няма директорията.