J'utilise l'opérateur d'appel, &
, comme Keith Hill l'a suggéré avec la question, Comment exécuter un fichier EXE dans PowerShell avec des paramètres avec des espaces et des guillemets.
& 'path\sqlplus.exe' 'system/[email protected] as sysdba'
J'ai placé le nom d'utilisateur, le mot de passe entre guillemets à cause des espaces.
Pour démarrer un script, j'ajoute un autre paramètre comme suit :
& 'path\sqlplus.exe' 'system/[email protected] as sysdba' '@my_script.sql'
Si vous recevez l'erreur ORA-12154 et que vous savez que d'autres utilisateurs ont établi des connexions (ce qui implique que l'écouteur de la base de données fonctionne correctement) ; J'examinerais ensuite si SQL*Plus peut trouver mon fichier tnsname.
Ma première tâche serait de voir si je peux tnsping comme suit dans Windows cmd.exe :
tnsping orcl
Il confirmera qu'une connexion peut (ou ne peut pas être établie).
Si ce n'est pas le cas, je vérifierais si la variable d'environnement, ORACLE_HOME, est définie. SQL*Plus l'utilise pour trouver le fichier tnsname.ora.
S'il n'est pas défini, j'exécuterais cette instruction dans PowerShell (pour établir cette variable d'environnement) :
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
Ensuite, je réessaierais de tnsping (identifié ci-dessus).
Une fois réussi, je réessaierais d'exécuter la commande d'exécution du script ci-dessus.