关于创建索引

问题描述 投票:0回答:1

我们将数据从 db1 迁移到 db2 有两个数据库,现在 db2 中缺少一些索引,我们需要在 db 2 中创建所有这些索引,但我们只有索引名称,其他什么都不知道

我想创建所有索引,但我不应该手动创建它,我从 db1 获取未创建的索引并将其创建到 db2

sql database oracle migration
1个回答
0
投票

一种选择是自己提取 DDL。

首先,检查您有哪些索引:

SQL> set long 10000
SQL> select table_name, index_name from user_indexes;

TABLE_NAME                     INDEX_NAME
------------------------------ ------------------------------
ROLES                          PK_ROLES
DEPT                           PK_DEPT
EMP                            PK_EMP
TEST                           SYS_IL0000590731C00001$$

然后使用

dbms_metadata.get_ddl
作为您想要的任何索引。如果删除
where
子句,您将获得全部。

SQL> select dbms_metadata.get_ddl('INDEX', index_name) from user_indexes where index_name = 'PK_ROLES';

DBMS_METADATA.GET_DDL('INDEX',INDEX_NAME)
--------------------------------------------------------------------------------

  CREATE UNIQUE INDEX "SCOTT"."PK_ROLES" ON "SCOTT"."ROLES" ("ID")
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
  TABLESPACE "USER_DATA"


SQL>

此选项可能很有趣,因为您可以将结果假脱机到文件中,然后在目标数据库中运行该脚本。


另一种选择是使用一些 GUI 工具,它可以让您直观地检查索引列表并复制/粘贴

create index
命令。

© www.soinside.com 2019 - 2024. All rights reserved.