天天看點

oracle 12c建立可插拔資料庫(PDB)及使用者

由于oracle 12c使用了CDB-PDB架構,類似于docker,在container-db内可以加載多個pluggable-db,是以安裝後需要額外配置才能使用。

一、修改listener.ora , tnsnames.ora

###listener.ora###

LISTENER =

(DESCRIPTION =

  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

  (CONNECT_DATA = (SERVICE_NAME = orcl))

)

#sid list列舉cdb和所有pdb的資料庫名,所有sid與oracle環境變量保持一緻#

SID_LIST_LISTENER =

(SID_LIST =

  (SID_DESC =

    (GLOBAL_DBNAME = orcl) #cdb db_name

    (SID_NAME = orcl)

  )

    (GLOBAL_DBNAME = pdborcl) #pdb db_name

##tnsnames.ora###

#cdb

orcl =

(DESCRIPTION = 

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) )

  (CONNECT_DATA =

    (SERVICE_NAME = orcl) #cdb的db_name

#pdb

pdborcl =

    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

    (SERVICE_NAME = pdborcl) #pdb的db_name

在用戶端連接配接時使用“service_name+domain_name”連接配接。如果出現ora-01017,很有可能是

二、建立pdb

cdb相當于作業系統,調用并管理各個pdb。pdb相當于真正提供業務需求的資料庫執行個體。oracle 12c安裝後隻建立了cdb,需要自己生成相應的pdb。

1、建立pdb

在sqlplus下:

create pluggable database pdborcl

admin user pdbadmin identified by pdbadmin

role=(resource)

file_name_convert=( 'PDB$SEED's directory' , 'PDBOrcl's directory' );

2、同步檔案

select pdb_name,status from cdb_pdbs

若pdb狀态為need sync,則需要:

alter sesseion set container=pdborcl

shutdown immediate或者alter pluggable database pdborcl close immediate ;

alter pluggable database pdborcl open restricted ;

exec dbms_pdb.sync_pdb ; #調用dbms_pdb進行pdb

3、新增使用者

create user scott account unlock identified by tiger ;

grant resource to scott ;

按照上述方法建立使用者,如果出現ora-01017,很有可能是1、沒有指定連接配接的service_name到具體pdb,或者oracle對密碼大小寫敏感。前者檢查listener.ora中sid_list是否已經列出該pdb,并檢查連接配接字元串是否在tnsnames.ora指定。後者如果無法修改前端程式,可以使用

alter system set SEC_CASE_SENSITIVE_LOGON = false ;

強制關閉oracle的大小寫檢查進行确認。

三、常用指令

show pdbs:檢視目前資料庫container中包含有多少個pdb。如果session在某個pdb中,可以檢視目前的pdb。

alter session set container=PDBNAME

切換目前會話到某個pdb中。切換後才可使用目前pdb的私有使用者進行操作

startup/shutdown immediate

關閉目前會話所在的cdb/pdb

alter pluggable database PDBNAME open ;

打開指定pdb

alter pluggable database PDBNAME close immediate ;

關閉指定pdb

本文轉自 gole_huang 51CTO部落格,原文連結:http://blog.51cto.com/golehuang/1899330