Quantcast

SQLPLUS

Dimanche 6 mai 2012 7 06 /05 /Mai /2012 15:21

 

Se connecter et exécuter des ordres SQL avec SQLPlus.

Comment se connecter et accéder à une base de données Oracle avec SQLPlus.
Comment interroger mes tables Oracle en mode console.
Comment exécuter des commandes SQLPLUS dans Oracle.
Comment exécuter des requêtes SQL en mode console.

SQLPLUS (SQL*Plus) est un outil ligne de commande Oracle, c'est une interface qui permet l’accés à une base de données en mode commande et console :
- Exécution des commandes SQL.
- Exécution de code PL/SQL.
- Exécution des commandes SQLPLUS.
- Exécution de fichiers scripts.
- La création de rapports.
- L'administration de la base de données.

Ici, nous parlerons uniquement de l'interface mode ligne de commande (Mode console), car l'interface graphique SQL*Plus n'est plus disponible à partir de la version 11G d'Oracle.

Syntaxe de la commande SQLPLUS pour une connexion à une base de données.

 
SQLPLUS {username[/password][@connect_identifier] | / } [AS {SYSOPER|SYSDBA}] |/NOLOG
  • username[/password].
    Nom d'utilisateur et mot de passe avec lequel vous voulez vous connecter à la base de données Oracle.

    C:\>SQLPLUS scott/tiger
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 12:59:08 2012
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    Connecté à :
    Oracle Database 10g Release 10.2.0.1.0 - Production
    
    SQL>
    
  • @connect_identifier.
    Identifiant de connexion Oracle Net.
    il s’agit du descripteur de connexion qui indique la base Oracle à laquelle vous voulez vous connecter.
    Ce descripteur est présent dans votre fichier TNSNAMES.ORA situé dans %ORACLE_HOME%\NETWORK\ADMIN.

    C:\>SQLPLUS scott/tiger@test
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 13:01:02 2012
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    Connecté à :
    Oracle Database 10g Release 10.2.0.1.0 - Production
    
    SQL>
    
  • /
    Ouverture de session en utilisant l'authentification du système d'exploitation.

    C:\>SQLPLUS / as SYSDBA
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 13:07:44 2012
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    Connecté à :
    Oracle Database 10g Release 10.2.0.1.0 - Production
    
    SQL>
    
  • AS {SYSOPER|SYSDBA}.
    La clause AS permet des connexions privilégiées pour les utilisateurs qui ont les privilèges SYSOPER ou SYSDBA.

    C:\>SQLPLUS SYS/monpasse AS SYSDBA
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 14:44:07 2012
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    Connecté à :
    Oracle Database 10g Release 10.2.0.1.0 - Production
    
    SQL>
    
  • /NOLOG.
    La clause /NOLOG permet d'ouvrir SQLPLUS sans établir de connexion à une base de données.
    Vous devez utilisez la commande CONNECT pour ouvrir une session sur la base de données Oracle.

    C:\>SET ORACLE_SID=DBAPROD
    C:\>SQLPLUS /NOLOG
    
    SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 14:50:53 2012
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    
    SQL> CONNECT
    Entrez le nom utilisateur : scott
    Entrez le mot de passe :
    Connecté.
    SQL>
    
    ou bien
    
    SQL> CONNECT scott/tiger
    Connecté.
    SQL>
    

Une session SQLPLUS se termine par la commande EXIT.
Attention, les transactions en cours sont validées aprés un EXIT, sauf si la commande ROLLBACK est exécutée.


 

Connexion à SQLPLUS et descripteur de connexion du TNSNAMES.ORA.

Ce descripteur de connexion de la commande SQLPLUS est présent dans votre fichier TNSNAMES.ORA situé dans %ORACLE_HOME%\NETWORK\ADMIN.
Le descripteur de connexion indique la base Oracle à laquelle vous voulez vous connecter.
Dans cet exemple, je souhaite me connecter à la base de test.

 
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>type tnsnames.ora
# tnsnames.ora Network Configuration File: C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = PC-DRO)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DBATEST)
    )
  )
PROD =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = PC-DRO)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = DBAPROD)
    )
  )
C:\oracle\product\10.2.0\db_1\NETWORK\ADMIN>cd\
C:\
C:\>SQLPLUS scott/tiger@test

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 13:05:23 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connecté à :
Oracle Database 10g Release 10.2.0.1.0 - Production

SQL>

 


 

