oracle 在线 移动表,Oracle 12C R2-新特性-在线移动表

Oracle 12C R2-新特性-在线移动表

非分区表可以作在线移动,而不阻止任何并发DML操作。 表移动操作现在还支持自动索引维护作为移动的一部分。

对非分区表的数据维护不需要任何维护窗口,因为它不影响任何DML或查询操作。https://www.cndba.cn/Expect-le/article/1765

https://www.cndba.cn/Expect-le/article/1765

1

移动一个表到一个新的段或者表空间

可以在线移动表,分区,子分区。语法如下:

·ALTER TABLE ... MOVE ... ONLINE

·ALTER TABLE ... MOVE PARTITION ... ONLINE

·ALTER TABLE ... MOVE SUBPARTITION ... ONLINE

移动表会更改表中行的rowid。 如果移动表并包括ONLINE关键字和UPDATE INDEXES子句,则索引在移动操作期间仍可用。 如果包括UPDATE INDEXES子句但不包括ONLINE关键字,则索引可在移动操作后立即使用。UPDATE INDEXES子句只能更改表上全局索引的存储属性或表上任何全局分区索引的索引分区的存储属性。 如果不包括UPDATE INDEXES子句,则对rowid的更改将导致表上的索引标记为UNUSABLE,并且使用这些索引访问表的DML会收到ORA-01502错误。 在这种情况下,必须删除或重建表上的索引。

移动操作会导致表的统计信息无效,所以要在移动表之后立即收集新的统计信息。

https://www.cndba.cn/Expect-le/article/1765

如果表包含LOB列,则此语句可用于将表连同明确指定的LOB数据和LOB索引段(与此表关联)移动。 如果未指定,则缺省为不移动LOB数据和LOB索引段。https://www.cndba.cn/Expect-le/article/1765

2

移动表

当对此语句使用ONLINE关键字时,数据操作语言(DML)操作可以继续在正在移动的表上不间断运行。 如果不包括ONLINE关键字,则在移动操作期间,不能对表中的数据进行并发DML操作。https://www.cndba.cn/Expect-le/article/1765https://www.cndba.cn/Expect-le/article/1765

例子:

2.1

创建一个表,索引:

https://www.cndba.cn/Expect-le/article/1765

SQL> CREATE TABLE dept_exp (

DEPTNO NUMBER (2) NOT NULL,

DNAME VARCHAR2 (14),

LOC VARCHAR2 (13))

TABLESPACE tbs_1; 2 3 4 5

Table created.

SQL> CREATE INDEX i1_deptno ON dept_exp(deptno) TABLESPACE tbs_1;

Index created.

SQL> CREATE INDEX i2_dname ON dept_exp(dname) TABLESPACE tbs_1;

Index created.

SQL> COL TABLE_NAME FOR A20;

SQL> COL TABLESPACE_NAME FOR A30

SQL> SELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME ='DEPT_EXP';

TABLE_NAME TABLESPACE_NAME

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

DEPT_EXP TBS_

2.2

将表移动到新的表空间tbs_2.

https://www.cndba.cn/Expect-le/article/1765

SQL> ALTER TABLE dept_exp MOVE ONLINE

COMPRESS TABLESPACE tbs_2

UPDATE INDEXES

(i1_deptno TABLESPACE tbs_1,

i2_dname TABLESPACE tbs_2); 2 3 4 5

Table altered.

https://www.cndba.cn/Expect-le/article/1765

2.3

验证

2.3.1

查看表所属表空间

https://www.cndba.cn/Expect-le/article/1765

SQL> COL TABLE_NAME FOR A20;

SQL> COL TABLESPACE_NAME FOR A30

SQL> SELECT TABLE_NAME,TABLESPACE_NAME FROM DBA_TABLES WHERE TABLE_NAME ='DEPT_EXP';

TABLE_NAME TABLESPACE_NAME

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

DEPT_EXP TBS_2

2.3.2

查看索引状态

SQL> COL INDEX_NAME FOR A20

SQL> SELECT INDEX_NAME,TABLE_NAME,STATUS FROM DBA_INDEXES WHERE TABLE_NAME='DEPT_EXP';

INDEX_NAME TABLE_NAME STATUS

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

I1_DEPTNO DEPT_EXP VALID

I2_DNAME DEPT_EXP VALID

版权声明:本文为博主原创文章,未经博主允许不得转载。

在线移动表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值