Archive for the ‘Oracle’ Category

Se connecter (facilement) à une base Oracle

Thursday, March 9th, 2006

Depuis que j’utilise Oracle, je me suis toujours cantonné à l’infâme tnsnames.ora pour gérer mes alias de connection (protocole TCP). Lorsque l’on travaille sur une dizaine de connections qui changent souvent, le tnsnames.ora devient ingérable. Justement à l’occasion d’un bug auquel j’ai été confronté (j’ai tapé SERVICE_NAME=blah au lieu de SID=blah!), excédé, j’ai cherché des alternatives pour spécifier une chaîne de connection Oracle. En fait, depuis la version 10g, on peut utiliser ce qui s’appelle “Easy Connect String”. La syntaxe est simple:

sqlplus user/password@//server:port/service

Et voilà! Plus besoin de tnsnames.ora. Tout est dans le “//” qui annonce une syntaxe “Easy Connect”.

En fait il était déjà possible avant la version 10g de se connecter en tapant:

sqlplus user/password@(DESCRIPTION=
       (ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=port) )
       (CONNECT_DATA=(SERVICE_NAME=service) ) )

Et la très bonne nouvelle, c’est que ça marche très bien dans une chaîne de connection ADO ou ADO.Net. Exemple:

Provider=MSDAORA.1;User ID=toto;Password=xxxx;
     Data Source=//server:port/service

Ciao tnsnames.ora! (A la limite on peut le garder comme documentation…)

Lien SQL Server dans une base ORACLE

Tuesday, January 31st, 2006

Je suis content d’avoir réussi à mettre en oeuvre un lien ODBC vers SQL Server à partir d’ORACLE, cela va me faire gagner des heures voire des jours de boulot! En effet j’ai besoin de comparer une base de données ORACLE et une base de données SQL Server en utilisant de préférence du SQL. Ne connaissant pas Oracle Heterogeneous Services, j’avais d’abord mis en place une procédure compliquée d’extraction et de chargement de base de SQL Server vers ORACLE. La base de données ne fait que 300 Mo mais vu qu’une table tape dans le million de lignes, le chargement prend facilement de 20 à 30 minutes! A raison de 10 fois par jour, ce n’est pas humain. J’ai donc googlé "sql server oracle database link" et je suis tombé directement sur la doc ORACLE et d’autres trucs. Si j’avais su j’aurais googlé directement "hsodbc"!

Les explications trouvées dans ces différentes sources sont toutes assez claires. Il y a juste un piège dans lequel il ne faut pas tomber… Quand vous avez une config de développement ultra-simple sous Windows comme moi avec un seul listener, la seule chose à faire c’est d’ajouter dans listener.ora une entrée SID_DESC à l’unique SID_LIST existant. Ce n’est absolument pas la peine de créer un nouveau listener.

Les nerds se contentent de peu me direz-vous, mais c’est grisant de pouvoir taper:

   SELECT * FROM emp@sql2k A, emp B WHERE A.emp_id = B.emp_id