配置环境 - BIG_TABLE

本文介绍了一个使用Oracle SQL脚本批量创建包含大量记录的数据表的方法。通过从现有表ALL_OBJECTS中复制数据并调整ROWNUM来生成指定数量的记录。脚本还包括设置表为NOLOGGING模式、添加主键约束、收集统计信息及查询最终记录数。

创建Big_Table:

  1. 根据ALL_OBJECTS创建一个空表。
  2. 置Big_Table为NOLOGGING。
  3. 用ALL_OBJECTS的内容填充表。
  4. 对Big_Table创建一个主键约束。
  5. 收集统计结果。
  6. 显示表中的行数。

脚本Big_Table.SQL如下:

CREATE TABLE Big_Table
AS
  SELECT ROWNUM ID,
         ao.*
    FROM All_Objects ao
   WHERE 1 = 0;

ALTER TABLE Big_Table NOLOGGING;

DECLARE
  l_Cnt  NUMBER;
  l_Rows NUMBER := &1;
BEGIN
  INSERT /*+ APPEND */
    INTO Big_Table
  SELECT ROWNUM,
         ao.*
    FROM All_Objects ao;
    
  l_Cnt := SQL%ROWCOUNT;
  
  COMMIT;
  
  WHILE(l_Cnt < l_Rows)
  LOOP
    INSERT /*+ APPEND */
      INTO Big_Table
    SELECT ROWNUM + l_Cnt,
           ao.*
      FROM All_Objects ao
     WHERE ROWNUM <= l_Rows - l_Cnt;
     
    l_Cnt := l_Cnt + SQL%ROWCOUNT;
    
    COMMIT;    
  END LOOP;
END;
/

ALTER TABLE Big_Table ADD CONSTRAINT Big_Table_PK PRIMARY KEY(ID);

BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(OwnName    => User,
                                TabName    => 'BIG_TABLE',
                                Method_Opt => 'for all indexed columns',
                                CASCADE    => TRUE);
END;
/

SELECT COUNT(*)
  FROM Big_Table;

eg.创建一个1000000条记录的表:

MUZIYU@MYDB> @D:/SQL/Big_Table.SQL;

表已创建。


表已更改。

输入 1 的值:  1000000
原值    3:   l_Rows NUMBER := &1;
新值    3:   l_Rows NUMBER := 1000000;

PL/SQL 过程已成功完成。


表已更改。


PL/SQL 过程已成功完成。


COUNT(*)
----------
1000000

软件环境:Windows XP SP3+Oracle 9i R2,[ORACLE_HOME]=C:/Oracle/Ora92

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值