web-dev-qa-db-fra.com

Oracle Export à l'aide d'EXPDP donne l'erreur ORA-06512 SYS.UTL_FILE sur Windows 7

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?

5
osman

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
1
osman

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\'
5
Ken

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.

4
Phil Sumner

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

2
Cyryl1972

en plus de ce qui précède, vous pouvez également rencontrer les éléments suivants (sur Windows):

  • Accédez aux services.
  • Recherche de "OracleService"
  • Clic droit de la souris -> propriétés -> Ouvrir une session (onglet)
  • Modifiez ce compte (nom d'utilisateur actuel) -> en un compte plus privilégié (bien sûr, vous pouvez également modifier les privilèges d'utilisateur actuels)
  • Redémarrez le service et cela devrait fonctionner.

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!

0
LawrenceLi