Connexion à SQLPLUS et variable ORACLE_SID.

Il est possible de ne pas utiliser le descripteur de connexion présent dans le fichier TNSNAMES.ORA. Pour celà on initialise la variable ORACLE_SID avec le nom de l'instance de la base de données Oracle sur laquelle on veut se connecter.
Dans cet exemple, je me connecte à la base de prod et ensuite à la base de test.

 
C:\>SET ORACLE_SID=DBAPROD

C:\>SQLPLUS / AS SYSDBA

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 14:31:33 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connecté à :
Oracle Database 10g Release 10.2.0.1.0 - Production

SQL> SELECT * FROM global_name;

GLOBAL_NAME
-------------------
DBAPROD

SQL> exit
Déconnecté de Oracle Database 10g Release 10.2.0.1.0 - Production

C:\>SET ORACLE_SID=DBATEST

C:\>SQLPLUS / AS SYSDBA

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 14:32:07 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connecté à :
Oracle Database 10g Release 10.2.0.1.0 - Production

SQL> SELECT * FROM global_name;

GLOBAL_NAME
-------------------
DBATEST

SQL>

 


 

Exécuter des commandes SQLPLUS.

Connexion SQLPLUS sur le schéma scott.
Ne pas confondre commandes sql et commandes sqlplus. Dans cet exemple, nous utilisons la commande SQLPLUS DESC / DESCRIBE.
Elle permet d'afficher la structure d'une table ou d'une vue.

 
C:\>SQLPLUS scott/tiger@test

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 13:43:15 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connecté à :
Oracle Database 10g Release 10.2.0.1.0 - Production

SQL> DESC emp
 Nom                                       NULL ?   Type
 ----------------------------------------- -------- -----------------
 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(15)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SQL>

Dans cet exemple, nous utilisons la commande SQLPLUS SHOW USER.
Elle permet de visualiser le User sous lequel on est connecté.

 
SQL> SHOW USER
USER est "SCOTT"
SQL>

Dans cet exemple, nous utilisons la commande SQLPLUS SET SQLPROMPT.
Elle permet de changer et modifier l'affichage du prompt SQL.

 
SQL> SET SQLPROMPT www.dba-ora.fr>
www.dba-ora.fr>
www.dba-ora.fr>

Il existe une multitude de Commandes SQLPLUS.

 


 

Interroger mes tables avec des requêtes SQL sous SQLPLUS.

Maintenant que nous savons nous connecter à la base de données Oracle en mode console, nous pouvons interroger nos tables, dans cet exemple, je me connecte à la base de données avec le user SCOTT, donc je vais avoir la possibilité d'interroger tous les objets du schéma SCOTT.

 
C:\>SQLPLUS scott/tiger@prod

SQL*Plus: Release 10.2.0.1.0 - Production on Dim. Mai 6 15:04:22 2012
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connecté à :
Oracle Database 10g Release 10.2.0.1.0 - Production

SQL> DESC emp;
 Nom                                       NULL ?   Type
 ----------------------------------------- -------- -----------------
 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(15)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SQL> SELECT ename, job, sal FROM emp;

ENAME      JOB                    SAL
---------- --------------- ----------
SMITH      CLERK                800,5
ALLEN      SALESMAN
WARD       SALESMAN              1250

SQL>

ou bien

SQL> SELECT ename,
  2           job,
  3           sal
  4  FROM     emp;

ENAME      JOB                    SAL
---------- --------------- ----------
SMITH      CLERK                800,5
ALLEN      SALESMAN
WARD       SALESMAN              1250

SQL>

Une requête peut s’écrire sur plusieurs lignes.
SQLPLUS incrémente le numéro de ligne à chaque retour chariot jusqu’au caractère final ; qui marque la fin de la commande.

 

Oracle SQL 10G www.dba-ora.fr

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Creer un Rapport HTML avec SQLPLUS.
• Les Variables SYSTEM SET dans SQLPLUS.
Par Oracle SQL - Publié dans : SQLPLUS
Ecrire un commentaire - Voir les 0 commentaires
Samedi 16 juillet 2011 6 16 /07 /Juil /2011 20:05

 

Insérer et lire les accents sous SQLPLUS avec SET NLS_LANG.

Comment insérer et lire des accents sous SQL*PLUS DOS. ?
Comment changer le paramètre NLS_LANG. ?

