12c 新效能 總結篇

靜以致遠√團團發表於2014-11-03

RAC基本維護

1)檢查RAC狀態

[grid@rac01 ~]$ crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

[grid@rac01 ~]$ olsnodes -n

rac01   1

rac02   2

[grid@rac01 ~]$ srvctl status asm -a

ASM is running on rac01,rac02

ASM is enabled.

[grid@rac01 ~]$srvctl status res -t

[grid@rac01 ~]$ crs_stat -t

2)關閉開啟RAC環境

[grid@rac01 ~]$ crs_stop -all

[grid@rac01 ~]$ crs_start -all

3)關閉開啟單節點

關閉

[root@rac01 ~]# /u01/app/12.1.0/grid/bin/crsctl stop crs

或者

[grid@rac02 ~]$ srvctl stop listener -n rac01

[grid@rac02 ~]$ srvctl stop nstance -d testshf_n -i TESTSHF1

[grid@rac02 ~]$ srvctl stop asm -n rac01

[grid@rac02 ~]$ srvctl stop nodeapps -n  rac01

開啟

[root@rac01 ~]# /u01/app/12.1.0/grid/bin/crsctl start crs

或者

[grid@rac02 ~]$ srvctl start listener -n rac01

[grid@rac02 ~]$ srvctl start nstance -d testshf_n -i TESTSHF1

[grid@rac02 ~]$ srvctl start asm -n rac01

[grid@rac02 ~]$ srvctl start nodeapps -n  rac01

CDB和PDB

簡介

Oracle 12C引入了CDB與PDB的新特性,在ORACLE 12C引入的多租使用者環境(Multitenant Environment)中,允許一個資料庫容器(CDB)承載多個可插拔資料庫(PDB)。CDB全稱為Container Database,中文翻譯為資料庫容器,PDB全稱為Pluggable Database,即可插拔資料庫。在ORACLE 12C之前,例項與資料庫是一對一或多對一關係(RAC):即一個例項只能與一個資料庫相關聯,資料庫可以被多個例項所載入。而例項與資料庫不可能是一對多的關係。當進入ORACLE 12C後,例項與資料庫可以是一對多的關係。下面是官方文件關於CDB與PDB的關係圖。

wpsB42A.tmp

這種CDB與PDB是不是感覺和SQL SERVER的單例項多資料庫架構是一回事呢。像PDB$SEED可以看成是master、msdb等系統資料庫,PDBS可以看成使用者建立的資料庫。而可插拔的概念與SQL SERVER中的使用者資料庫的分離、附加其實就是那麼一回事。看來ORACLE也“抄襲”了一把SQL SERVER的概念,只是改頭換面的包裝了一番。

CDB元件(Components of a CDB)

一個CDB資料庫容器包含了下面一些元件:

ROOT元件

ROOT又叫CDB$ROOT, 儲存著ORACLE提供的後設資料和Common User,後設資料的一個例子是ORACLE提供的PL/SQL包的原始碼,Common User 是指在每個容器中都存在的使用者。

SEED元件

Seed又叫PDB$SEED,這個是你建立PDBS資料庫的模板,你不能在Seed中新增或修改一個物件。一個CDB中有且只能有一個Seed. 這個感念,個人感覺非常類似SQL SERVER中的model資料庫。

PDBS

CDB中可以有一個或多個PDBS,PDBS向後相容,可以像以前在資料庫中那樣操作 PDBS,這裡指大多數常規操作。

這些元件中的每一個都可以被稱為一個容器。因此,ROOT(根)是一個容器,Seed(種子)是一個容器,每個PDB是一個容器。每個容器在CDB中都有一個獨一無二的的ID和名稱。

1)連線到CDB資料庫

wpsB43A.tmp

wpsB45B.tmp

wpsB46B.tmp

2)檢視資料庫是否為CDB

SQL> select name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option" , open_mode, con_id from v$database; NAME      Multitenant Option                   OPEN_MODE                CON_ID --------- -----------------------------   --------------------         ---------- E      Multitenant Option enabled            READ WRITE                  0

YES表示該資料庫是CDB,如果是NO表示是NO-CDB(普通資料庫)

3)檢視當前容器(Container)

3.1

SQL> show con_name CON_NAME------------------------------CDB$ROOT SQL> select sys_context('userenv', 'con_name') "Container DB" from dual; Container DB----------------------------------------------------CDB$ROOTSQL>

4)檢視CDB容器中的PDBS資訊

檢視CDB中有多少個pluggable database

SQL>  select con_id, dbid, guid, name , open_mode from v$pdbs;     CON_ID       DBID GUID                             NAME                           OPEN_MODE ---------- ---------- -------------------------------- ------------------------------ ----------          2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY          3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                        MOUNTED SQL>

5)啟動PDB資料庫

方式1:

SQL> alter pluggable database PDBEPPS open; Pluggable database altered. SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;     CON_ID       DBID GUID                             NAME                           OPEN_MODE ---------- ---------- -------------------------------- ------------------------------ ----------          2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY          3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                         READ WRITE

方式2:

SQL> alter session set container=PDBEPPS;Session altered. SQL> startupPluggable Database opened. SQL>

