Question Connexion base oracle

Plus d'informations
il y a 16 ans 7 mois #5064 par Burgun
Connexion base oracle a été créé par Burgun
Bonjour,

Mes connaissances en powershell sont très limitées.

J'essaye de transformer un script à l'origine en Perl, en powershell.

Le but de ce script est de se connecter à une base oracle sur un serveur distant, d'y exécuter une requête permettant de lister les verrous posés sur une base.

Je n'y connais rien du tout en oracle.

Alors vous voyez ma difficulté.

D'après les exemples que j'ai pu trouver, j'en suis arrivé à ce code

[code:1]

#Création de la variable connectionString contenant la chaine de connexion à la base de données
$connectionString = “Data Source=mabase;User Id=monlogin;Password=monpassword;Integrated Security=no”

#Chargement de l’unité de déploiement (assembly) qui permet de créer des objets type \"OracleConnection\"
[System.Reflection.Assembly]::LoadWithPartialName(”System.Data.OracleClient”)

#Création de l'objet OracleConnection avec comme paramètre la chaine créée précédemment.
$connection = New-Object System.Data.OracleClient.OracleConnection($connectionString)

#Création de la requete à éxécuter
$queryString = “Select count(*),sum(case when status='ACTIVE' then 1 else 0 end),
sum(case when USER#>0 then 1 else 0 end),
sum(case when USER#>0 and status='ACTIVE' then 1 else 0 end),
sum(case when lockwait is not null and USER#>0 and status='ACTIVE' then 1 else 0 end),
max(case when lockwait is not null and USER#>0 and status='ACTIVE' then LAST_CALL_ET else 0 end),
sum(case when lockwait is not null and USER#>0 and status='ACTIVE' and LAST_CALL_ET > 120 then 1 else 0 end)
From v\$session”

#Création de l'objet OracleCommand avec comme paramètres la variable contenant la requête ainsi que notre objet connection.
$command = new-Object System.Data.OracleClient.OracleCommand($queryString, $connection)

#ouverture de la connexion vers la base
$connection.Open()

#Exécution de la commande et rangement du résultat dans une variable
$resultat = $command.ExecuteScalar()

#Fermeture de la connexion
$connection.Close()

[/code:1]

La requete SQL est directement issu de ce qui ce trouve dans le script Perl d'origine.

Bien entendu mon script ne fonctionne pas. Je ne comprend déjà pas ou je peux indiquer le serveur distant à interrogger. Car si je précise bien la base, comment lui indiquer le serveur sur laquelle elle est installé ?

Message édité par: bvivi57, à: 12/08/09 11:38

Message édité par: bvivi57, à: 12/08/09 11:38

Message édité par: bvivi57, à: 12/08/09 11:39

Message édité par: bvivi57, à: 12/08/09 11:40<br><br>Message édité par: bvivi57, à: 12/08/09 11:47

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5066 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Connexion base oracle
Salut,
Tu peux touver qq infos ici :
www.oracle.com/technology/pub/articles/cook_dotnet.html

Sous Oracle on ne précise pas un nom de serveur mais un alias présent dans le fichier de config tnsname.ora.
Ainsi on peut changer le nom du serveur sans avoir à modifier le code.

Pour la requête j'utiliserais plutot une here-string :
[code:1]
$queryString = @'
Select count(*),sum(case when status='ACTIVE' then 1 else 0 end),
sum(case when USER#&gt;0 then 1 else 0 end),
sum(case when USER#&gt;0 and status='ACTIVE' then 1 else 0 end),
sum(case when lockwait is not null and USER#&gt;0 and status='ACTIVE' then 1 else 0 end),
max(case when lockwait is not null and USER#&gt;0 and status='ACTIVE' then LAST_CALL_ET else 0 end),
sum(case when lockwait is not null and USER#&gt;0 and status='ACTIVE' and LAST_CALL_ET &gt; 120 then 1 else 0 end)
From v$session
'@
[/code:1]
Perl utilise, il me semble, le caratère slash comme caractère d'échappement.<br><br>Message édité par: Laurent Dardenne, à: 13/08/09 09:12

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5071 par Burgun
Réponse de Burgun sur le sujet Re:Connexion base oracle
Merci pour ton aide.

Ca va compliquer les choses. Je doit donc installer les outils clients oracle sur le poste d'ou je veux lancer mon script.

En plus, ce script doit taper dans plusieurs bases hébergés sur plusieurs serveurs différents.

Tant pis!

Merci en tous cas pour ton aide

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 7 mois #5072 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Connexion base oracle
bvivi57 écrit:

Ca va compliquer les choses.

Je ne comprends pas, qu'est-ce qui va compliquer les choses ?
Pour le poste le client Oracle suffit, les outils sont destinés aux admins/DBA/développeurs. Utiles si tes besoins évoluent.
bvivi57 écrit:

En plus, ce script doit taper dans plusieurs bases hébergés sur plusieurs serveurs différents.

Dans ce cas une itération en modifiant la chaîne de connexion est possible.
Il suffit que ton fichier tnsnames référence les serveurs &amp; instances ciblées.
Le fichier tnsname est le + souvent géré par les DBA et déployé sur tous les postes d'une infrastructure utilisant des bases Oracle.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.050 secondes
Propulsé par Kunena