Oracle 18C新特性之PDB snapshot(快照) Carousel
| 關於PDB快照Carousel
Oracle18c新特新 pdb snapshot Carousel提供了在pdb級別下手工或者自動生成快照的功能,為開發測試用例提供了便捷。CDB為local undo和歸檔模式下,指定MAX_PDB_SNAPSHOTS控制pdb最多生成快照的數量,當快照超過最大數量時,會覆蓋最舊的快照,我們可以透過快照生成我們想測試使用的相應pdb,下面將帶你領略下新特性的優勢與劣勢。
如下圖:pdb1_prod為生產PDB,然後建立refresh PDB pdb1_test_master,讓refreshPDB pdb1_test_master每天生成快照。當你需要測試用例時,那麼你可以指定snapshot建立PDB。
一個通用的策略是每天在同一時間生成PDB快照。另一種策略是在資料載入之前手動抓取快照。在這兩種情況下,都可以從snapshot Carousel中使用任何可用的快照恢復PDB。
1. PDB快照Carousel是如何工作的
資料庫按需或自動建立carousel中的連續副本。當達到快照限制時,資料庫將覆蓋舊的快照。PDB快照的檔案存放在檔案系統上的物理檔案。其不包含資料庫歸檔檔案archive log。預設存放在PDB的資料檔案相同的目錄中。系統自動生成的snapshot以snap_開始,唯一標示結尾的命名規則,包含了快照當前的SCN,並且副檔名為.PDB。
相關檢視:MAX_PDB_SNAPSHOTS、DBA_PDB_SNAPSHOTS、DBA_PDBS
| 設定PDB快照的最大數量
使用MAX_PDB_SNAPSHOTS引數設定PDB快照最大快照數,首先登入到需要設定的PDB中,透過檢視CDB_PROPERTIES查詢當前MAX_PDB_SNAPSHOT值,可以使用alter pluggabledatabase/alter database更改MAX_PDB_SNAPSHOTS值。
如下為設定PDB snapshot的例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14 |
SET
LINESIZE 1500 COL CON_ID FORMAT 99999 COL PROPERTY_NAME FORMAT a17 COL PDB_NAME FORMAT a9 COL VALUE FORMAT a12 COL DESCRIPTION FORMAT a90 SELECT
r.CON_ID, p.PDB_NAME, PROPERTY_NAME,PROPERTY_VALUE
AS
value, DESCRIPTION FROM
CDB_PROPERTIES r,CDB_PDBS p WHERE
r.CON_ID = p.CON_ID
AND
PROPERTY_NAME
LIKE
'MAX_PDB%' ORDER
BY
PROPERTY_NAME; CON_ID PDB_NAME PROPERTY_NAME VALUE DESCRIPTION ----- --------- ----------------- --------- ---------------------------------------------------------------
3 ORCLPDB MAX_PDB_SNAPSHOTS 7 maximum number
of
snapshots
for
a given PDB
3 ORCLPDB MAX_PDB_STORAGE UNLIMITED Maximum
Space
Usage
of
Datafiles
and
Local
Tempfiles
in
Container |
下面語句將當前pdb的快照數設定為7
1
2
3
4
5
6 |
進入PDB YAO.CHONG>
alter
session
set
container = ORCLPDB; Session altered. Elapsed: 00:00:00.01 YAO.CHONG>
ALTER
PLUGGABLE
DATABASE
SET
MAX_PDB_SNAPSHOTS=7; Pluggable
database
altered. |
想要刪除所有的快照,我們只需要執行下面一條命令即可。
1
2
3
4
5
6
7
8
9
10 |
ALTER
PLUGGABLE
DATABASE
SET
MAX_PDB_SNAPSHOTS=0; SET
LINESIZE 150 COL CON_NAME FORMAT a10 COL SNAPSHOT_NAME FORMAT a25 COL SNAP_SCN FORMAT 9999999 COL FULL_SNAPSHOT_PATH FORMAT a45 SELECT
CON_ID,CON_NAME,SNAPSHOT_NAME,SNAPSHOT_SCN
AS
snap_scn, FULL_SNAPSHOT_PATH FROM
DBA_PDB_SNAPSHOTS ORDER
BY
SNAP_SCN; ##都沒了 |
| 配置自動生成PDB快照
預設情況下都是手動生成快照,使用SNAPSHOT MODE EVERY子句自動產生PDB快照。
1
2
3
4 |
SELECT
SNAPSHOT_MODE
"S_MODE"
, SNAPSHOT_INTERVAL/60
"SNAP_INT_HRS"
FROM
DBA_PDBS; S_MODE SNAP_INT_HRS ------ ------------ MANUAL |
更改自動建立模式為每24小時自動生成PDB快照
1
2
3
4
5
6
7
8
9
10
11
12 |
進入PDB裡面去執行 YAO.CHONG >
alter
session
set
container = ORCLPDB; Session altered. Elapsed: 00:00:00.01 YAO.CHONG>
ALTER
PLUGGABLE
DATABASE
SNAPSHOT MODE EVERY 24 HOURS; Pluggable
database
altered. Elapsed: 00:00:00.17 #確認自動生成快照的時間間隔 SELECT
SNAPSHOT_MODE
"S_MODE"
, SNAPSHOT_INTERVAL/60
"SNAP_INT_HRS"
FROM
DBA_PDBS; S_MODE SNAP_INT_HRS ------ ------------ AUTO 24 |
下面是每2小時生成快照的例子
首先登入到CDB根目錄。以下語句從名為cdb1_pdb1的現有PDB建立cdb1_pdb3,並將其配置為每2小時自動獲取快照:
1
2
3 |
CREATE
PLUGGABLE
DATABASE
cdb1_pdb3
FROM
cdb1_pdb1 FILE_NAME_CONVERT=(
'cdb1_pdb1'
,
'cdb1_pdb3'
) SNAPSHOT MODE EVERY 120 MINUTES; |
| 手工建立PDB快照
使用ALTER PLUGGABLE DATABASE/CREATE PLUGGABLE DATABASE手動生成快照。使用ALTER PLUGGABLE DATABASE SNAPSHOT語句需要滿足的要求。
-
CDB必須是LOCAL UNDO模式
-
使用者必須有許可權建立和刪除PDB
1
2
3 |
YAO.CHONG>
ALTER
PLUGGABLE
DATABASE
SNAPSHOT test_snapshot; Pluggable
database
altered. Elapsed: 00:03:15.66/快照大小481M,3分鐘, |
下面查詢出當前PDB的快照
1
2
3
4
5
6
7
8
9
10
11
12 |
SET
LINESIZE 150 COL CON_NAME FORMAT a10 COL SNAPSHOT_NAME FORMAT a30 COL SNAP_SCN FORMAT 9999999 COL FULL_SNAPSHOT_PATH FORMAT a70 SELECT
CON_ID, CON_NAME, SNAPSHOT_NAME,SNAPSHOT_SCN
AS
snap_scn, FULL_SNAPSHOT_PATH FROM
DBA_PDB_SNAPSHOTS ORDER
BY
SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN FULL_SNAPSHOT_PATH ------- ---------- -------------------- -------- ---------------------------------------------
3 CDB1_PDB1 CDB1_PDB1_B4WEDLOAD 2962078 /disk1/oracle/dbs/snap_3489077498_2962078.pdb
3 CDB1_PDB1 CDB1_PDB1_AFWEDLOAD 2962938 /disk1/oracle/dbs/snap_3489077498_2962938.pdb |
如果你不指定快照名,系統自動生成唯一名稱的快照,下面即為不指定名字建立快照
1
2
3
4
5
6
7
8
9
10
11
12 |
ALTER
PLUGGABLE
DATABASE
SNAPSHOT; SET
LINESIZE 150 COL CON_NAME FORMAT a10 COL SNAPSHOT_NAME FORMAT a25 COL SNAP_SCN FORMAT 9999999 COL FULL_SNAPSHOT_PATH FORMAT a45 SELECT
CON_ID, CON_NAME, SNAPSHOT_NAME,SNAPSHOT_SCN
AS
snap_scn, FULL_SNAPSHOT_PATH FROM
DBA_PDB_SNAPSHOTS ORDER
BY
SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN FULL_SNAPSHOT_PATH ---------- ---------- ------------------------- -------- ----------------------------------------------------
3 ORCLPDB SNAP_3034367141_987737800 2995234 /home/oradata/ORCL/orclpdb/snap_3034367141_2995234.pdb |
| 刪除PDB快照
將MAX_PDB_SNAPSHOTS設定為0,即刪除所有PDB快照,同時也關閉此功能。同樣也可以使用ALTER PLUGGABLE DATABASE刪除當前的快照。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
SET
LINESIZE 150 COL CON_NAME FORMAT a10 COL SNAPSHOT_NAME FORMAT a25 COL SNAP_SCN FORMAT 9999999 COL FULL_SNAPSHOT_PATH FORMAT a45 SELECT
CON_ID,CON_NAME,SNAPSHOT_NAME,SNAPSHOT_SCN
AS
snap_scn, FULL_SNAPSHOT_PATH FROM
DBA_PDB_SNAPSHOTS ORDER
BY
SNAP_SCN; CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN FULL_SNAPSHOT_PATH ---------- ---------- ------------------------- -------- -----------------------------------------------------
3 ORCLPDB CDB_CNDBA_20180813151200 2970060 /home/oradata/ORCL/orclpdb/snap_3034367141_2970060.pdb
3 ORCLPDB SNAP_3034367141_987737800 2995234 /home/oradata/ORCL/orclpdb/snap_3034367141_2995234.pdb ALTER
PLUGGABLE
DATABASE
DROP
SNAPSHOT CDB_CNDBA_20180813151200; 再次查詢PDB快照已經被刪除 CON_ID CON_NAME SNAPSHOT_NAME SNAP_SCN FULL_SNAPSHOT_PATH ---------- ---------- ------------------------- -------- ---------------------------------------------------
3 ORCLPDB SNAP_3034367141_987737800 2995234 /home/oradata/ORCL/orclpdb/snap_3034367141_2995234.pdb |
| 從snapshot建立PDB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
alter
system
set
db_create_file_dest =
'/home/oradata/ORCL/orclpdb'
; conn /
as
sysdba YAO.CHONG>
create
pluggable
database
pdb_snap_test
from
orclpdb using snapshot test_snapshot; Pluggable
database
created. Elapsed: 00:00:39.13 YAO.CHONG> show pdbs; CON_ID CON_NAME
OPEN
MODE RESTRICTED ---------- ------------------------------ ---------- ----------
2 PDB$SEED
READ
ONLY
NO
3 ORCLPDB
READ
WRITE
NO
4 PDB_SNAP_TEST MOUNTED YAO.CHONG>
alter
pluggable
database
PDB_SNAP_TEST
open
; Pluggable
database
altered. Elapsed: 00:00:09.28 YAO.CHONG>
alter
pluggable
database
PDB_SNAP_TEST
close
; Pluggable
database
altered. Elapsed: 00:00:01.11 YAO.CHONG>
drop
pluggable
database
PDB_SNAP_TEST including datafiles; Pluggable
database
dropped. Elapsed: 00:00:00.67 |
| 基於SCN或時間點生產快照庫
在閱讀官方文件時,看到生成PDB可以基於SCN,我心中不禁暗喜,當再仔細查閱一番則不然,簡直萬念俱寂、黯然銷魂。提供的基於SCN生成的快照庫只能是基於當前生成快照時間點的SCN,似乎有些雞肋。
1 |
create
pluggable
database
pdb_snap_test
from
orclpdb using snapshot
at
SCN 3620951; |
與recover database until scn指定scn方式開啟資料庫不同,pdb snapshot Carousel指定scn生成的PDB只能是建立snapshot時的固定scn,並且生成快照與snapshot生成pdb的過程中佔據了大量的物理空間與IO資源。
那麼問題來了,說了這麼多關於PDB snapshot Carousel的優勢與好處,是否就說明已經找到了最佳的解決方案呢?
Hold on.
凡事有利也有弊,同樣PDB snapshot Carousel也不能倖免。
快照數量受限
雖然能夠做到Carousel輪轉,但畢竟數量有限,較為死板。在使用者的實際測試環境中條件複雜多變,會限制測試環境的搭建.
佔據大量物理空間與IO資源
對於當前使用者動輒幾十T的資料量,在生成snapshot與snapshot建立pdb的過程中,消耗的時間和佔據的物理資源是巨大的。
拘泥固定時間點
對於PDBsnapshot Carouse而言,只能基於固定時間,即快照點建立,無法根據測試需要靈活指定時間點。面對不斷變化的測試需求,如此死板的模式明顯是不可能滿足要求的。
版本受限
最後是客觀條件的限制,利用新特性需要滿足是在18C的環境下且啟用了PDB功能,但目前很多使用者依然是10G\11G\12C的環境,因此也僅僅只能遠觀而無法上手,對於實際工作很難產生推動作用。
說到這,是否還有更好的解決辦法呢?
答案是必須有!
沃趣科技QBackup資料庫備份容災雲平臺 ,可基於指定的的任意時間點建立開發測試環境,精確到秒級。是一款集合了CDP備份,歷史資料秒極恢復,災備保護等功能的一體化雲平臺。
支援主流的Oracle、MySQL資料庫,可同時對大量資料庫做集中式備份和管理,並對備份進行持續校驗以確保資料的可恢復性。此外,QBackup還可用於應用測試、預釋出、效能最佳化、POC等諸多應用場景。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2216234/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 18C新特性之PDB snapshot Carousel--PDB快照輪播Oracle
- 18C新特性之PDB snapshot Carousel,夠用嗎?
- 【DataGuard】Oracle 11g DataGuard 新特性之 Snapshot Standby DatabaseOracleDatabase
- Oracle 12.2的新特性之PDB級別閃回Oracle
- Oracle 12.2 新特性: Online PDB relocate (PDB hot move)Oracle
- ORACLE 12C新特性——CDB與PDBOracle
- Oracle 12.2新特性: PDB級閃回資料庫(Flashback PDB)Oracle資料庫
- ORACLE 18C 19C 20C新特性Oracle
- Oracle 18c新特性詳解:In-Memory 專題Oracle
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle 12c 新特性之 PDB 級別閃回資料庫Oracle資料庫
- Oracle 18c新特性:多租戶艦隊 CDB FleetOracle
- Oracle 18c新特性詳解-多租戶專題Oracle
- Oracle 快照控制檔案(snapshot control file)Oracle
- Oracle快照控制檔案(snapshot control file)Oracle
- Oracle 12C 新特性之 PDB熱克隆(本地克隆、遠端異機克隆)Oracle
- snapshot standby快照備庫角色
- LVM快照Snapshot備份LVM
- 開工大吉:Oracle 18c已經發布及新特性介紹Oracle
- Oracle 12.2 新特性 | PDB不同字符集變更深入解析Oracle
- Oracle 12.2 新特性:線上PDB資料庫克隆(Pluggable Hot Clone)Oracle資料庫
- oracle 11g中的snapshot standby特性Oracle
- Data Guard新特性:快照備用資料庫資料庫
- Oracle 12c新特性之Sequence的Session特性OracleSession
- Oracle 11g 新特性之DRCPOracle
- Oracle11g新特性之editionOracle
- Oracle 11g新特性之SecureFilesOracle
- 分而治之:Oracle 18c及12.2分割槽新特性的N種優化實踐Oracle優化
- Oracle 18c bug 執行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY報錯Oracle
- Oracle 12c 新特性之 temp undoOracle
- Oracle12c新特性之基本操作Oracle
- (轉)oracle10g新特性之 flashbackOracle
- Oracle11.2新特性之儲存Oracle
- Oracle 12C 新特性之 db預設字符集AL32UTF8、PDB支援不同字符集Oracle
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL
- Oracle11新特性——PLSQL新特性(五)OracleSQL
- Oracle11新特性——PLSQL新特性(四)OracleSQL