Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
A partir de la version 10 d'Oracle, plus la peine d'installer un client volumineux et de paramétrer un TNSNAMES.ORA, seules qq DLL suffisent...
(pas testé avec la version 11, fonctionne probablement, si quelqu'un a cet environnement et peut faire le test pour confirmer... )
1) Télécharger le zip du client sur le site d'Oracle
http://www.oracle.com/technology/softwa … nsoft.html
(A) Pour les messages en anglais
Instant Client Package - Basic Lite: Smaller version of the Basic, with only English error messages and Unicode, ASCII, and Western European character set support (10.2 only)
instantclient-basiclite-win32-10.2.0.4.zip
(B) Pour les messages internationaux
Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
instantclient-basic-win32-10.2.0.4.zip
2) Définir la variable d'environnement NLS_LANG
(A) Pour les messages en anglais
NLS_LANG= AMERICAN_AMERICA.WE8MSWIN1252
(B) Pour les messages en français
NLS_LANG= FRENCH_FRANCE.WE8MSWIN1252
3) Paramétrer SQLCA
ServerName = syntaxe d'un descripteur de service d'un TNSNAMES.ORA
SQLCA.LogId = 'mon_utilisateur' SQLCA.LogPass = 'mon_mot_de_passe' SQLCA.ServerName = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = mon_serveur )(PORT = 1521))' & + '(CONNECT_DATA = (SID = mon_sid )))'
4) Déployer les librairies
Comme habituellement avec Oracle, le driver PowerBuilder dédié, p.ex pour PB11 et Oracle 10 :
pbo10110.dll
et les drivers Oracle présents dans les ZIP :
(A) Pour les messages en anglais
oci.dll
ociw32.dll
oraocci10.dll
oraociicus10.dll
(B) Pour les messages internationaux
oci.dll
ociw32.dll
oraocci10.dll
oraociei10.dll
Hors ligne
Hors ligne
génial
Hors ligne
Bonjour,
Lorsque je souhaite sous PB9 définir une connexion à une DB Oracle 10g, il me laisse paramétrer dans DATABASE PROFILES / O90 Oracle 9.0.1 la chaîne de connexion et au moment où je souhaite me connecter, me signale "ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA."
J'ai au préalable copié les DLL :
- oci.dll
- ociw32.dll
- oraocci11.dll
- oraociei11.dll
dans le dossier idoine.
SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
SQLCA.LogPass = monPwd
SQLCA.ServerName = "monSERVEUR"
SQLCA.LogId = "monUser"
SQLCA.AutoCommit = False
SQLCA.DBParm = "" <- Je subodore qu'il doit être spécifié ici la chaine de connexion du type "user id=scott;password=tiger;data source=" +
"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)" +
"(HOST=sales-server)(PORT=1521))(CONNECT_DATA="+
"(SERVICE_NAME=sales.us.acme.com)))" ?
Hors ligne
Il faut préciser le nom du service Oracle dans SID=... (normalement tu le retrouves dans ton tnsnames.ora)
Hors ligne
Merci ! Je viens de comprendre que le SID c'est la base de données en fait...
Maintenant j'ai l'erreur suivante :
"le processus d'écoute ne connait pas actuellement le service demandé dans le descripteur de connexion"
> Une base Oracle 10g peut-elle être "contactée" par le pilote Oracle 9i ?
(Nous attaquons des bases SQL 2000 avec un DBMS="MSS (Msoft) SQL Server 6.0"
atr_sql.DBMS = "O90 Oracle 9i" atr_sql.LogId = ls_user atr_sql.LogPass = ls_pwd atr_sql.ServerName = ls_srv atr_sql.DBParm = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + ls_srv + ")(PORT = 1521))" & + "(CONNECT_DATA = (SERVICE_NAME = " + ls_base + "))"
Hors ligne
t'as mis SERVICE_NAME ou SID ?
tu peux coller le contenu de ton tnsnames.ora ?
Hors ligne
Je dois utiliser le premier élément :
ADID =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = GESTEST)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ADID)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Hors ligne
N'y aurait-il pas le fichier listener.ora à modifier aussi ? le descripteur "ADID" n'apparaît pas.
-- EDIT
En passant par l'assistant de configuration j'ai rajouté le descripteur ADID, sans plus de résultat.
Dernière modification par sbouvetJD (18-04-2013 12:29:52)
Hors ligne
ton tnsnames.ora doit être correct
il manque une parenthèse fermante à la fin du dbpam, mais je ne pense pas que ça soit ça
Hors ligne
erasorz a écrit:
ton tnsnames.ora doit être correct
il manque une parenthèse fermante à la fin du dbpam, mais je ne pense pas que ça soit ça
Vu, j'avais corrigé
Après reconfiguration du listener.ora par l'outil adéquat, j'ai un nouveau message : "pas de processus d'écoute"
Ce qui me parait curieux (je ne saisis pas très bien comment cela fonctionne) c'est que le listener indique en hôte mon poste alors que le serveur oracle est sur un ordinateur distant ?
Voici mon listener.ora :
ADID =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = monposte.mondomaine.dom)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = monposte.mondomaine.dom)(PORT = 1521))
)
)
Hors ligne
J'ai le même problème en PB12 classic, je pense donc qu'il s'agit d'un pb au niveau du fichier listener. Je creuse...
Hors ligne
En exécutant la commandelsnrctl services ADID j'ai les erreurs suivantes :
"Connecting to <la chaine définie dans le listener>"
"TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
32-bits Windows Error: 61: Unknown error"
Hors ligne
lsnrctl start
?
Hors ligne
Ah, d'accord :P après cela, effectivement, la commande lsnrctl services ADID me retourne les informations suivantes :
"Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully"
Mais cela ne me parle pas de mon serveur distant ?
Hors ligne
Apparemment je ne devais pas disposer de listener sur mon poste client. Wait & See, je suis en relation avec notre prestataire responsable de la migration SQL Server vers Oracle de leur produit.
Hors ligne
Problème résolu ! Dans ma chaine de connexion, ServerName ne doit pas contenir le nom du serveur, mais le nom de l'alias (à savoir, ADID)
Hors ligne
Bonjour à vous,
A toute fin utile, je suis sous Windows 7 64 bits, j'ai essayé avec l'instant client win64, ça n'a pas marché.
Il faut utiliser le client win32.
J'imagine que c'est dû au fait que Pb tourne en 32 bits.
(Je suis en Pb12.5.1.4015)
Hors ligne
PowerDestroyer a écrit:
Bonjour à vous,
A toute fin utile, je suis sous Windows 7 64 bits, j'ai essayé avec l'instant client win64, ça n'a pas marché.
Il faut utiliser le client win32.
J'imagine que c'est dû au fait que Pb tourne en 32 bits.
(Je suis en Pb12.5.1.4015)
de ton retour (je n'ai pas encore testé en 64bits)
Hors ligne
Bonjour,
En effet l'utilisation d'un version 64bit de windows semble poser un problème.
A priori le client de connexion ne semble pas supporter les noms avec espaces ou caractères spéciaux.
Etant donné que par défaut windows installent les programmes 32 bits dans un répertoire x:\Program Files (x86) le souci vient de là.
Donc la "solution" pour notre cas sera d'installer pb dans un répertoire du style x:\ProgramFiles\PB100
Si vous avez une autre solution je suis preneur
Hors ligne
Praet a écrit:
En effet l'utilisation d'un version 64bit de windows semble poser un problème.
A priori le client de connexion ne semble pas supporter les noms avec espaces ou caractères spéciaux.
Etant donné que par défaut windows installent les programmes 32 bits dans un répertoire x:\Program Files (x86) le souci vient de là.
Effectivement, j'avais déjà constaté ce problème d'espace dans les chemins (que j'ai peut-être posté sur une autre discussion...)
C'est le cas pour toutes les applications qui utilisent le client Oracle, comme l'IDE PowerBuilder, les exécutables PB, les outils SQL, etc.
Hors ligne