1.概述
传输优化器统计信息,主要如下图所示:
其基本步骤如下:
-
生产环境中,使用 DBMS_STATS.EXPORT_SCHEMA_STATS将统计信息复制到临时表
-
使用expdp将统计信息导出到文件
-
将dmp文件上传到目标端
-
在目标端使用impdp导入到数据库中
-
使用DBMS_STATS.IMPORT_SCHEMA_STATS 将统计信息从临时表复制到数据字典中
导出模式主要参考:
子程序 | 描述 |
---|---|
|
此过程导出数据库中所有对象的统计信息,并将它们存储在由 标识的用户统计表中
|
|
此过程导出所有数据字典模式(
|
|
此过程导出固定表的统计信息并将它们存储在由 标识的用户统计表中
|
|
此过程导出由 标识的模式中所有对象的统计信息,
默认情况下,该
|
|
此过程导出指定表的统计信息(包括关联的索引统计信息)并将它们存储在由 标识的用户统计表中
默认情况下,该
|
导出模式主要参考:
子程序 | 描述 |
---|---|
|
此过程从用户统计表中导入数据库中所有对象的统计信息,并将它们存储在数据字典中。 |
|
此过程
从用户统计表中
导入所有数据字典模式(
|
|
此过程从用户统计表中导入固定表的统计信息并将它们存储在数据字典中。 |
|
此过程为
默认情况下,该
|
|
此过程从 标识的用户统计表中导入指定表的统计信息,
默认情况下,该
|
2.主要过程
创建一个临时表
BEGIN DBMS_STATS.CREATE_STAT_TABLE ( ownname => 'dba1' , stattab => 'opt_stats' ); END; /
收集统计信息
-- generate representative workload EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SH');
导出统计信息
BEGIN DBMS_STATS.EXPORT_SCHEMA_STATS ( ownname => 'dba1', stattab => 'opt_stats');END;/
将统计信息导出到dmp文件
expdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats
将统计信息导入到目标端
impdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats
在目标端将统计信息导入到数据字典中
BEGIN DBMS_STATS.IMPORT_SCHEMA_STATS( ownname => 'dba1' , stattab => 'opt_stats' ); END; /
3.参考
https://docs.oracle.com/en/database/oracle/oracle-database/21/tgsql/transporting-optimizer-statistics.html#GUID-B24DB1B4-ECA4-4F8B-9948-E1456FAF1819