J'utilise Oracle 11g et je souhaite exporter un tableau à l'aide de la déclaration ci-dessous
C:\>expdp SYS/sys@MYDATABASE DIRECTORY = Mydir DUMPFILE = Customer.dmp LOGFILE = Customer.log TABLES = PERSON.CUSTOMER
Après cette déclaration, cmd donne ceci
UDE-28009: operation generated Oracle error 28009
ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
J'ai continué
Username: SYS@SMSPSETUP AS SYSDBA
Password:
Et finalement j'ai
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
J'ai créé le répertoire 'Mydir' comme ci-dessous
SQL>CREATE DIRECTORY Mydir AS 'C:\Users\osman\Desktop\Export';
Et a donné à tous les privilèges de ce dossier à partir du système de dossiers Windows.
Lorsque vous exécutez l'instruction ci-dessous:
select directory_name, directory_path from dba_directories; where directory_name='Mydir';
Je peux voir le chemin 'C:\Users\osman\Desktop\Export'
Alors, pourquoi ai-je cette erreur?
Ouais, j'ai trouvé la solution. C'est parce que ma base de données Oracle se trouve sur un autre ordinateur du réseau. Ainsi, lorsque j'essaie d'exporter vers le répertoire 'c: \', Oracle essaie d'exporter vers son propre répertoire C:\et non le mien.
J'ai utilisé l'adresse réseau du dossier comme répertoire d'exportation et le problème a été résolu. Utiliser par exemple
\\OSMAN\dump_directory
Je voulais juste faire un carillon et partager ce qui m'a permis de surmonter cette erreur. Dans mon cas (Ora 11.2.0.3 sur Win 7), j'ai trouvé que j'avais besoin du '\' de fin dans mon chemin de répertoire.
Remplacé:
CREATE OR REPLACE DIRECTORY dpump_dir AS 'C:\Data\SID'
Avec:
CREATE OR REPLACE DIRECTORY dpump_dir AS 'C:\Data\SID\'
Premièrement, les documents Oracle sont TRÈS clairs: vous ne devez pas utiliser la pompe de données comme SYS:
http://docs.Oracle.com/cd/E11882_01/server.112/e22490/dp_export.htm#SUTIL824 :
N'appelez pas Exporter en tant que SYSDBA , sauf à la demande du support technique d'Oracle
Le problème sera presque certainement lié aux autorisations. L'utilisateur qui exécute la base de données Oracle est celui qui tente d'écrire dans le fichier. Vérifiez donc qu'il peut écrire dans le dossier en question (et y accéder via tous les dossiers parents).
Créez peut-être un dossier à la racine d'un lecteur (par exemple, "E:\TestExport" ou similaire) afin d'avoir moins de dossiers parents à vous soucier, puis utilisez-le dans Oracle pour déterminer si c'est le cas.
vérifier les permissions du fichier car l'exportation est effectuée par l'utilisateur Oracle alors que le répertoire appartient à l'utilisateur osman
en plus de ce qui précède, vous pouvez également rencontrer les éléments suivants (sur Windows):
Instruction Oracle SQL "CREATE DIRECTORY Mydir AS 'C:\Users\osman\Desktop\Export';" ne peut pas créer de direcotry sur Windows ou Linux, c'est juste un mappage entre la variable Mydir et le répertoire 'C:\Users\osamn\Desktop\Export'
vous devez donc vous assurer que vos fenêtres ont "C:\Users\osman\Desktop\Export"
j'espère que cela peut vous aider!