DBMS_REDEFINITION 是 Oracle 10g 中的一个包,主要用于在线修改表的属性,支持在线重定义表。此包在性能调优方面十分重要。它提供了多个函数和过程,用于在线重定义表,包括:
-
DBMS_REDEFINITION.CAN_REDEF_TABLE 函数:判断某个表是否可以进行在线重定义,参数包括 UNAME(用户名称)、TNAME(表名称)和 OPTIONS_FLAG(重定义方式,默认为主键方式)。
-
DBMS_REDEFINITION.START_REDEF_TABLE 过程:启动重定义表的任务,参数包括 UNAME、ORIG_TABLE(原始表名称)、INT_TABLE(转换表名称)、COL_MAPPING(列映射关系)和 OPTIONS_FLAG。
-
DBMS_REDEFINITION.SYNC_INTERIM_TABLE 过程:执行一次同步,更新原始表的信息,参数包括 UNAME、ORIG_TABLE 和 INT_TABLE。
-
DBMS_REDEFINITION.ABORT_REDEF_TABLE 过程:放弃重定义操作,参数包括 UNAME、ORIG_TABLE 和 INT_TABLE。
使用此包时,需确保拥有相应的权限,如 EXECUTE_CATALOG_ROLE、CREATE ANY TABLE 等。DBMS_REDEFINITION 能有效减少系统压力,提高性能,适用于 7*24 小时系统。