【12c cdb pdb】實驗

Yichen16發表於2022-01-20

12c 以後 oracle 資料庫開啟了新的篇章,以 CDB 為基礎,引入多租戶的概念,一個基座 root$cdb 上可以新建多個 pdb
並且他們之間獨立執行,互不干擾,解決了一例項對應多庫的問題,同時可以實現非 cdb 庫到 pdb 庫, pdb pdb 快速遷移。
  下面我們來看下 12c 安裝與 cdb pdb 管理
一、 12 安裝( 12.1.2.0 for Centos 7.6
1 、靜默安裝(系統引數,環境變數需提前配置好,見前面配置 11g 少許不同)

db_install.rsp(主要)
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=db1
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=oinstall
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.BACKUPDBA_GROUP=dba
oracle.install.db.DGDBA_GROUP=dba
oracle.install.db.KMDBA_GROUP=dba
DECLINE_SECURITY_UPDATES=true
 
./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /stage/database/response/db_install.rsp
執行指令碼:
/u01/app/oracle/oraInventory/orainstRoot.sh 
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh

2 、手動安裝庫並執行指令碼

pfile檔案:initorcl.ora
db_name='orcl'
memory_target=2G
processes = 150
audit_file_dest='/u01/app/oracle/admin/orcl/adump'
audit_trail ='db'
db_block_size=8192
db_domain=''
db_recovery_file_dest='/flash_recovery'
db_recovery_file_dest_size=10G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP) (SERVICE=ORCLXDB)'
open_cursors=300 
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
# You may want to ensure that control files are created on separate physical
# devices
control_files = (/oradata/orcl/control01.ctl,/oradata/orcl/control02.ctl)
compatible ='12.1.0'
enable_pluggable_database=true
 
建庫檔案:2.sql
create database orcl 
  user sys identified by oracle
  user system identified by oracle
  logfile group 1 ('/oradata/orcl/redo01.log') SIZE 50M BLOCKSIZE 512,
        group 2 ('/oradata/orcl/redo02.log') SIZE 50M BLOCKSIZE 512,
            group 3 ('/oradata/orcl/redo03.log') SIZE 50M BLOCKSIZE 512
   maxloghistory 1
   maxlogfiles 16
   maxlogmembers 3
   maxdatafiles 1024
   character set AL32UTF8
   national character set AL16UTF16
   extent management local
         datafile '/oradata/orcl/system01.dbf' size 1000m
         sysaux datafile '/oradata/orcl/sysaux01.dbf' size 700m
   default tablespace users
         datafile '/oradata/orcl/user01.dbf' size 500m
   default temporary tablespace temp
         tempfile '/oradata/orcl/temp01.dbf' size 200m
   undo tablespace undotbs1
         datafile '/oradata/orcl/undotbs1.dbf' size 200m
   ENABLE PLUGGABLE DATABASE
   SEED FILE_NAME_CONVERT = ('/oradata/orcl','/oradata/orcl/pdbseed/');
 
執行指令碼:
sh /u01/app/oracle/oraInventory/orainstRoot.sh
sh /u01/app/oracle/product/12.2.0.1/dbhome_1/root.sh
 
初始化資料庫:
In SQL*Plus, connect to your Oracle Database instance with the SYSDBA administrative privilege:
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/rdbms/admin/utlrp.sql
In SQL*Plus, connect to your Oracle Database instance as SYSTEM user:
@?/sqlplus/admin/pupbld.sql
初始化cdb:@?/rdbms/admin/catcdb.sql


3 listener.ora tnsnames.ora  sqlnet.ora

[oracle@db1 admin]$ cat listener.ora
LISTENER =
      (DESCRIPTION_LIST =
         (DESCRIPTION =
           (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.100)(PORT = 1521))
         )
      )
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME=orcl))
    (SID_DESC=
      (GLOBAL_DBNAME=pdb1)
      (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME=orcl))
    (SID_DESC=
      (GLOBAL_DBNAME=pdb2)
      (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME=orcl))
    (SID_DESC=
      (GLOBAL_DBNAME=pdb3)
      (ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1)
      (SID_NAME=orcl))
   )
 
[oracle@db1 admin]$ cat tnsnames.ora
orcl =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
pdb1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.0.2.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )
[oracle@db1 admin]$ cat sqlnet.ora 
NAMES.DIRECTORY_PATH=(TNSNAMES,EZCONNECT)


4 、開啟歸檔及目錄等等( archivelog 目錄 flash_recovery_area 等)
二、 cdb pdb 管理
1 、建庫方式  pdbseed 新建庫

mkdir -p /oradata/orcl/pdb2
create pluggable database pdb2 admin user pdb2 identified by pdb2 file_name_convert=('/oradata/orcl/pdbseed',
'/oradata/orcl/pdb2/');
alter pluggable database  pdb2 open;
 
以在用的pdb庫為模板新建
mkdir -p /oradata/orcl/pdb3
create pluggable database pdb2 from pdb1  file_name_convert=('/oradata/orcl/pdb1',
'/oradata/orcl/pdb3/');

cdb 解除安裝 pdb3

alter pluggable database  pdb3 unplug to '/home/oracle/pdb3.xml';
drop pluggable database pdb3 keep datafiles;(keep datafiles保留資料檔案/including datafiles包括刪除檔案)
以上為了以後還能載入資料庫pdb3 ,如不需要直接drop pluggable database pdb3 including datafiles一句即可;

  載入資料庫 pdb3

create pluggable database pdb03 using '/home/oracle/pdb03bak/pdb03.xml' nocopy tempfile reuse;
SYS@orcl>show pdbs;
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PDB3                           READ WRITE NO

小結: 12c 新的架構給我們提供了多種建庫的方式,資料管理更加集中,管理更加方便;
1 、許可權分開管理:一套是 cdb$root  一套是 pdb 二者之間可以關聯;
2 、資料檔案,引數檔案,臨時檔案、控制檔案, undo 閃迴檔案 ,其中臨時檔案、 undo 檔案可以與全域性共享或 pdb 獨享
undo 閃回空間   oracle 12.1 只能使用共享 undo   oracle12.2 可以使用 pdb 獨享和共享 undo


Yicheng16
22.01.20

-- The End --


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69963467/viewspace-2853280/,如需轉載,請註明出處,否則將追究法律責任。

相關文章