我们将数据从 db1 迁移到 db2 有两个数据库,现在 db2 中缺少一些索引,我们需要在 db 2 中创建所有这些索引,但我们只有索引名称,其他什么都不知道
我想创建所有索引,但我不应该手动创建它,我从 db1 获取未创建的索引并将其创建到 db2
一种选择是自己提取 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
命令。