暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 将优化器统计信息传输到测试数据库 示例

原创 Asher.HU 2021-02-04
486

 将优化器统计信息传输到测试数据库:示例

您可以使用Oracle Data Pump将模式统计信息从生产数据库传输到测试数据库。


前提条件和限制

准备导出优化器统计信息时,请注意以下几点:

  • 在导出统计信息之前,必须创建一个表来保存统计信息该过程将DBMS_STATS.CREATE_STAT_TABLE创建统计信息表。
  • 优化器不使用存储在用户所有表中的统计信息。优化器使用的唯一统计信息是存储在数据字典中的统计信息。要使优化器使用用户定义的表中的统计信息,请使用DBMS_STATS导入过程将这些统计信息导入到数据字典中
  • 数据泵导出和导入实用程序与表一起从数据库导出和导入优化器统计信息。当列具有系统生成的名称时,原始导出(exp)不会随数据一起导出统计信息,但是此限制不适用于数据泵导出。

    注意:

    使用导出和导入统计信息DBMS_STATS是与使用数据泵导出和导入不同的操作。


假设条件

本教程假定以下内容:

  • 您想sh在生产数据库上生成代表性的模式统计数据,并用于DBMS_STATS将其导入测试数据库。
  • dba1生产和测试数据库上都存在管理用户
  • 您打算创建表opt_stats来存储模式统计信息。
  • 您打算使用Oracle Data Pump导出和导入表opt_stats


要生成模式统计信息并将其导入到单独的数据库中:

  1. 在生产主机上,启动SQL * Plus并以管理员身份连接到生产数据库dba1
  2. 创建一个表来保存生产统计信息。

    例如,执行以下PL / SQL程序以创建用户统计表opt_stats

    BEGIN
      DBMS_STATS.CREATE_STAT_TABLE ( 
        ownname => 'dba1'
    ,   stattab => 'opt_stats'
    );
    END;
    /
    
  3. 收集架构统计信息。

    例如,手动收集架构统计信息,如下所示:

    -- generate representative workload
    EXEC DBMS_STATS.GATHER_SCHEMA_STATS('SH');
    
  4. 使用DBMS_STATS导出的统计数据。

    例如,检索架构统计信息并将其存储在opt_stats先前创建表中:

    BEGIN
      DBMS_STATS.EXPORT_SCHEMA_STATS (
        ownname => 'dba1'
    ,   stattab => 'opt_stats'
    );
    END;
    /
    
  5. 使用Oracle Data Pump导出统计信息表的内容。

    例如,expdp在操作模式提示符下运行命令:

    expdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats
    
  6. 将转储文件传输到测试数据库主机。
  7. 登录到测试主机,然后使用Oracle Data Pump导入统计信息表的内容。

    例如,impdp在操作模式提示符下运行命令:

    impdp dba1 DIRECTORY=dpump_dir1 DUMPFILE=stat.dmp TABLES=opt_stats 
    
  8. 在测试主机上,启动SQL * Plus并以管理员身份连接到测试数据库dba1
  9. 用于DBMS_STATS从用户统计信息表中导入统计信息并将其存储在数据字典中。

    以下PL / SQL程序将表的统计信息导入表中opt_stats的数据字典中:

    BEGIN
      DBMS_STATS.IMPORT_SCHEMA_STATS( 
        ownname => 'dba1'
    ,   stattab => 'opt_stats' 
    );
    END;
    /

也可以看看:

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论