6)關閉PDB資料庫

SQL> alter pluggable database PDBEPPS close;

Pluggable database altered.

SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;

    CON_ID       DBID GUID                             NAME                           OPEN_MODE

---------- ---------- -------------------------------- ------------------------------ ----------

         2 4071321146 E89E8DA2866E3157E043DE07A8C09238 PDB$SEED                       READ ONLY

         3 1930201447 E89E9418B882350CE043DE07A8C092B6 PDBEPPS                        MOUNTED

SQL>

7)在容器間切換

SQL> alter session set container=PDBEPPS;

Session altered.

SQL> show con_name;

CON_NAME

------------------------------

PDBEPPS

SQL>

SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> show con_name;

CON_NAME

------------------------------

CDB$ROOT

8)建立新的PDB

wpsB48B.tmp

wpsB4AC.tmp

wpsB4BC.tmp

wpsB4DC.tmp

wpsB4ED.tmp

9)重新命名PDB

wpsB4FE.tmp

wpsB51E.tmp

wpsB53E.tmp

wpsB54F.tmp

10)複製PDB 刪除PDB

wpsB56F.tmp

wpsB57F.tmp

wpsB5A0.tmp

wpsB5CF.tmp

表空間操作

1)建立CDB永久表空間

SQL> create tablespace cdb001 datafile '+DATA' size 10m;

Tablespace created.

wpsB5FF.tmp

2)建立PDB永久表空間

SQL> alter session set container=bcl3;

Session altered.

SQL> select status from v$instance;

STATUS

------------

OPEN

SQL> create tablespace pdb_bcl301 datafile '+DATA' size 10m;

Tablespace created.

wpsB61F.tmp

3)建立CDB臨時表空間

SQL> create temporary tablespace cdb_temp001 tempfile '+DATA' size 10m;

Tablespace created.

wpsB64F.tmp

4)建立PDB臨時表空間

wpsB67F.tmp

使用者和角色

簡介

自Oracle12c引入CDB資料庫以後,使得多資料庫對使用者和角色的管理變得更加簡潔方便,如果資料庫使用CDB進行管理,那麼在CDB中建立使用者的使用者名稱需要以c##開頭,並且在CDB中建立的使用者會複製到所有的PDB中,除了SEED PDB。

1)建立刪除CDB使用者或角色

wpsB6AF.tmp

wpsB6DF.tmp

wpsB6EF.tmp

2)建立刪除PDB使用者或角色

wpsB70F.tmp

wpsB720.tmp

wpsB731.tmp

RMAN 新特性

概述

rman對sql語句支援增強:在rman命令列,可以使用簡單的sql語句,對資料庫進行直接的操作。

rman分割資料檔案增強:在12C之前的版本,ORACLE 11GR2只是對於全備的備份集備份(非增量,非copy備份方式)方式支援資料檔案分割備份功能,對於11.2之前的版本均不支援該功能.在12C中rman可以支援對於全備,增量備份,copy備份全部支援分割資料檔案備份(CONTROLFILE,SPFILE不支援)。

Oracle 12c還引入sysbackup角色,sysbackup 管理角色覆蓋了 備份backup和recovery恢復所需要的許可權, 還包括連線到已關閉的 資料庫。  系統管理員可以將sysbackup而非sysdba賦予給那些只操作備份和恢復的使用者,由此減少了SYSDBA這個超級使用者許可權過重的問題。與SYSDBA相反,SYSBACKUP不包含訪問所有表的SELECT ANY TABLE許可權。

1)rman對sql語句支援增強

wpsB770.tmp

2)rman對分割資料檔案的增強

wpsB7AF.tmp

wpsB7FE.tmp

3)備份CDB(在備份CDB的同時,會備份所有的PDB)

wpsB83E.tmp

wpsB88D.tmp

4)備份PDB

使用CDB會話備份PDB

wpsB8DC.tmp

配置TNS,登入PDB備份

wpsB8EC.tmp

wpsB8FD.tmp

wpsB91D.tmp

wpsB95D.tmp

5)全部資料檔案丟失的恢復

wpsB99C.tmp

刪除所有TEST001資料檔案

wpsB9AD.tmp

wpsB9BD.tmp

wpsB9CE.tmp

wpsB9DE.tmp

wpsB9FF.tmp

使用rman恢復(比較慢)

wpsBA3E.tmp

wpsBA6E.tmp

Recover會處於等待介面很久連結中斷

wpsBA8E.tmp

登入資料庫進行recover

wpsBAAE.tmp

wpsBABF.tmp

wpsBACF.tmp

6)單個資料檔案丟失的恢復

wpsBAE0.tmp

wpsBB00.tmp

wpsBB40.tmp

wpsBB50.tmp

CBD中不能直接將資料檔案OFFLINE

CBD開啟歸檔

兩節點關閉CDB(PDB不允許單獨設定歸檔,但可以設定自己的歸檔路徑)

wpsBB61.tmp

任意一個節點啟動資料庫到mount狀態,設定歸檔路徑

wpsBB91.tmp

開啟歸檔,開啟資料庫

wpsBBA1.tmp

開啟另一節點,檢視歸檔狀態

wpsBBD1.tmp

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

相關文章