创建测试用表,DBA经常用到,通常都是基于dba_objects来创建的比较多。本文根据Tom大师的big_table进行了整理,供大家参考。 一、基于Oracle 10g下的big_table –==============================================– Create a test table for Oracle 10g– Fi
创建测试用表,,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 :
–==============================================
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 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 :
–==============================================
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 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;