阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle表移动后应该做哪些事情?

31次阅读
没有评论

共计 2671 个字符,预计需要花费 7 分钟才能阅读完成。

导读 移动一张表实际上是一个重组过程,数据库会将原来的数据复制到新的地方。但是如果你发现这个表在移动后性能下降了,可能是你的索引没有重建。本文将指导您找到依赖索引并重建它们。

Oracle 表移动后应该做哪些事情?

概述

移动一张表实际上是一个重组过程,数据库会将原来的数据复制到新的地方。但是如果你发现这个表在移动后性能下降了,可能是你的索引没有重建。本文将指导您找到依赖索引并重建它们。
Oracle 表移动后应该做哪些事情?

将表从示例移动到用户
SQL> select tablespace_name from dba_tables where owner = 'HR' and table_name = 'EMPLOYEES';

TABLESPACE_NAME
------------------------------
EXAMPLE

SQL> alter table hr.employees move tablespace users;

Table altered.

SQL> select tablespace_name from dba_tables where owner = 'HR' and table_name = 'EMPLOYEES';

TABLESPACE_NAME
------------------------------
USERS
查看哪些索引取决于此表
SQL> column index_name format a30;
SQL> column tablespace_name format a30;
SQL> column status format a10;
SQL> select index_name, tablespace_name, status from dba_indexes where owner = 'HR' and table_name = 'EMPLOYEES';

INDEX_NAME                     TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------
EMP_JOB_IX                     EXAMPLE                        UNUSABLE
EMP_DEPARTMENT_IX              EXAMPLE                        UNUSABLE
EMP_MANAGER_IX                 EXAMPLE                        UNUSABLE
EMP_NAME_IX                    EXAMPLE                        UNUSABLE
EMP_EMAIL_UK                   EXAMPLE                        UNUSABLE
EMP_EMP_ID_PK                  EXAMPLE                        UNUSABLE

6 rows selected.

如您所见,所有依赖索引都是 UNUSABLE。这意味着,数据库不会自动重建它们。你必须自己做。

编写所有重建语句,然后执行它们
SQL> select 'alter index' || owner || '.' ||index_name || 'rebuild tablespace users;' as SQL_TO_BE_EXECUTED from dba_indexes where owner = 'HR' and table_name = 'EMPLOYEES';

SQL_TO_BE_EXECUTED
--------------------------------------------------------------------------------
alter index EMP_JOB_IX rebuild tablespace users;
alter index EMP_DEPARTMENT_IX rebuild tablespace users;
alter index EMP_MANAGER_IX rebuild tablespace users;
alter index EMP_NAME_IX rebuild tablespace users;
alter index EMP_EMAIL_UK rebuild tablespace users;
alter index EMP_EMP_ID_PK rebuild tablespace users;

6 rows selected.
或者您可以重建原始表空间的索引。
SQL> select 'alter index' || owner || '.' ||index_name || 'rebuild tablespace' || tablespace_name || ';' as SQL_TO_BE_EXECUTED from dba_indexes where owner = 'HR' and table_name = 'EMPLOYEES';

SQL_TO_BE_EXECUTED
--------------------------------------------------------------------------------
alter index HR.EMP_DEPARTMENT_IX rebuild tablespace EXAMPLE;
alter index HR.EMP_NAME_IX rebuild tablespace EXAMPLE;
alter index HR.EMP_MANAGER_IX rebuild tablespace EXAMPLE;
alter index HR.EMP_EMP_ID_PK rebuild tablespace EXAMPLE;
alter index HR.EMP_EMAIL_UK rebuild tablespace EXAMPLE;
alter index HR.EMP_JOB_IX rebuild tablespace EXAMPLE;

6 rows selected.

请注意,我们在新表空间 USERS 中重建索引。也就是说,对于索引,REBUILD 相当于表中的 MOVE

重建后检查状态
SQL> select index_name, tablespace_name, status from dba_indexes where owner = 'HR' and table_name = 'EMPLOYEES';

INDEX_NAME                     TABLESPACE_NAME                STATUS
------------------------------ ------------------------------ ----------
EMP_JOB_IX                     USERS                          VALID
EMP_DEPARTMENT_IX              USERS                          VALID
EMP_MANAGER_IX                 USERS                          VALID
EMP_NAME_IX                    USERS                          VALID
EMP_EMAIL_UK                   USERS                          VALID
EMP_EMP_ID_PK                  USERS                          VALID

6 rows selected.

所有索引都变为 VALID,表明所重建的索引有效。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计2671字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中