专栏首页乐沙弥的世界Oracle 测试常用表BIG_TABLE

Oracle 测试常用表BIG_TABLE

创建测试用表,DBA经常用到,通常都是基于dba_objects来创建的比较多。本文根据Tom大师的big_table进行了整理,供大家参考。

一、基于Oracle 10g下的big_table

--==============================================
-- Create a test table for Oracle 10g
-- File   : cr_big_tb_10g.sql
-- Author : Robinson
-- Blog   : http://blog.csdn.net/robinson_0612
--==============================================

prompt
prompt     Create a big table from all_objects
prompt    ======================================
CREATE TABLE big_table
AS 
SELECT ROWNUM id, a.*
FROM all_objects a
WHERE 1=0;
 
prompt
prompt  Modify table to nologgming mode
prompt  ==========================
ALTER TABLE big_table NOLOGGING;
 
prompt 
prompt     Please input rows number to fill into big_table
prompt     ============================================
DECLARE
        l_cnt NUMBER;
        l_rows NUMBER := &1;
BEGIN
        INSERT /*+ append */
        INTO big_table
                SELECT rownum, a.*
                FROM all_objects a;
        l_cnt := SQL%ROWCOUNT;
        COMMIT;
        WHILE (l_cnt < l_rows)
        LOOP
                INSERT /*+ APPEND */
                INTO big_table
                        SELECT rownum + l_cnt
                             ,owner
                             ,object_name
                             ,subobject_name
                             ,object_id
                             ,data_object_id
                             ,object_type
                             ,created
                             ,last_ddl_time
                             ,TIMESTAMP
                             ,status
                             ,temporary
                             ,generated
                             ,secondary
                        FROM big_table
                        WHERE rownum <= l_rows - l_cnt;
                l_cnt := l_cnt + SQL%ROWCOUNT;
                COMMIT;
        END LOOP;
END; 
/
 
prompt 
prompt      Add primary key for  big table 
prompt     =====================================
ALTER TABLE big_table ADD CONSTRAINT 
big_table_pk PRIMARY KEY (id);
 
prompt 
prompt      Gather statistics for big_table
prompt     =====================================
BEGIN
        dbms_stats.gather_table_stats(ownname => USER,
                                     tabname => 'BIG_TABLE',
                                     method_opt => 'for all indexed columns',
                                     cascade => TRUE);
END; 
/
 
prompt 
prompt      check total rows  for big_table 
prompt     ====================================
SELECT COUNT(*)
FROM big_table;

二、基于Oracle 11g下的big_table

--==============================================
-- Create a test table for Oracle 11g
-- File   : cr_big_tb_11g.sql
-- Author : Robinson
-- Blog   : http://blog.csdn.net/robinson_0612
--==============================================

prompt
prompt     Create a big table from all_objects
prompt    ======================================
CREATE TABLE big_table
AS 
SELECT ROWNUM id, a.*
FROM all_objects a
WHERE 1=0;
 
prompt
prompt  Modify table to nologgming mode
prompt  ==========================
ALTER TABLE big_table NOLOGGING;
 
prompt 
prompt      Please input rows number to fill into big_table
prompt     ============================================
DECLARE
        l_cnt NUMBER;
        l_rows NUMBER := &1;
BEGIN
        INSERT /*+ append */
        INTO big_table
                SELECT rownum, a.*
                FROM all_objects a;
        l_cnt := SQL%ROWCOUNT;
        COMMIT;
        WHILE (l_cnt < l_rows)
        LOOP
                INSERT /*+ APPEND */
                INTO big_table
                        SELECT rownum + l_cnt
                             ,owner
                             ,object_name
                             ,subobject_name
                             ,object_id
                             ,data_object_id
                             ,object_type
                             ,created
                             ,last_ddl_time
                             ,TIMESTAMP
                             ,status
                             ,temporary
                             ,generated
                             ,secondary
                             ,namespace
                             ,edition_name
                        FROM big_table 
                        WHERE rownum <= l_rows - l_cnt;
                l_cnt := l_cnt + SQL%ROWCOUNT;
                COMMIT;
        END LOOP;
END; 
/
 
prompt 
prompt      Add primary key for  big table 
prompt     =====================================
ALTER TABLE big_table ADD CONSTRAINT 
big_table_pk PRIMARY KEY (id);
 
prompt 
prompt      Gather statistics for big_table
prompt     =====================================
BEGIN
        dbms_stats.gather_table_stats(ownname => USER,
                                     tabname => 'BIG_TABLE',
                                     method_opt => 'for all indexed columns',
                                     cascade => TRUE);
END; 
/
 
prompt 
prompt      check total rows  for big_table 
prompt     ====================================
SELECT COUNT(*)
FROM big_table;

三、说明 1、该校本根据Tom大师的原big_table整理而成。 2、Oracle 11g all_objects 比Oracle 10g 多出两列,因此使用了2个不同的版本。 3、big_table的id列为唯一值,并在之上创建了primary key。 4、对于该表测试redo等相关信息是应启用logging模式。        

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用exchange方式切换普通表到分区表

          随着数据库数据量的不断增长,有些表需要由普通的堆表转换为分区表的模式。有几种不同的方法来对此进行操作,诸如导出表数据,然后创建分区表再导入数据到分区...

    Leshami
  • 使用pt-table-checksum校验MySQL主从复制

    pt-table-checksum是一个基于MySQL数据库主从架构在线数据一致性校验工具。其工作原理在主库上运行, 通过对同步的表在主从段执行checksum...

    Leshami
  • 基于RMAN的异机数据库克隆(rman duplicate)

          对于基于生产环境下的数据库的版本升级或者测试新的应用程序的性能及其影响,备份恢复等等,我们可以采取从生产环境以克隆的方式将其克隆到本地而不影响生产数...

    Leshami
  • 奇点云人脸识别SDK获权威肯定,排名全球第5

    日前,在国际权威海量人脸识别数据库MegaFace中,奇点云以93.82%的最新成绩在100万级别人脸识别测试中位居全球第五,实现200毫秒内快速完成人脸比对,...

    BestSDK
  • python应用:异常处理

      Python的错误异常在大部分IDE编辑器中则可以直接显示出来,便于开发人员的调试及修改工作,对初学者也比较友好。

    py3study
  • Python3 常见错误和异常处理

    即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行检测到的错误被称为异常。

    python鱼霸霸
  • SAP CRM Application Extension Tool类型为Code List的扩展字段实现原理

    When you create extension field via Application Extension Tool, it seems the cod...

    Jerry Wang
  • ZOOM袁征对话NVIDIA黄仁勋

    本文来自Zoom的CEO:Eric S.Yuan的Linked In文章,主要讲了在Zoomtopia 2020大会上和NVIDIA首席执行官Jensen Hu...

    用户1324186
  • Elasticsearch启动常见问题

    分析: 默认分配的JVM内存为2g,所以当小内存的机器,默认启动的话,会报如上错误。

    后场技术
  • 网站监控轻量源码

    最近也试了很多网页监控源码,但是都很差,但是我今天就要推荐另一款由coxxs开发的,监控由第三方实现仅需注册添加网站或者ip。

    乔千

扫码关注云+社区

领取腾讯云代金券