天天看點

Oracle 熱備份

熱備份較冷備份的主要差別就是不會丢失在備份後更新的資料,

下面為SQL腳本:

CREATE TABLE TEST

(

 T_ID NUMBER,

 T_VALUE VARCHAR2(30)

);

/

INSERT INTO TEST VALUES(100,'WANG');

INSERT INTO TEST VALUES(200,'DONG');

COMMIT;

SELECT * FROM TEST;

 T_ID T_VALUE

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

 100 WANG

 200 DONG

1.SHUTDOWN IMMEDIATE;//關閉資料庫

2.STARTUP MOUNT//啟動資料執行個體,加載資料庫

注:STARTUP NOMOUNT//啟動資料執行個體

    STARTUP MOUNT//啟動資料執行個體,加載資料庫

    STARTUP //啟動資料執行個體,加載資料庫并打開資料庫

3.ALTER DATABASE ARCHIVELOG;//設定資料庫日志為存檔模式

4.ALTER SYSTEM SET LOG_ARCHIVE_START=TRUE SCOPE=SPFILE;//重新開機資料庫

5.ALTER DATABASE OPEN;//打開資料庫

6.ALTER TABLESPACE USERS BEGIN BACKUP;//将資料庫設定備份模式

7.HOST COPY D:\oracle\oradata\orcl\*.dbf D:\BAK\ //拷貝資料檔案至備份檔案中

8.ALTER TABLESPACE USERS END BACKUP;//結束備份狀态

9.ALTER SYSTEM SWITCH LOGFILE;//切換日志,使目前日志歸檔

--------至此,熱備份已經完成,備份檔案儲存在D:\BAK\目錄下--------

此時再插入資料,

INSERT INTO TEST VALUES(300,'XIN');

以下是故障重制

1.SHUTDOWN IMMEDIATE

2.STARTUP MOUNT

3.HOST DEL D:\oracle\oradata\orcl\USER01.dbf //故意删除一個資料檔案,制造故障

4.SHUTDOWN IMMEDIATE

5.STARTUP

 //此時會警告,無法找到指定的檔案DATA FILE 4,即是剛才删掉的資料檔案,DATA FILE 4隻是

個代号,也有可能是DATA FILE 1,DATA FILE 2,等等

6.ALTER DATABASE DATAFILE 4 OFFLINE DROP;//讓這個出故障的檔案暫時先脫機

7.ALTER DATABASE OPEN;//打開資料庫

8.HOST COPY D:\BAK\ HOST COPY D:\oracle\oradata\orcl\*.dbf//将前面備份的檔案拷貝到系統目錄中

9.RECOVER DATAFILE 4;//這一步,偶爾會出錯,無法正确執行,而且無法正常關閉資料庫,請如此這般

操作,SHUTDOWN ABORT; STARTUP;

10.ALTER DATABASE DATAFILE 4 ONLINE;

11.SELECT * FROM TEST;

 300 XIN

發現,備份之後又更新的資料沒有丢失!