DM7使用Disql執行表還原的複雜用法
下面介紹一些表還原操作中複雜的還原場景。主要內容包括:
1. 指定還原時不重建索引
2. 指定還原時不重建約束
1.指定還原時不重建索引
表備份時會預設備份表中的索引,還原時使用RESTORE TABLE...WITHOUT INDEX...語句可選擇不還原索引。完整示例如下:
1) 保證資料庫為OPEN狀態。
2) 準備資料。建立待備份的表及索引。
SQL> create table tab_for_idx_01(c1 int); 操作已執行 已用時間: 6.323(毫秒). 執行號:108. SQL> begin 2 for i in 1 .. 10 loop 3 insert into tab_for_idx_01 values(i); 4 end loop; 5 end; 6 / DMSQL 過程已成功完成 已用時間: 1.236(毫秒). 執行號:109. SQL> create index i_tab_for_idx_01 on tab_for_idx_01(c1); 操作已執行 已用時間: 11.300(毫秒). 執行號:110.
3) 備份表資料。
SQL> backup table tab_for_idx_01 backupset 'E:\dmdbms\backup\tab_for_idx_01_bak'; 操作已執行 已用時間: 00:00:01.099. 執行號:111.
4) 校驗備份。此步驟為可選。
SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_idx_01_bak'); 行號 SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_idx_01_bak') ---------- ------------------------------------------------------------- 1 1 已用時間: 20.171(毫秒). 執行號:112.
5) 還原表資料,但不重建索引。
SQL> restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak'; restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak'; [-8327]:還原表中存在二級索引或冗餘約束. 已用時間: 31.373(毫秒). 執行號:0. SQL> restore table tab_for_idx_01 struct from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak'; 操作已執行 已用時間: 44.737(毫秒). 執行號:125. SQL> restore table tab_for_idx_01 without index from backupset 'E:\dmdbms\backup\tab_for_idx_01_bak'; 操作已執行 已用時間: 78.096(毫秒). 執行號:126. SQL> select * from tab_for_idx_01; 行號 C1 ---------- ----------- 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 SQL> select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_IDX_01'; 行號 OWNER TABLE_NAME INDEX_NAME ---------- ------ -------------- ------------- 1 SYSDBA TAB_FOR_IDX_01 INDEX33555549 已用時間: 35.494(毫秒). 執行號:132.
2.指定還原時不重建約束
表備份時會預設備份表中的索引定義,還原時使用RESTORE TABLE...WITHOUT CONSTRAINT...語句可選擇還原時不重建約束。完整示例如下:
1) 保證資料庫為OPEN狀態。
2) 準備資料。建立待備份的表及索引。
SQL> create table tab_for_cons_01(c1 int); 操作已執行 已用時間: 4.824(毫秒). 執行號:134. SQL> alter table tab_for_cons_01 add constraint unique_cons1 unique(c1); 操作已執行 已用時間: 7.979(毫秒). 執行號:135. SQL> select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_CONS_01'; 行號 OWNER TABLE_NAME INDEX_NAME ---------- ------ --------------- ------------- 1 SYSDBA TAB_FOR_CONS_01 INDEX33555551 2 SYSDBA TAB_FOR_CONS_01 INDEX33555552 已用時間: 32.121(毫秒). 執行號:136. SQL> select owner,constraint_name,constraint_type,table_name from dba_constraints where owner='SYSDBA' and table_name='TAB_FOR_CONS_01'; 行號 OWNER CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME ---------- ------ --------------- --------------- --------------- 1 SYSDBA UNIQUE_CONS1 U TAB_FOR_CONS_01 已用時間: 17.818(毫秒). 執行號:138. SQL> begin 2 for i in 1 .. 10 loop 3 insert into tab_for_cons_01 values(i); 4 end loop; 5 commit; 6 end; 7 / DMSQL 過程已成功完成 已用時間: 3.485(毫秒). 執行號:143.
3) 備份表資料。
SQL> backup table tab_for_cons_01 backupset 'E:\dmdbms\backup\tab_for_cons_01_bak'; 操作已執行 已用時間: 00:00:01.128. 執行號:144.
4) 校驗備份。此步驟為可選。
SQL> select sf_bakset_check('disk','E:\dmdbms\backup\tab_for_cons_01_bak'); 行號 SF_BAKSET_CHECK('disk','E:\dmdbms\backup\tab_for_cons_01_bak') ---------- -------------------------------------------------------------- 1 1 已用時間: 33.044(毫秒). 執行號:145.
5) 還原表資料,但不還原約束。
SQL> truncate table tab_for_cons_01; 操作已執行 已用時間: 5.036(毫秒). 執行號:146. SQL> select * from tab_for_cons_01; 未選定行 已用時間: 1.542(毫秒). 執行號:147. SQL> restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak'; restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak'; [-8327]:還原表中存在二級索引或冗餘約束. 已用時間: 33.927(毫秒). 執行號:0. SQL> restore table tab_for_cons_01 struct from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak'; 操作已執行 已用時間: 38.765(毫秒). 執行號:149. SQL> restore table tab_for_cons_01 without constraint from backupset 'E:\dmdbms\backup\tab_for_cons_01_bak'; 操作已執行 已用時間: 75.178(毫秒). 執行號:150. SQL> select * from tab_for_cons_01; 行號 C1 ---------- ----------- 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 10 rows got 已用時間: 2.870(毫秒). 執行號:151. SQL> select owner,table_name,index_name from dba_indexes where owner='SYSDBA' and table_name='TAB_FOR_CONS_01'; 行號 OWNER TABLE_NAME INDEX_NAME ---------- ------ --------------- ------------- 1 SYSDBA TAB_FOR_CONS_01 INDEX33555551 已用時間: 21.005(毫秒). 執行號:152.
查詢約束發現確實沒有被還原
SQL> select owner,constraint_name,constraint_type,table_name from dba_constraints where owner='SYSDBA' and table_name='TAB_FOR_CONS_01'; 未選定行 已用時間: 9.087(毫秒). 執行號:153.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2712630/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Disql執行表空間還原的複雜用法SQL
- DM7使用Disql執行表還原SQL
- DM7使用Disql執行表空間還原SQL
- DM7使用DMRMAN執行表空間還原
- DM7使用DMRMAN執行歸檔還原
- DM7使用dmrestore執行並行對映檔案還原REST並行
- DM7使用DMRMAN執行資料庫還原和恢復資料庫
- DM7使用dmrestore執行指定時間點或LSN還原REST
- DM7使用disql管理備份SQL
- DM7使用聯機執行SQL語句進行備份還原SQL
- DM7使用DMRMAN對資料庫執行指定對映檔案還原資料庫
- 使用聯機SQL執行表空間還原(一)SQL
- 達夢使用聯機SQL執行表空間還原(二)SQL
- DM7使用dmrestore工具還原資料庫REST資料庫
- DM7使用dmrestore工具利用歸檔日誌還原REST
- 達夢資料庫Disql用法詳解之Disql命令列命令用法介紹資料庫SQL命令列
- DM7使用DMRMAN執行歸檔備份
- DM7使用DMRAMN執行歸檔恢復
- DM7使用DMRMAN執行歸檔修復
- hive複雜資料型別的用法Hive資料型別
- DM7聯機執行SQL語句進行表備份SQL
- DM7使用DMRAMN執行備份集恢復
- linux中查詢find命令的複雜用法Linux
- DM7聯機執行SQL語句進行表空間備份SQL
- DM7使用DMRAMN執行更新DB_MAGIC恢復
- DM7使用DMRMAN執行RAC資料庫恢復資料庫
- 達夢資料庫Disql用法詳解之Disql啟動與登入資料庫SQL
- oracle表複雜查詢Oracle
- 中國式複雜報表真的有必要存在?如何解決複雜報表
- DM7使用離線工具DMRMAN執行資料庫備份資料庫
- mysqldump+mysqlbinlog執行備份與還原MySql
- Laravel使用MongoDB複雜的查詢LaravelMongoDB
- 使用 Bash 自動執行復雜任務
- 複雜報表設計之動態報表
- 複雜查詢還是直接寫sql吧SQL
- DM7使用DMRMAN工具執行備份集對映檔案匯出
- 操作複雜的CRM系統如何使用
- mysql多執行緒備份與還原工具mydumperMySql執行緒