Comandi Oracle 12c e 18c
[oracle@test ~]$ sqlplus
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 17 15:56:56 2020
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Enter user-name: sys as sysdba
Enter password:
Connesso a:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
Per verificare se siamo nel root database
SQL> show con_name
SQL*Plus: Release 18.0.0.0.0 - Production on Mon Aug 17 15:56:56 2020
Version 18.3.0.0.0
Copyright (c) 1982, 2018, Oracle. All rights reserved.
Enter user-name: sys as sysdba
Enter password:
Connesso a:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
Per verificare se siamo nel root database
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
NORMAL - il PDB è pronto per essere usato.
UNPLUGGED - il PDB è stato scollegato. L'unica operazione è DROP PLUGGABLE DATABASE.
RELOCATING: il PDB è in fase di spostamento su un altro CDB.
RELOCATED: il PDB è stato allocato su un altro CDB.
------------------------------
CDB$ROOT
Per visualizzare i pdb
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
MOUNTED significa database chiuso
Per aprire un pdb
SQL> alter pluggable database orclpdb open;
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- -----------------------------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
Per arpie tutti i pdb
SQL> alter pluggable database all open;
Per chiudere il pdb
SQL> alter pluggable database orclpdb close;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB MOUNTED
Per collegarsi ad un pdb:
SQL> alter session set container=orclpdb;
Modificata sessione.
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
Per aprirlo:
SQL> alter pluggable database open;
Database collegabile modificato.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- -------------------------------
3 ORCLPDB READ WRITE NO
Per tornare al container:
SQL> alter session set container=cdb$root;
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
Per collegarsi direttamente al pluggable database (orclpdb) tramite local naming occorre aggiungere una nuova entry conde nel file tnsnames.ora.
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = test.com)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = test.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.com)
)
)
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = test.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb.com)
)
)
A questo punto da sqlplus è possibile collegarsi direttamente al pdb.
Attenzione che il pdb deve essere aperto.
SQL> conn sys/<pwd>@orclpdb as sysdba
SQL> show con_name
CON_NAME
------------------------------
ORCLPDB
Per visualizzare tutti i pdb accedendo come root container:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> column name format a30
SQL> select con_id, name, open_mode from V$PDBS;
CON_ID NAME OPEN_MODE
---------------- ---------- -----------------------------
2 PDB$SEED READ ONLY
3 ORCLPDB READ WRITE
Per visualizzare tute le tabelle nei pdbs e cdb
SQL> select owner, table_name, con_id
from CDB_TABLES
order by 1,2
Vengono visualizzate le tabelle del pdb solo se questo è aperto cioè in stato "Read Write".
Contare le tabelle per container
SQL> select count(*), con_id from CDB_TABLES group by con_id;
COUNT(*) CON_ID
---------- ---------------------
2133 1
2139 3
La tabella del dizionario dati, DBA_TABLES visualizza le tabelle del container e del pdb in base al tipo di connessione:
Se mi collego ad un pdb
SQL> alter session set container=orclpdb;
SQL> select count(*) from dba_tables;
COUNT(*)
----------
2139
Se mi collego al container:
SQL> alter session set container=cdb$root;
SQL> select count(*) from dba_tables;
COUNT(*)
----------
2133
Per individuare il database name
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> select name, cdb, con_id, open_mode
from V$DATABASE;
NAME CDB CON_ID OPEN_MODE
--------- --- ---------- ----------------------------------
ORCL YES 0 READ WRITE
SQL> select con_id, name, open_mode
from V$CONTAINERS;
CON_ID NAME OPEN_MODE
---------- ---------- -----------------------------
1 CDB$ROOT READ WRITE
2 PDB$SEED READ ONLY
3 ORCLPDB READ WRITE
SQL> select pdb_id,pdb_name, status
from CDB_PDBS;
PDB_ID PDB_NAME STATUS
---------- ---------- -------------------------
3 ORCLPDB NORMAL
2 PDB$SEED NORMAL
La colonna STATUS può assumere i seguenti valori:
NEW - il PDB non è stato mai aperto da quando è stato creato.NORMAL - il PDB è pronto per essere usato.
UNPLUGGED - il PDB è stato scollegato. L'unica operazione è DROP PLUGGABLE DATABASE.
RELOCATING: il PDB è in fase di spostamento su un altro CDB.
RELOCATED: il PDB è stato allocato su un altro CDB.