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

CON_NAME
------------------------------
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.


Post popolari in questo blog

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

Create e Drop Pluggable Database