Oracle 12cbigfile表空間物件遷移
Oracle bigfile表空間中物件移動到普通表空間,由於bigfile對日常的維護,管理和備份帶來一些不便,經過評估決定將bigfile中的物件移到普通表空間。
環境說明:資料庫 Oracle 12c-12.1 OS:HP-UX
以下為操作步驟:
在操作之前確保資料庫已完成rman備份,以便遇到問題時,可以及時進行恢復。
1、確定要移動的物件和物件大小
SQL>select object_name,object_type from dba_objects where tablespace_name='APP_TBS'; SQL>select owner,TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='APP_TBS'; SQL>SELECT owner, segment_name, segment_type, partition_name, ROUND(bytes/(1024*1024),2) SIZE_MB, tablespace_name FROM DBA_SEGMENTS WHERE SEGMENT_TYPE IN ('TABLE', 'TABLE PARTITION', 'TABLE SUBPARTITION','INDEX', 'INDEX PARTITION', 'INDEX SUBPARTITION', 'TEMPORARY', 'LOBINDEX', 'LOBSEGMENT', 'LOB PARTITION') AND TABLESPACE_NAME='APP_TBS' ORDER BY bytes DESC;
2、檢查表的並行度
SQL>select owner,TABLE_NAMETABLESPACE_NAME from dba_tables where TABLESPACE_NAME='APP_TBS';
3、檢查索引並行度
SQL>select index_name, degree,status from dba_indexes where table_name='&table' ;
4、生成移動物件的指令碼
(1)生成move table的指令碼
SQL>select 'ALTER TABLE '||owner||'.'||table_name||' move tablespace '||'APP_TBS_TBS;' from dba_tables where tablespace_name='APP_TBS';
如果表大於2G,可以使用parallel選項並並行移動表,
select 'ALTER TABLE '||owner||'.'||table_name||' move tablespace '||'APP_TBS_TBS parallel 8;' from dba_tables where tablespace_name='APP_TBS';
(2)生成移動分割槽表的指令碼
--生成移動空分割槽表的指令碼
SQL>select TABLE_OWNER,TABLE_NAME,PARTITION_NAME,'ALTER TABLE '||TABLE_OWNER ||'.'||table_name||' MOVE PARTITION '||partition_name||' TABLESPACE APP_TBS_TBS ;' SQLT from dba_tab_partitions where TABLESPACE_NAME='APP_TBS' and PARTITION_NAME not in(SELECT segment_name FROM DBA_SEGMENTS WHERE SEGMENT_TYPE ='TABLE PARTITION' AND TABLESPACE_NAME='APP_TBS');
--生成分割槽表的指令碼
SQL>select 'ALTER TABLE '||TABLE_OWNER ||'.'||table_name||' MOVE PARTITION '||partition_name||' TABLESPACE APP_TBS_TBS UPDATE INDEXES;' from dba_tab_partitions where TABLESPACE_NAME = 'APP_TBS';
(3)生成移動子分割槽的指令碼
SQL>SELECT 'ALTER TABLE ' ||TABLE_OWNER ||'.' ||TABLE_NAME ||' MOVE SUBPARTITION ' ||SUBPARTITION_NAME ||' TABLESPACE APP_TBS_TBS parallel 8 UPDATE INDEXES;' FROM DBA_TAB_SUBPARTITIONS where TABLESPACE_NAME = 'APP_TBS';"
(4)生成修改分割槽表的預設表空間指令碼
SELECT 'ALTER TABLE ' ||TABLE_OWNER ||'.' ||TABLE_NAME ||' MODIFY DEFAULT ATTRIBUTES FOR PARTITION ' ||PARTITION_NAME ||' TABLESPACE APP_TBS_TBS;' FROM DBA_tab_partitions WHERE tablespace_name='APP_TBS';
(5)生成移動lob欄位的指令碼
SQL>select 'ALTER TABLE'||owner||'.'||table_name||' MOVE tablespace APP_TBS_tbs LOB('||column_name||') STORE AS (TABLESPACE APP_TBS_TBS);' from dba_lobs where tablespace_name='APP_TBS'; SQL>select 'ALTER TABLE'||table_owner||'.'||table_name||'MOVE partition'||Partition_name||'lo b('||column_name||')'||'STORE AS (TABLESPACE APP_TBS_TBS) ;'from dba_lob_partitions where TABLESPACE_NAME = 'APP_TBS';
(6)在新表空間rebuild索引
select 'ALTER INDEX '||owner||'.'||index_name||' REBUILD TABLESPACE '||'APP_TBS_IDX online parallel 8;' from dba_indexes where tablespace_name='APP_TBS';
(7)在新的表空間rebuild分割槽索引
SQL>select 'alter index '||owner||'.'||segment_name||' rebuild partition '|| partition_name||' tablespace APP_TBS_IDX;' from dba_segments where tablespace_name='APP_TBS' and segment_type='INDEX PARTITION';
(8)在新的表空間rebuild子分割槽分割槽索引
SQL>select 'alter index '||owner||'.'||segment_name|| ' rebuild subpartition '|| partition_name||' tablespace APP_TBS_IDX online;' from dba_segments where tablespace_name='APP_TBS' and segment_type='INDEX SUBPARTITION'; SQL>select 'alter index '||index_owner||'.'||index_name||'rebuild partition'||partition_name||'tablespace APP_TBS_TBS;' from dba_ind_partitions where tablespace_name='APP_TBS';
5、按照第4步生成的指令碼移動物件
6、檢查表空間使用率
SQL>select * from ( Select a.tablespace_name, to_char(a.bytes/1024/1024,'99,999.999') total_bytes, to_char(b.bytes/1024/1024,'99,999.999') free_bytes, to_char(a.bytes/1024/1024 - b.bytes/1024/1024,'99,999.999') use_bytes, to_char((1 - b.bytes/a.bytes)*100,'99.99') || '%' use from (select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) b where a.tablespace_name = b.tablespace_name union all select c.tablespace_name, to_char(c.bytes/1024/1024,'99,999.999') total_bytes, to_char( (c.bytes-d.bytes_used)/1024/1024,'99,999.999') free_bytes, to_char(d.bytes_used/1024/1024,'99,999.999') use_bytes, to_char(d.bytes_used*100/c.bytes,'99.99') || '%' use from (select tablespace_name,sum(bytes) bytes from dba_temp_files group by tablespace_name) c, (select tablespace_name,sum(bytes_cached) bytes_used from v$temp_extent_pool group by tablespace_name) d where c.tablespace_name = d.tablespace_name
7、檢查物件和索引狀態
SQL>select object_name,object_type from dba_objects where tablespace_name='APP_TBS'; SQL>select owner,TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='APP_TBS'; SQL>SELECT owner, segment_name, segment_type, partition_name, ROUND(bytes/(1024*1024),2) SIZE_MB, tablespace_name FROM DBA_SEGMENTS WHERE SEGMENT_TYPE IN ('TABLE', 'TABLE PARTITION', 'TABLE SUBPARTITION','INDEX', 'INDEX PARTITION', 'INDEX SUBPARTITION', 'TEMPORARY', 'LOBINDEX', 'LOBSEGMENT', 'LOB PARTITION') AND TABLESPACE_NAME='APP_TBS' ORDER BY bytes DESC;
8、修改索引和表的並行度
SQL>alter table tablename parallel 1; SQL>alter index indexname noparallel;
-the end
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-2789251/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE表批量遷移表空間Oracle
- 資料庫物件遷移表空間資料庫物件
- 表空間遷移
- 遷移表空間
- Oracle 不同平臺間表空間遷移Oracle
- Oracle中表空間、表、索引的遷移Oracle索引
- 【遷移】表空間transport
- RMAN遷移表空間
- Oracle 表空間資料檔案遷移Oracle
- 遷移SYSTEM表空間為本地管理表空間
- expdp/impdp 遷移表空間
- 遷移使用者物件從一個表空間到另外表空間物件
- 跨平臺表空間遷移(傳輸表空間)
- 遷移表到新的表空間
- table/index/LOBINDEX遷移表空間Index
- lob欄位表空間遷移
- 基於可傳輸表空間的表空間遷移
- (個人)Oracle 表空間資料檔案遷移(轉)Oracle
- Oracle表移動表空間Oracle
- oracle 表移動表空間Oracle
- MySQL 遷移表空間,備份單表MySql
- 表、索引遷移表空間alter table move索引
- 空間遷移
- 表空間遷移辦法補充
- 使用RMAN簡單遷移表空間
- Oracle10g新特性——利用RMAN遷移表空間Oracle
- 【資料遷移】使用傳輸表空間遷移資料
- Oracle10g新特性——利用RMAN遷移表空間(二)Oracle
- Oracle10g新特性——利用RMAN遷移表空間(一)Oracle
- oracle 表空間和表 read only遷移後不再read onlyOracle
- [轉移]ORACLE MOVE 表空間Oracle
- 線上遷移表空間資料檔案
- 不同使用者,不同表空間遷移
- 分割槽表對應的表空間遷移案例
- oracle 表空間下資料檔案遷移的三種方法Oracle
- 利用oracle10g_rman_convert_transportable tablespace遷移表空間Oracle
- mysql共享表空間擴容,收縮,遷移MySql
- InnoDB資料表空間檔案平滑遷移