Oracle PDB

Da Emigar.
Jump to navigation Jump to search

PDB

Da sql:

show pdbs;
show con_name;
alter session set container=PDB1;


Variabili di ambiente

ORACLE_SID=CDB1
ORACLE_PDB_SID=PDB1
export ORACLE_SID ORACLE_PDB_SID
sqlplus '/ as sysdba'

Utenti con autenticazione externally

nel CDB:

alter session set container=CDB$ROOT;
alter system set os_authent_prefix='C##' scope=spfile;

Riavviare il DB se necessario.

nel CDB:

alter session set container=CDB$ROOT;
create user c##user1 identified externally container=all;
grant alter session, create session to c##user1 container=all;

Trigger after connect per cambiare il PDB in base all'utente:

create or replace trigger SET_CONTAINER_AT_LOGON after logon on database
 when (user in ('C##USER1'))
  begin
   execute immediate 'alter session set container=PDB1';
  end;
/

Nel PDB:

alter session set container=PDB1 ;
grant set container to c##user1 container=current;

Grant aggiuntive:

grant resource to c##user1 container=current;

Da sistema operativo:

sqlplus /

Per verificare a quale container siamo connessi, se SHOW PDBS non funziona:

select sys_context('userenv', 'con_name') from dual;

References

https://mikedietrichde.com/2020/07/13/pitfalls-connect-to-a-pdb-directly-with-oracle_pdb_sid/