標籤:淺一下oracle熱備份users資料表空間
資料庫要運行在歸檔模式下:
archive log list
shutdown immediate
startup mount
alter database archivelog;
alter database open;
archive log list
熱備份users資料表空間:
(1)實驗環境相關資訊查看
建立備份路徑
mkdir -p /home/oracle/hotbk/
這裡為了測試更改歸檔檔案的路徑
mkdir /home/oracle/arc_orcl_dest1/alter system set log_archive_dest_1=‘location=/home/oracle/arc_orcl_dest1/‘;select sequence#,name from v$archived_log;alter system switch logfile;alter system switch logfile;alter system switch logfile;select sequence#,name from v$archived_log;
查看資料檔案
SQL> select name from v$datafile;NAME----------------------------------------------------------------------------------------------------/u01/app/oracle/oradata/orcl/system01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/users01.dbfElapsed: 00:00:00.00
查看錶空間
SQL> select name from v$tablespace;NAME------------------------------SYSTEMSYSAUXUNDOTBS1USERSTEMPElapsed: 00:00:00.00
查看備份資訊
SQL> select * from v$backup; FILE# STATUS CHANGE# TIME---------- ------------------ ---------- --------- 1 NOT ACTIVE 0 2 NOT ACTIVE 0 3 NOT ACTIVE 0 4 NOT ACTIVE 1027726 27-SEP-16Elapsed: 00:00:00.00
SQL> select name,file# from v$datafile 2 ;NAME---------------------------------------------------------------------------------------------------- FILE#----------/u01/app/oracle/oradata/orcl/system01.dbf 1/u01/app/oracle/oradata/orcl/sysaux01.dbf 2/u01/app/oracle/oradata/orcl/undotbs01.dbf 3/u01/app/oracle/oradata/orcl/users01.dbf 4Elapsed: 00:00:00.00
查看檔案號及其檢查點的編號
SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE#---------- ------------------ 1 1027476 2 1027476 3 1027476 4 1027726Elapsed: 00:00:00.01
SQL> select file#,checkpoint_change# from v$datafile_header; FILE# CHECKPOINT_CHANGE#---------- ------------------ 1 1027476 2 1027476 3 1027476 4 1027726Elapsed: 00:00:00.01
(2)真正開始備份
這裡備份users這個資料表空間。
alter tablespace users begin backup;!cp -v /u01/app/oracle/oradata/orcl/users01.dbf /home/oracle/hotbk/alter tablespace users end backup;
查看備份點
SQL> select * from v$backup; FILE# STATUS CHANGE# TIME---------- ------------------ ---------- --------- 1 NOT ACTIVE 0 2 NOT ACTIVE 0 3 NOT ACTIVE 0 4 NOT ACTIVE 1028454 27-SEP-16Elapsed: 00:00:00.00
(3)類比資料修改
SQL> select owner,table_name from dba_tables where tablespace_name=‘USERS‘;
create table scott.ob2 as select * from dba_objects;
select count(*) from scott.ob2;
commit;
alter system switch logfile;
查看資料變化情況
SQL> select file#,checkpoint_change# from v$datafile; FILE# CHECKPOINT_CHANGE#---------- ------------------ 1 1028188 2 1028188 3 1028188 4 1028454Elapsed: 00:00:00.00SQL> select file#,checkpoint_change# from v$datafile_header; FILE# CHECKPOINT_CHANGE#---------- ------------------ 1 1028188 2 1028188 3 1028188 4 1028454Elapsed: 00:00:00.00
和之前的比較,發現checkpoint_change發生了變化。
查看有沒有修複的資料區塊:
SQL> select * from v$recover_file;no rows selectedElapsed: 00:00:00.00
類比資料檔案損壞
SQL> !rm -f /u01/app/oracle/oradata/orcl/users01.dbf
###### alter system flush buffer_cache;這裡不要執行
## startup force
SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 4041949184 bytesFixed Size 2259520 bytesVariable Size 889193920 bytesDatabase Buffers 3137339392 bytesRedo Buffers 13156352 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: ‘/u01/app/oracle/oradata/orcl/users01.dbf‘
select * from v$recover_file;
SQL> select * from v$recover_file; FILE# ONLINE ONLINE_ ERROR---------- ------- ------- ----------------------------------------------------------------- CHANGE# TIME---------- --------- 4 ONLINE ONLINE FILE NOT FOUND 0Elapsed: 00:00:00.01
備忘:這裡4號檔案找不到
還原:使用備份的檔案代替丟失的檔案
cp /home/oracle/hotbk/users01.dbf /u01/app/oracle/oradata/orcl/users01.dbf
再查看一下情況:
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR
---------- ------- ------- -----------------------------------------------------------------
CHANGE# TIME
---------- ---------
4 ONLINE ONLINE
1028454 27-SEP-16
報ERROR錯誤
恢複:使用備份之後的日誌對資料檔案進行前滾(把資料修改重現)
recover datafile 4;
SQL> recover datafile 4;
Media recovery complete.
SQL> select * from v$recover_file;
no rows selected
Elapsed: 00:00:00.00
SQL> alter database open;
Database altered.
Elapsed: 00:00:01.43
SQL> select count(*) from scott.ob2;
COUNT(*)
----------
86344
Elapsed: 00:00:00.02
到這裡已經搞定了!!!!
寫得不好,如果有什麼錯誤請指出,謝謝!!!!
本文出自 “梁小明的部落格” 部落格,請務必保留此出處http://7038006.blog.51cto.com/7028006/1856875
淺一下oracle熱備份users資料表空間