Ne pouvez pas créer de Lien de Base de données à distance DB Oracle DB

Nous avons un système de CRM dans notre société, qui utilise un base de données Oracle 11g. Il est développé par un fournisseur tiers.

Nous n'avons pas accès au serveur qui exécute le système CRM. Mais néanmoins, nous avons à travailler DBA connexion de données à notre disposition (SYS utilisateur). Il se compose de:

  • IP du serveur: 172.1.2.3
  • port: 1521
  • SID: abc
  • utilisateur: sys
  • mot de passe: *

Nous pouvons l'utiliser pour accéder à la DB avec Oracle SQL Developer 3.1 (Connexions >> Propriétés)

Désormais partie des données doit être copié de la CRM-base de données dans une autres de base de données Oracle, qui se trouve sur un autre serveur.

À ma compréhension, j'aurais besoin de créer un lien de base de données dans ma base de données cible. J'ai essayé quelque chose comme ceci:

CREATE PUBLIC DATABASE LINK xxx CONNECT TO sys IDENTIFIED BY ***** USING 'MYTNSENTRY'

Mon tnsnames.ora est comme suit:

MYTNSENTRY =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.2.3)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = abc)
 )
)

.... et mon auditeur.ora ressembler à ceci:

MYLISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=172.1.2.3)(PORT=1521))
      ))
SID_LIST_MYLISTENER=
  (SID_LIST=    
    (SID_DESC=
      (SID_NAME=MYTNSENTRY)
      (ORACLE_HOME=C:\somepath) # path to Oracle home of target DB
      (PROGRAM=extproc)))

Est PROGRAMME=extproc le bon choix? Il ya un couple de d'autres programmes à choisir. Je ne pouvais même pas commencer à l'auditeur lsnrctl parce qu'il ne pouvait pas "la vérification de l'utilisateur", ou quelque chose. Ironiquement, l'auditeur-l'installation et le lien de base de données à un MS SQL server de travailler en douceur.

Maintenant, malgré l'absence de certaines informations essentielles sur le CRM système de bd, on peut toujours se connecter à la base de données dans SQL Developer. Ne devrait-elle pas être également possible de faire une connexion entre les deux Oracle DBs? Merci de m'aider avec l'installation et la création de la liaison de base de données.

----- EDIT: --------

Alex Poole soupçon m'a aidé à le faire fonctionner. J'ai utilisé

  show parameters service_names;

pour obtenir le plein nom de service. Il a la forme abc.def, avec def étant le domaine. Ainsi donc, j'ai ajouté le nom de domaine alias TNS dans tnsnames.ora:

MYTNSENTRY =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.2.3)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = abc.def)
 )
)

La connexion peut être testé avec tnsping MYTNSENTRY sur l'invite de commande de la cible serveur de base de données. Le tnsnames.ora est local. Cependant, j'ai supprimé toutes les modifications apportées à la "locale" auditeur.ora, depuis l'auditeur, en effet, réside sur le serveur CRM.

La commande SQL est essentiellement le même, mais maintenant, la connexion fonctionne:

CREATE PUBLIC DATABASE LINK xxx CONNECT TO some_user IDENTIFIED BY ***** USING 'MYTNSENTRY'
Le fichier TNSNames-vous que l'entrée d', c'est à partir du fichier TNSNames sur les "autres" (non-CRM) base de données oracle, à droite? Je ne suis pas sûr que vous avez à faire quelque chose à l'auditeur sur la cible DB. Je n'ai jamais eu, au moins. Du mieux que je le sais, la cible DB gère l'arrivée d'un DB lien comme de toute autre connexion (mais je me trompe peut-être)
Je suis aussi vraiment sûr que vous ne voulez pas créer la DB lien que le sys utilisateur (ou, au moins, je ne le ferais pas...si seulement pour la sécurité du saké)
D'accord. SYS est très spécial dans Oracle et doivent être traitées avec une extrême prudence/attention.
Je vais écho à ne pas le faire dans sys. Vous devez indiquer votre mot de passe; ce n'est pas un objet c'est une chaîne.
Oui, le tnsnames.ora est de la "cible" DB. J'ai besoin de faire référence à un nom de service dans mon "créer un lien de base de données" SQL. Depuis je n'ai aucune information sur ce qui est en cours d'exécution sur le CRM-serveur, j'ai l'intention de créer ma propre Écouteur/TNS alias qui fournit un service. Que l'auditeur doit alors être utilisé pour accéder à la télécommande (=CRM) base de données. Merci pour l'astuce sur les questions de sécurité avec le sys utilisateur, je vais utiliser un autre utilisateur.

OriginalL'auteur user748261 | 2012-04-18