nologging插入需再次備份一點分析
相信經常看見文章 blog上面提到用nologging方式插入資料後需要馬上進行備份,下面用兩個例子來對nologging方式插入後需要再次備份後才能進行完全恢復進行分析.
SQL>
create table t_nolog01 as select * from dba_objects where 1<>1;
Table
created
SQL>
alter table t_nolog01 nologging;
Table altered
SQL>
select table_name,logging from user_tables where table_name='T_NOLOG01';
TABLE_NAME LOGGING
------------------------------
-------
T_NOLOG01 NO
Rman>backup tablespace users;
對users表空間進行了一個備份,注意這裡在nologging插入前備份的
SQL>
insert /*+append*/ into t_nolog01 select * from dba_objects;
72141
rows inserted
SQL>
commit;
Commit complete
此時正常關閉資料庫刪除users表空間,然後用users表空間的備份恢復開啟資料庫後
SQL>
select count(*) from t_nolog01;
select
count(*) from t_nolog01
ORA-01578:
ORACLE 資料塊損壞 (檔案號 4, 塊號 171)
ORA-01110:
資料檔案 4:
'F:APPORADATAXIAOYUUSER01.DBF'
ORA-26040: 資料塊是使用 NOLOGGING 選項載入的
如果利用增量備份在nologging插入後再次備份,資料應該不會出現丟失,進行第二個測試:
SQL>
create table t_test_nolog01 tablespace test as select * from dba_objects where
1<>1;
Table
created
SQL>
alter table t_test_nolog01 nologging;
Table
altered
SQL>
select table_name,logging,tablespace_name from user_tables where
table_Name='T_TEST_NOLOG01';
TABLE_NAME LOGGING TABLESPACE_NAME
------------------------------
------- ------------------------------
T_TEST_NOLOG01 NO
TEST
RMAN> backup
incremental level 0 database;
SQL>
insert /*+append*/ into t_test_nolog01 select * from dba_Objects;
72143
rows inserted
SQL>
commit;
Commit complete
RMAN> backup
incremental level 1 database;
關閉資料庫後刪除test表空間的資料檔案,然後進行恢復。
RMAN> shutdown
immediate;
資料庫已關閉
資料庫已卸裝
Oracle 例項已關閉
RMAN> startup
mount;
RMAN> restore
datafile 6;
通道 ORA_DISK_1: 將資料檔案 00006 還原到 F:APPORADATAXIAOYUTEST01.DBF
通道 ORA_DISK_1: 正在讀取備份片段
E:RECOVERY_AREAXIAOYUBACKUPSET2012_0
1_MF_NNND0_TAG20120808T225808_824ZN1Q0_.BKP
通道 ORA_DISK_1: 段控制程式碼 =
E:RECOVERY_AREAXIAOYUBACKUPSET2012_08_08O1_
D0_TAG20120808T225808_824ZN1Q0_.BKP
標記 = TAG20120808T225808
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:15
完成 restore 於 08-8月 -12
RMAN> recover
datafile 6;
最後開啟資料庫檢視t_test_nolog01表的資料沒有丟失。
SQL>
select count(*) from t_test_nolog01;
COUNT(*)
----------
72143
從上面的測試中,發現瞭如果使用了nologging方式插入資料,由於redo不記錄資料庫的改變到重做日誌記錄中,此時如果資料檔案意外丟失,而利用之前的備份集進行恢復時,這部分資料是無法還原的,也提醒我們生產庫中不要一味的講究效率,nologging方式插入需要用到特定的環境中,例如大批次插入資料非歸檔環境,資料可以輕易抽取生成、中間表等,nologging是可以為系統提高效率的。
不過第二個測試中我們發現了增量備份的好處,差異增量備份備份上級或同級以來發生變化的資料塊,正好可以把nologging那部分的資料塊備份起來用於正常恢復。我們需要非常清楚對資料庫的相應的操作,不然有時候一味的求取效率,往往失去了資料的穩定性和安全性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1059121/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資源分享:一份簡歷中需重點突出哪些部分?
- 大資料分析工具需備哪些屬性大資料
- Oracle熱備份原理分析Oracle
- RMAN備份之備份多個備份集到帶庫(一)
- 一份優秀的資料分析報告應該具備這些要點!
- nocatalog模式下rman備份下controlfile記錄備份資訊的一點探究模式
- mysql之 xtrabackup原理、備份日誌分析、備份資訊獲取MySql
- 寶塔如何備份站點
- 故障分析 | MySQL 備份檔案靜默損壞一例分析MySql
- svn備份方式對比分析
- Oracle冷備份(一致備份)指令碼Oracle指令碼
- DBMS_STATS分析表與備份分析資訊
- Oracle 11g RMAN備份-一致備份Oracle
- 備份之全庫一致性備份
- Networker備份oracle單節點Oracle
- RAC一個節點恢復另一個節點在帶庫上的備份
- 主流備份軟體比較及特點分析,NBU/TSM/Legato/DP/Bakbone
- nologging對備庫的影響
- 記一次 IIS 站點配置檔案備份和還原,物理路徑檔案批量備份
- 備份一體機——為簡化備份架構而生架構
- MYSQL定時備份(一)MySql
- XtraBackup實踐(一)備份
- 學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理及實踐MySql
- 主流備份軟體比較及特點分析,NBU/TSM/Legato/DP/NetVault
- Oracle RMAN備份以及壓縮原理分析Oracle
- 從原始碼分析 XtraBackup 的備份原理原始碼
- MySQL · 答疑解惑 · 物理備份死鎖分析MySql
- 整庫(whole)備份-一致性整庫備份
- 梭子魚備份產品解決方案再次擴充套件儲存容量及效能套件
- oracle備份--離線備份Oracle
- 整庫(whole)備份-非一致性整庫備份
- RMAN備份恢復——RAC環境資料庫的備份(一)資料庫
- 完全備份、差異備份、增量備份的區別
- Backup And Recovery User's Guide-備份RMAN備份-使用RMAN備份備份集GUIIDE
- Backup And Recovery User's Guide-備份RMAN備份-關於備份的備份GUIIDE
- 再次分析壞盤拷貝
- Backup And Recovery User's Guide-備份RMAN備份-備份保留期對備份的備份的影響GUIIDE
- Mysql備份失敗案例(一)MySql