Le sujet lié au NLS_LANG et aux problèmes d'accents est vaste, c'est pourquoi je ne rentrerai pas dans les détails.
Le but de cet article est simplement de vous montrer les erreurs à ne pas commettre pour une gestion sans problèmes des accents sous SQL*PLUS lors INSERT STATEMENT ou SELECT ou d’exécution de script avec la commande SQLPLUS @ et @@ appelant des fichiers type NOTEPAD, WORDPAD.

En effet la même requête INSERT INTO avec accents n'aura pas le même SET NLS_LANG, suivant qu'on l’exécute directement dans SQLPLUS ou par appel de script avec @ et @@.

Syntaxe SET NLS_LANG.

 
NLS_LANG [clients Language]_[clients Territory].[clients characterset]
 
SET NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
 
SET NLS_LANG=_FRANCE.WE8MSWIN1252
 
SET NLS_LANG=.WE8MSWIN1252

Voici la config NLS de mon environnement de test.

NLS DATABASE PARAMETERS.

 
SQL> SELECT *
  2  FROM   nls_database_parameters
  3  WHERE  parameter in ('NLS_LANGUAGE','NLS_TERRITORY','NLS_CHARACTERSET');

PARAMETER                      VALUE
------------------------------ ----------------
NLS_LANGUAGE                   AMERICAN
NLS_TERRITORY                  AMERICA
NLS_CHARACTERSET               WE8MSWIN1252

SQL>

 

NLS INSTANCE PARAMETERS.

 
SQL> SELECT *
  2  FROM   nls_instance_parameters
  3  WHERE  parameter in ('NLS_LANGUAGE','NLS_TERRITORY');

PARAMETER                      VALUE
------------------------------ -----------------
NLS_LANGUAGE                   FRENCH
NLS_TERRITORY                  FRANCE

SQL>

 

NLS SESSION PARAMETERS.

 
SQL> SELECT *
  2   FROM   nls_session_parameters
  3   WHERE  parameter in ('NLS_LANGUAGE','NLS_TERRITORY');

PARAMETER                      VALUE
------------------------------ ---------------
NLS_LANGUAGE                   FRENCH
NLS_TERRITORY                  FRANCE


SQL> SELECT sys_context('userenv','language') FROM dual;

SYS_CONTEXT('USERENV','LANGUAGE')
----------------------------------
FRENCH_FRANCE.WE8MSWIN1252

SQL>

 

LISTER PARAMETRE NLS DATABASE, INSTANCE, SESSION.

 
SQL> SET linesize 120
SQL> COLUMN PARAMETERS FORMAT A25
SQL> COLUMN "DATABASE PARAMETERS" FORMAT A28
SQL> COLUMN "INSTANCE PARAMETERS" FORMAT A21
SQL> COLUMN "SESSION PARAMETERS" FORMAT A26
SQL>
SQL> SELECT
  2     data.parameter "PARAMETERS",
  3     data.value "DATABASE PARAMETERS",
  4     inst.value "INSTANCE PARAMETERS",
  5     sess.value "SESSION PARAMETERS"
  6  FROM
  7     nls_database_parameters data LEFT OUTER JOIN nls_instance_parameters inst
  8                                               ON(data.parameter = inst.parameter)
  9                                  LEFT OUTER JOIN nls_session_parameters sess
 10                                               ON(data.parameter = sess.parameter)
 11  ORDER BY 1;

PARAMETERS                DATABASE PARAMETERS          INSTANCE PARAMETERS   SESSION PARAMETERS
------------------------- ---------------------------- --------------------- --------------------------
NLS_CALENDAR              GREGORIAN                                          GREGORIAN
NLS_CHARACTERSET          WE8MSWIN1252
NLS_COMP                  BINARY                                             BINARY
NLS_CURRENCY              $                                                  ¦
NLS_DATE_FORMAT           DD-MON-RR                                          DD/MM/YYYY
NLS_DATE_LANGUAGE         AMERICAN                                           FRENCH
NLS_DUAL_CURRENCY         $                                                  ¦
NLS_ISO_CURRENCY          AMERICA                                            FRANCE
NLS_LANGUAGE              AMERICAN                     FRENCH                FRENCH
NLS_LENGTH_SEMANTICS      BYTE                         BYTE                  BYTE
NLS_NCHAR_CHARACTERSET    AL16UTF16
NLS_NCHAR_CONV_EXCP       FALSE                        FALSE                 FALSE
NLS_NUMERIC_CHARACTERS    .,                                                 ,
NLS_RDBMS_VERSION         10.2.0.1.0
NLS_SORT                  BINARY                                             FRENCH
NLS_TERRITORY             AMERICA                      FRANCE                FRANCE
NLS_TIME_FORMAT           HH.MI.SSXFF AM                                     HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT      DD-MON-RR HH.MI.SSXFF AM                           DD/MM/RR HH24:MI:SSXFF
NLS_TIMESTAMP_TZ_FORMAT   DD-MON-RR HH.MI.SSXFF AM TZR                       DD/MM/RR HH24:MI:SSXFF TZR
NLS_TIME_TZ_FORMAT        HH.MI.SSXFF AM TZR                                 HH24:MI:SSXFF TZR

