IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Connexions aux bases de données Oracle Discussion :

POWERSHELL et SQL pour Oracle


Sujet :

Connexions aux bases de données Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 45
    Points
    45
    Par défaut POWERSHELL et SQL pour Oracle
    J'écris un script powershell qui doit lancer un script sql mais je n'arrive pas à le lancer correctement, voic ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [Reflection.Assembly]::LoadFile("$ORACLE_HOME\ODP.NET\bin\2.x\Oracle.DataAccess.dll")
    	$constr = "User Id=script;Password=scripted;Data Source=orcl"
    	$conn= New-Object Oracle.DataAccess.Client.OracleConnection($constr)
    	$conn.Open()
    	$sql= Get-Content .\serv.sql
    	$command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
    	$reader=$command.ExecuteReader()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Exception calling "ExecuteReader" with "0" argument(s): "ORA-00900: invalid SQL
     statement"
    At line:1 char:31
    + $reader=$command.ExecuteReader <<<< ()
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : DotNetMethodException
    Je comprends pas ce qui ne va pas, mon script sql fonctionne je peux le lancer à la mano depuis sqlplus.

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Bonjour,

    Quel est le contenu du fichier serv.sql ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 45
    Points
    45
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    set termout off;
    set feedback off;
    set verify off;
    set echo off;
    set pagesize 0;
    column percent format 999;
    spool \tmp\error.out
    whenever sqlerror continue;
    drop table temp_free_space;
    whenever sqlerror exit sql.sqlcode;
    create table temp_free_space as select tablespace_name tbs_name, sum(nvl(bytes,0))/1024 free_bytes from dba_free_space group by tablespace_name;
    whenever sqlerror continue;
    drop table temp_alloc_space;
    whenever sqlerror exit sql.sqlcode;
    create table temp_alloc_space as select tablespace_name tbs_name, sum(nvl(bytes,0))/1024 alloc_bytes from dba_data_files group by tablespace_name;
    spool off
    spool \tmp\tbs_pct_used.out
    select a.tbs_name tablespace_name, round(((nvl(a.alloc_bytes,0) - nvl(b.free_bytes,0))*100)/a.alloc_bytes) percent from temp_alloc_space a, temp_free_space b where a.tbs_name = b.tbs_name;
    spool off;
    whenever sqlerror continue;
    drop table temp_free_space;
    drop table temp_alloc_space;
    quit
    j'arrive plus ou moins à éxecuter des requètes en changeant un peu le code mais je n'arrive toujours pas à éxecuter le script sql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $constr = "User Id=system;Password=passw0rd;Data Source=orcl"
    $conn= New-Object Oracle.DataAccess.Client.OracleConnection($constr)
    $conn.Open()
    $sql= ''
    $command = New-Object Oracle.DataAccess.Client.OracleCommand($sql,$conn)
    $command.ExecuteReader()
    $command.Dispose()

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Points : 45
    Points
    45
    Par défaut
    Ok j'ai fais ça beaucoup plus facilement sans l'ODP.Net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $cmd = "cmd.exe";
    	$args = "/c sqlplus / as sysdba @\serv.sql";
    	&$cmd $args;
    Merci de l'aide

  5. #5
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Points : 1 597
    Points
    1 597
    Par défaut
    Le problème vient du fait que votre script initial intègre des directives propres à l'application SQL*Plus.

    Cette application n'est pas lancée par Powershell qui visiblement se connecte directement au travers de la couche cliente d'Oracle.

    Avec ODP.Net vous lancez SQL*Plus autant faire un script batch qui va le faire pour vous, sans utiliser ODP.Net

    la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus <usr>/<passwd>@<adresse> @script

Discussions similaires

  1. client sql pour oracle
    Par judikael dans le forum Oracle
    Réponses: 2
    Dernier message: 26/09/2007, 21h12
  2. [VB]executer un script sql pour oracle
    Par akbayli01 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 15/02/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo