oracle生成测试数据

网上找了一个sql可以大批量生成测试数据:

create table myTestTable as 
  select 
    rownum as id, 
    to_char(sysdate + rownum/24/3600, 'yyyy-mm-dd hh24:mi:ss') as inc_datetime, 
    trunc(dbms_random.value(0, 100)) as random_id, 
    dbms_random.string('x', 20) random_string 
  from dual 
    connect by level <= 1200000; 


执行时报错:
ORA-01536: 超出表空间 'USERS' 的空间限额

增加表空间:

alter user liu quota unlimited on users;

再执行时又报错:
ORA-30009: CONNECT BY 操作内存不足
or
ORA-30009: Not enough memory for CONNECT BY operation

改shm大小:
将/dev/shm从2G增加到10G。结果无效。

改sga和pga大小:
网上找了下,11g有主动管理内存的能力,只要设一下memory_max_target,memory_target一般这两个参数设为一样大记住(scope=spfile),还有就是把SGA和PGA的值设为0让数据库制动管理。
注:切记memory_target不能比memory_max_target小太多不然在重启是会报错。

原来的memory_max_target和memory_target都是400M,现在改为800M。

alter system set memory_max_target=800M scope=spfile;
alter system set memory_target=800M scope=spfile;

检查下列参数:

show parameter sga;

查看sga_target是否为0,0是自动控制

show parameter pga;

查看pga_aggregate_target是否为0,0是自动控制

show parameter workarea;

查看workarea_size_policy是否为AUTO,自动管理PGA

重启oracle:

shutdown immdeiate;
startup;

查看修改后的参数:

show parameter memory;

再执行建测试数据sql,建表成功!!!

查一下数据格式:

select * from myTestTable where rownum = 1;

参考资料:
http://www.itpub.net/thread-1398888-1-1.html
http://bbs.csdn.net/topics/390416792?page=1
http://blog.csdn.net/porly/article/details/7851756
http://log-cd.iteye.com/blog/562052