Der Fehler, den Sie erhalten, ist 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.
Also entweder die /usr/apps/datafiles
Verzeichnis existiert nicht, oder es ist nicht für den Oracle-Prozesseigentümer schreibbar (z. B. das oracle
Konto); oder möglicherweise (aber weniger wahrscheinlich) existiert die von Ihnen angegebene Protokolldatei bereits und kann nicht überschrieben werden.
Da Sie gesagt haben, dass es existiert, sehen Sie sich die vollständigen Berechtigungen des Verzeichnisses an (z. B. ls -ld /usr/apps/datafiles
, überprüfen Sie den Eigentümer und die Gruppe des Oracle-Prozesseigentümers (z. B. id -a
), um die Berechtigungen für dieses Verzeichnis und sein übergeordnetes Verzeichnis zu vergleichen. Wenn das alles in Ordnung aussieht, prüfen Sie, während Sie als Oracle-Prozesseigentümer angemeldet sind, ob Sie eine Datei unter dem Verzeichnis erstellen können, z. B.:
touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file
Wenn all dies funktioniert, und ich vermute, dass dies aufgrund Ihres Kommentars wahrscheinlich der Fall ist, müssen Sie möglicherweise auf den Support-Hinweis 1305166.1 verweisen, da Sie RAC verwenden.
Das erste, was Sie versuchen sollten, ist expdp
ohne @orcl
, wie es scheint (a) gibt es Probleme, wenn der Listener und die Datenbank unter verschiedenen Konten laufen (z. B. grid
und oracle
, und das grid
Benutzer kann nicht auf das OS-Verzeichnis zugreifen - wiederholen Sie die touch
testen Sie als dieser Benutzer, um zu sehen, ob dies der Fall ist); oder (b) wenn der Alias lastverteilt ist und am Ende auf einem anderen Knoten läuft, der das Verzeichnis nicht hat.