2017-04-19 2 views
0

Je suis en train d'utiliser expdp pour effectuer une exportation sur certaines tables de mon Oracle DBUtilisez Oracle Linux expdp au réseau Windows lecteur

mon code:

expdp AAA/***@xxx schemas=AAA include=TABLE:\"= \'TBL001\'\" directory=DUMP_DIR dumpfile=dmpfile.dmp logfile=lgfile.txt 

Voici ce que je reçois

ORA-39002: opération non valide

ORA-39070: impossible d'ouvrir le fichier journal.

ORA-29283: opération de fichier non valide

ORA-06512: à "SYS.UTL_FILE", ligne 536

ORA-29283: opération de fichier non valide

J'ai vérifié en ligne et je pense que ce est un problème de système d'exploitation différent et franchissement/ou une autorisation

Voici ma situation:

  • Oracle DB sur une machine Linux avec CentOS 7
  • directory = DUMP_DIR est un objet de répertoire sur DB. Il a été créé comme je l'ai vu le chemin à travers Linux Machine = smb: // Win_machine1/dump_oracle/
  • DUMP_DIR est situé sur un serveur Windows 2008 R2 (Win_machine1)
  • je peux atteindre DUMP_DIR de donner des informations d'identification de fenêtres Oracle machine
  • Je lance un fichier .bat dans Win_machine1 avec la commande expdp ci-dessus

Q1: Autorisation d'Oracle Machine via Win Server? Je suppose qu'Oracle utilise AAA pour accéder à la base de données et effectuer une opération d'exportation, mais quel utilisateur accède au répertoire DUMP_DIR? Quand je l'ai localisé dans CentOS, il m'a demandé des informations d'identification (et je l'ai dit à retenir), mais je ne sais pas s'il les a stockées ou si expdp les utilise. (AAA n'est pas un utilisateur de domaine)

Pourrait-il être le problème ou devrais-je vérifier autre chose?

Merci, Marcello

+0

Le propriétaire du logiciel Oracle accède au répertoire OS, pas à l'utilisateur qui exécute l'exportation. Vous devrez peut-être accéder au partage à partir de ce compte, en enregistrant les informations d'identification, mais uniquement s'il s'agit d'une action valide/sûre (dont les informations d'identification?). Je ne sais pas si Oracle saura comment gérer le format de chemin 'smb: //'; Si non, pouvez-vous monter cela pour que vous puissiez vous référer à un chemin de point de montage local normal? –

+0

Le partage se trouve sur le même serveur que celui où expdp est exécuté, de sorte que l'utilisateur Windows connecté à Win_machine1 est le même que celui qui a les privilèges pour ouvrir le partage. Je ne sais pas comment traduire le chemin smb: // ou si c'est possible ... Mais je pense que je dois utiliser l'emplacement CentOS car DB y est monté. –

+0

Vous ne savez pas ce que vous voulez dire. L'utilisateur Oracle sur la machine Linux accède au partage via l'objet répertoire - cet utilisateur (et non celui qui exécute expdp comme sur la machine Linux) doit pouvoir accéder à ce partage. Avez-vous vérifié l'accès en tant qu'utilisateur Oracle? –

Répondre

0

J'ai trouvé la solution:

Créer un répertoire sous/mnt/Linux en utilisant mkdir

cd/mnt

mkdir mydir

puis monter à l'aide de montage

mount -t cifs -o nom d'utilisateur, mot de passe // servername/sharename/mnt/mydir/

où le nom d'utilisateur et mot de passe est Windows utilisateur qui peut accéder au partage et// servername/sharename est le chemin de ma part (servername = adresse IP si pas en mesure de résoudre DNS)

Ensuite, créez le répertoire sur Oracle DB

CREER OU REP LACE ANNUAIRE DUMP_DIR AS '/ mnt/mydir'

expdp fonctionne correctement

expdp AAA/*** @ xxx schémas = AAA include = TABLE: \ "= \ 'TBL001 \' \ "directory = DUMP_DIR dumpfile = dmpfile.dmp logfile = lgfile.txt