网上找了一个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,建表成功!!!