Connessione al database

Connettersi al sistema operativo come utente "oracle" e collegarsi ad Sql Plus da riga di comando, che è installato con il database e si trova nella directory $ORACLE_HOME/bin.
[oracle@dbserver1 ~]$ sqlplus <id_utente>/<pwd>
oppure
[oracle@dbserver1 ~]$ sqlplus /nolog

SQL Plus è installato con il database e si trova nella direcory $ORACLE_HOME/bin.
L'opzione /nolog avvia SQL*Plus senza connettersi a un database quindi è necessario immettere successivamente CONNECT seguito dal nome utente con il quale si desidera effettuare la connessione.
Le informazioni che deve conoscere il client per stabilire una connessione sono:
- indirizzo ip o host in cui risiede il listener
- protocollo utilizzato dal listener
- porta monitorata da listener
- nome del servizio a cui connettersi.

Metodi di connessione

LOCAL NAMING
Il client si connette tramite Oracle Net che interroga il file tnsname.ora (presente nel client stesso) perché questo file di configurazione della connessione, cercando il service_name  (esempio sales) e se lo trova lo converte in host, protocol, port e service name.

SQL> connect username/password@alias

E s e m p i o
SQL> conn hr/oracle@sales
Connected.
"@sales" è l'alias o entry code presente nel file tnsnames.ora.

Se tento di collegarmi al db dal server non è necessario inserire l'alias perché viene letta la variabile d'ambiente ORACLE_SID che coincide con il service name.
SQL> conn hr/oracle
Connected.

Infatti se cambio variabile d'ambiente, non si connette più al database perché viene letto un service name che non esiste come db.
[oracle@dbserver1 ~]$ export ORACLE_SID=demo
[oracle@dbserver1 ~]$ sqlplus /nolog
SQL> conn hr/oracle
ERROR: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
.......


EASY CONNECT NAMING
Il client si connetta tramite TCP/IP al database server senza configurazioni lato client.
Se è omesso il service name vuol dire che coincide con host; "port" coincide con la porta del listener (di default 1521).

SQL> connect username/password@host:por/service_name

SQL> connect sys/password@host:port/service_name as SYSDBA
SQL> conn sys/<pwd>@test.com:1521/orcl.com as sysdba

Nel caso di pluggale database nel <service_name> mettere il service name del pdb database.

Questo tipo di connessione funziona solo se il Listener è up e running.

SQL> conn sys/<pwd>@test.com:1521/orclpdb.com as sysdba
ERROR:
ORA-12541: TNS:no listener


OS AUTHENTICATION
Dal server in cui ho installato il db:
SQL> conn sys/oracle
ERROR: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
Warning: You are no longer connected to ORACLE.
L'errore si ha perché come SYS devo autenticarmi anche se il database non è attivo.
SQL> conn sys/<pwd> as sysdba
Connected.
SQL> show user
USER is "SYS"

Viene verificato che l'utenza oracle SYS fa parte del gruppo del s.o. linux "dba" e quindi si connette come amministratore dba.
Quindi se scrivo così:
SQL> conn abc/abc as sysdba
Connected.
SQL> show user
USER is "SYS"

Si connette lo stesso come SYS perchè sono sul server e mi riconosce come il dba del sistema oralce e l'installatore.
Il comando più usato per connettersi come SYS è il seguente:
SQL> conn /as sysdba
Connected.

Dall'esterno devo invece collegarmi con il seguente comando:
SQL> conn sys/<pwd>@sales as sysdba
Connected.
La password di sys viene confrontata con quanto presente nel file orapwsales della directory $ORACLE_HOME/dbs.
Ecco perché se mi collego così da client va in errore:
SQL> conn abc/abc@sales as sysdba
ERROR: ORA-01031: insufficient privileges

Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione