Wyświetlany błąd to 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.
Więc albo /usr/apps/datafiles
katalog nie istnieje lub właściciel procesu Oracle nie może do niego zapisać (np. oracle
rachunek); lub ewentualnie (ale mniej prawdopodobne) plik dziennika, który podałeś już istnieje i nie można go nadpisać.
Ponieważ powiedziałeś, że istnieje, spójrz na pełne uprawnienia katalogu (np. ls -ld /usr/apps/datafiles
, sprawdź właściciela i grupę właściciela procesu Oracle (np. id -a
), aby porównać uprawnienia do tego katalogu i jego rodzica. Jeśli wszystko wygląda dobrze, po zalogowaniu się jako właściciel procesu Oracle sprawdź, czy możesz utworzyć plik w katalogu, np.:
touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file
Jeśli to wszystko działa i myślę, że prawdopodobnie tak jest z twojego komentarza, to ponieważ używasz RAC, być może będziesz musiał zapoznać się z notą techniczną 1305166.1.
Pierwszą rzeczą do wypróbowania jest wykonanie expdp
bez @orcl
, jak się wydaje (a) występują problemy, gdy listener i baza danych działają na różnych kontach (np. grid
i oracle
i grid
użytkownik nie może uzyskać dostępu do katalogu systemu operacyjnego - powtórz touch
przetestuj jako ten użytkownik, aby sprawdzić, czy tak jest); lub (b) jeśli alias jest równoważony i działa na innym węźle, który nie ma katalogu.