使用聯機SQL執行表空間還原(一)

eric0435發表於2020-07-05

使用disql執行表空間還原
介紹使用disql工具如何還原表空間。主要內容包括:
1.使用表空間完全備份還原表空間
2.使用表空間增量備份還原表空間
3.使用資料庫備份還原表空間

1.使用表空間完全備份還原表空間
表空間的還原、恢復操作是一次性完成,因此還原後不需要執行恢復操作。使用表空間完全備份還原表空間的完整步驟如下:
1) 配置歸檔。
2) 保證資料庫處於OPEN或MOUNT狀態。
3) 備份表空間。

SQL> backup tablespace main to ts_main_bak backupset 'E:\dmdbms\backup\ts_main_bak';
操作已執行
已用時間: 00:00:01.069. 執行號:9.

4) 校驗表空間備份。此步驟為可選,如果確定備份檔案合法可不進行備份校驗。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_main_bak');
行號       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_main_bak')
---------- ------------------------------------------------------
1          1
已用時間: 17.741(毫秒). 執行號:10.

5) 修改表空間為離線。

SQL> alter tablespace main offline;
操作已執行
已用時間: 137.581(毫秒). 執行號:11.

6) 還原表空間。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_main_bak';
操作已執行
已用時間: 276.897(毫秒). 執行號:12.

7) 修改表空間為聯機。

SQL> alter tablespace main online;
操作已執行
已用時間: 17.971(毫秒). 執行號:13.

2.使用表空間增量備份還原表空間
在增量備份與基備份同目錄情況下,使用增量備份還原表空間步驟與完全備份一致。當增量備份與基備份不在同一個目錄下時需要使用RESTORE TABLESPACE...WITH BACKUPDIR語句還原。這裡以後面一種情況為例說明使用增量備份還原表空間。步驟如下:
1) 配置歸檔。
2) 保證資料庫處於OPEN或MOUNT狀態。
3) 完全備份表空間。

SQL> backup tablespace main to ts_main_full_bak backupset 'E:\dmdbms\backup\ts_main_full_bak';
操作已執行
已用時間: 00:00:01.095. 執行號:35.

4) 多次增量備份表空間。

SQL> begin
2   for i in 1 .. 100 loop
3    insert into t1 values(i);
4   end loop;
5   commit;
6   end;
7   /
DMSQL 過程已成功完成
已用時間: 3.383(毫秒). 執行號:36.
SQL> backup tablespace main increment with backupdir 'E:\dmdbms\backup\ts_main_full_bak' backupset 'E:\dmdbms\backup1\ts_main_incr_bak_01';
操作已執行
已用時間: 00:00:01.079. 執行號:37.
SQL> begin
2   for i in 101 .. 200 loop
3   insert into t1 values(i);
4   end loop;
5   end;
6   /
DMSQL 過程已成功完成
已用時間: 1.274(毫秒). 執行號:38.
SQL> alter system switch logfile;
操作已執行
已用時間: 14.166(毫秒). 執行號:0.
SQL> backup tablespace main increment with backupdir 'E:\dmdbms\backup\ts_main_full_bak','E:\dmdbms\backup1\ts_main_incr_bak_01' backupset 'E:\dmdbms\backup2\ts_main_incr_bak_02';
操作已執行
已用時間: 00:00:01.081. 執行號:39.

5) 校驗表空間備份。此步驟為可選,如果確定備份檔案合法可不進行備份校驗。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_main_full_bak');
行號       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_main_full_bak')
---------- -----------------------------------------------------------
1          1
已用時間: 20.931(毫秒). 執行號:40.
SQL> select sf_bakset_check('disk','E:\dmdbms\backup1\ts_main_incr_bak_01');
行號       SF_BAKSET_CHECK('disk','E:\dmdbms\backup1\ts_main_incr_bak_01')
---------- ---------------------------------------------------------------
1          1
已用時間: 31.184(毫秒). 執行號:41.
SQL> select sf_bakset_check('disk','E:\dmdbms\backup2\ts_main_incr_bak_02');
行號       SF_BAKSET_CHECK('disk','E:\dmdbms\backup2\ts_main_incr_bak_02')
---------- ---------------------------------------------------------------
1          1
已用時間: 25.171(毫秒). 執行號:42.

6) 修改表空間為離線

SQL> alter tablespace main offline;
操作已執行
已用時間: 98.420(毫秒). 執行號:43.

7) 使用增量備份E:\dmdbms\backup2\ts_main_incr_bak_02還原表空間。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup2\ts_main_incr_bak_02' with backupdir 'E:\dmdbms\backup\ts_main_full_bak','E:\dmdbms\backup1\ts_main_incr_bak_01';
操作已執行
已用時間: 370.046(毫秒). 執行號:44.

8) 修改表空間為聯機。

SQL> alter tablespace main online;
操作已執行
已用時間: 15.717(毫秒). 執行號:45.
SQL> select count(*) from t1;
行號       COUNT(*)
---------- --------------------
1          200
已用時間: 1.345(毫秒). 執行號:46.

3.使用資料庫備份還原表空間
使用資料庫備份還原表空間可以快速還原一個或多個表空間,而不影響資料庫中其他的表空間和物件。在資料庫中僅有特定的表空間損壞且沒有表空間備份的情況下,可以選擇使用此種方式還原。
具體步驟如下:
1) 配置歸檔。
2) 保證資料庫處於OPEN或MOUNT狀態。
3) 建立資料庫完全備份。

SQL> backup database full to db_jydm_full_bak backupset 'E:\dmdbms\backup\ts_jydm_full_bak';
操作已執行
已用時間: 00:00:01.198. 執行號:50.

4) 校驗表空間備份。此步驟為可選,如果確定備份檔案合法可不進行備份校驗。

SQL> select sf_bakset_check('disk','E:\dmdbms\backup\ts_jydm_full_bak');
行號       SF_BAKSET_CHECK('disk','E:\dmdbms\backup\ts_jydm_full_bak')
---------- -----------------------------------------------------------
1          1
已用時間: 46.115(毫秒). 執行號:51.

5) 修改表空間為離線。

SQL> alter tablespace main offline;
操作已執行
已用時間: 96.596(毫秒). 執行號:52.

6) 還原表空間。

SQL> restore tablespace main from backupset 'E:\dmdbms\backup\ts_jydm_full_bak';
操作已執行
已用時間: 326.842(毫秒). 執行號:53.

7) 修改表空間為聯機。

SQL> alter tablespace main online;
操作已執行
已用時間: 17.338(毫秒). 執行號:54.
SQL> select count(*) from t1;
行號       COUNT(*)
---------- --------------------
1          200
已用時間: 1.969(毫秒). 執行號:55.


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

相關文章