10g線上重定義新特性——對單獨的分割槽進行線上重定義
10g的線上重定義還增加了對單獨一個分割槽執行線上重定義的功能。
由於分割槽的邏輯結構和表一致,因此對分割槽單獨執行線上重定義的時候,是不能修改邏輯結構的,因此對分割槽單獨執行線上重定義,只是進行物理結構的改變。所以分割槽線上重定義的主要意義在於不妨礙使用者對錶進行操作的情況下,改變分割槽的物理屬性。
看一個簡單的例子:
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> CREATE TABLE T
2 PARTITION BY RANGE (CREATED)
3 (
4 PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1-1', 'YYYY-MM-DD')),
5 PARTITION P2 VALUES LESS THAN (TO_DATE('2010-1-1', 'YYYY-MM-DD')),
6 PARTITION P3 VALUES LESS THAN (MAXVALUE)
7 )
8 AS SELECT ROWNUM ID, A.*
9 FROM USER_OBJECTS A;
表已建立。
SQL> ALTER TABLE T ADD CONSTRAINT PK_T PRIMARY KEY (ID);
表已更改。
SQL> CREATE INDEX IND_T_NAME ON T (OBJECT_NAME) LOCAL;
索引已建立。
SQL> CREATE TABLE T_INTER
2 TABLESPACE TEST
3 AS SELECT ROWNUM ID, A.*
4 FROM USER_OBJECTS A
5 WHERE 1 = 2;
表已建立。
SQL> CREATE INDEX IND_T_INTER_NAME ON T_INTER (OBJECT_NAME);
索引已建立。
SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME
2 FROM USER_TAB_PARTITIONS
3 WHERE TABLE_NAME = 'T';
TABLE_NAME PARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
T P1 YANGTK
T P2 YANGTK
T P3 YANGTK
SQL> SELECT TABLE_NAME, TABLESPACE_NAME
2 FROM USER_TABLES
3 WHERE TABLE_NAME = 'T_INTER';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T_INTER TEST
除了LOCAL索引對應的索引需要在目標表上建立,其他關聯物件都不需要建立:
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(USER, 'T')
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_INTER', PART_NAME => 'P1')
PL/SQL 過程已成功完成。
SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(USER, 'T', 'T_INTER', PART_NAME => 'P1')
PL/SQL 過程已成功完成。
SQL> SELECT TABLE_NAME, PARTITION_NAME, TABLESPACE_NAME
2 FROM USER_TAB_PARTITIONS
3 WHERE TABLE_NAME = 'T';
TABLE_NAME PARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
T P1 TEST
T P2 YANGTK
T P3 YANGTK
SQL> SELECT TABLE_NAME, TABLESPACE_NAME
2 FROM USER_TABLES
3 WHERE TABLE_NAME = 'T_INTER';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
T_INTER YANGTK
此時分割槽的線上重定義已經完成,不過對於GLOBAL INDEX,Oracle將其置為INVALID,需要手工重建:
SQL> SELECT INDEX_NAME, STATUS
2 FROM USER_INDEXES
3 WHERE TABLE_NAME = 'T';
INDEX_NAME STATUS
------------------------------ --------
PK_T UNUSABLE
IND_T_NAME N/A
SQL> SELECT INDEX_NAME, PARTITION_NAME, STATUS
2 FROM USER_IND_PARTITIONS
3 WHERE INDEX_NAME = 'IND_T_NAME';
INDEX_NAME PARTITION_NAME STATUS
------------------------------ ------------------------------ --------
IND_T_NAME P1 USABLE
IND_T_NAME P2 USABLE
IND_T_NAME P3 USABLE
SQL> ALTER INDEX PK_T REBUILD;
索引已更改。
SQL> SELECT INDEX_NAME, STATUS
2 FROM USER_INDEXES
3 WHERE TABLE_NAME = 'T';
INDEX_NAME STATUS
------------------------------ --------
PK_T VALID
IND_T_NAME N/A
SQL> DROP TABLE T_INTER PURGE;
表已刪除。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-607771/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 普通錶轉換分割槽表-線上重定義
- 線上重定義 ?普通錶轉換成分割槽表
- 海量資料處理_表分割槽(線上重定義)
- ORACLE 線上重新定義表分割槽表重定義為普通表。Oracle
- oracle 線上重定義Oracle
- Oracle線上重定義Oracle
- oracle分割槽表線上重定義欄位not null問題OracleNull
- ORACLE 普通錶轉換成分割槽表(線上重定義)Oracle
- 分割槽表和dbms_redefinition包線上重定義表
- 線上重定義分割槽表和NOLOGGING APPEND分割槽表對比APP
- 使用ORACLE線上重定義將普通表改為分割槽表Oracle
- ORACLE 普通錶轉換成分割槽表(線上重定義)(zt)Oracle
- oracle 表線上重定義Oracle
- oracle表線上重定義Oracle
- 【Oracle】線上重定義表Oracle
- Oracle的線上重定義(轉)Oracle
- 使用DBMS_REDEFINITION線上重定義表普通表為分割槽表
- 使用線上重定義方法改造普通表為分割槽表實戰
- 【Oracle】利用線上重定義的方式改變普通表為分割槽表Oracle
- 10g線上重定義新特性——關聯物件自動重新命名(二)物件
- 10g線上重定義新特性——關聯物件自動重新命名(一)物件
- Oracle表的線上重定義(一)Oracle
- oracle線上重定義表步驟Oracle
- dbms_redefinition線上重定義表
- Online Redefinition線上重定義(三)--多表關聯重定義案例
- 9i新特性之——線上表格重定義研究在(轉)
- Oracle中重建表的線上重定義Oracle
- 資料庫表的線上重定義資料庫
- 指令碼:線上重定義,從普通表到分割槽表,redefinition_table.sh指令碼
- 利用線上重定義功能將普通錶轉換為分割槽表問題
- 物化檢視prebuilt和線上重定義UI
- Oracle線上重定義之DBMS_REDEFINITIONOracle
- Online Redefinition線上重定義(一)
- 利用DBMS_REDEFINITION線上重定義表
- 線上重定義表ORACLE 11GOracle
- 【redefinition】線上重定義概覽與使用
- 線上表格重定義研究,比如將普通錶轉換為分割槽表等
- 線上重定義的操作步驟__普通錶轉換為分割槽表的實驗案例