20 ligne(s) sélectionnée(s).

SQL>

Si ils sont définis, les paramètres du client NLS_SESSION_PARAMETERS ont toujours préséance sur NLS_INSTANCE_PARAMETERS et NLS_DATABASE_PARAMETERS. Sous Windows, vous avez deux options possibles, normalement le NLS_LANG est défini dans la base de registre, mais il peut également être défini dans une variable d'environnement. La variable d'environnement l'emporte sur la valeur définie dans la base de registre et est utilisée pour tous les Oracle Homes du serveur si elle est définie comme une variable d'environnement système.
Le jeu de caractères du client est défini par le NLS_LANG sur l'OS client.

 

Démo INSERT STATEMENT avec ACCENT dans SQL*PLUS.

 
SQL> INSERT INTO table_accent
  2         VALUES('Test éphémère SQL*PLUS.','Défaut NLS_LANG','INSERT STATEMENT');

1 ligne crÚÚe.

 

Démo INSERT STATEMENT et appel Script avec SET NLS_LANG=.WE8PC850 dans SQL*PLUS.

 
C:\>SET NLS_LANG=.WE8PC850
C:\>SQLPLUS scott/tiger@dbtest

SQL> INSERT INTO table_accent
  2         VALUES('Test éphémère SQL*PLUS.','NLS_LANG=.WE8PC850','INSERT STATEMENT');

1 row created.

SQL> @c:\accent.sql

 

Démo @SCRIPT INSERT STATEMENT SET NLS_LANG=.WE8MSWIN1252 dans SQL*PLUS.

 
C:\>SET NLS_LANG=.WE8MSWIN1252
C:\>SQLPLUS scott/tiger@dbtest

SQL> @c:\accent.sql
SQL> exit

 

Voyons le résultat dans SQL*PLUS.

 
C:\>SET NLS_LANG=.WE8PC850
C:\>SQLPLUS scott/tiger@dbtest
SQL> SET linesize 120
SQL> SELECT * FROM table_accent;

TEXT                           NLS_LANG                                     QUOI
------------------------------ -------------------------------------------- -----------------
Test ■ph■m■re SQL*PLUS.        D■faut NLS_LANG                              INSERT STATEMENT
Test éphémère SQL*PLUS.        NLS_LANG=.WE8PC850                           INSERT STATEMENT
Test éphémère SQL*PLUS.        NLS_LANG=.WE8MSWIN1252                       Appel Script @
Test ■ph■m■re SQL*PLUS.        NLS_LANG=.WE8MSWIN1252                       INSERT STATEMENT
Test ÚphÚmÞre SQL*PLUS.        NLS_LANG=.WE8PC850                           Appel Script @
Test éphémère TOAD.            NLS_LANG=.WE8MSWIN1252                       INSERT STATEMENT

6 rows selected.

SQL>

En conclusion, on s'aperçoit qu'il faut initialiser la variable NLS_LANG du Client à :

SET NLS_LANG=.WE8PC850 pour inserer des accents dans SQL*PLUS DOS.
SET NLS_LANG=.WE8MSWIN1252 pour inserer des accents via appel de script ( @ / @@) dans SQL*PLUS.

Haut de Page www.dba-ora.fr

 

Liens en rapport avec l'article et qui sont susceptibles de vous intéresser
• Creer un Rapport HTML avec SQLPLUS
• Liste Description Commandes SQLPLUS
• Liste Description SQLPLUS SET SYSTEM VARIABLE
Par Daniel Roesch - Publié dans : SQLPLUS
Ecrire un commentaire - Voir les 1 commentaires

Oracle Sql et administration

Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus - Articles les plus commentés