ORA-04030:
如果在实例启动时,max_sga_size<sga_target或者max_size没设定,此时内存占用超过sga_target,就会出现ORA-04030的错误
解决:1.设置rman从SGA取内存
alter system set dbwr_io_slaves=2 scope=spfile;
alter system set backup _tape_ioslaves=true scope=spfile;
2.调整SGA大小
alter system set_tga_target=1200M;
(如果出错,等待下面命令全部执行完后,重新启动oracle再次执行)
alter system set sga_max_size=1200M scope=spfile;
3.设置使用内存最大大小
alter system set large_pool_size=80M;
4.重启Oracle Service
5.查看Sga,pga,pool的大小
ORA-04031:
1.大量的硬解析(整个SQL语句需要完完全全的解析,生成执行计划)出现。
2.突然出现一个大的SQL语句
解决办法:
直接执行
alter system flush shared_pool;(暂时解决问题,一段时间后再次出现)
将没有共享的SQL转换为共享SQL(使用绑定变量)
修改crusor_sharing参数
alter system set cursor_sharing=’force’;
增加shared_pool空间
保留区,专门给大SQL进行缓存
ORA-01555:
查询一个已经inactive且被覆盖的回滚段的数据。原因可能有SQL语句执行时间太长,UNDO表空间太小,事务量过大,提交过于频繁,导致执行SQL过程中进行一致读时,原数据在UNDO段已经inactive被覆盖,不能构造一致性读块
解决方法:可以加大回滚段的容量,或者将undo_retention参数提交后保留时间设置大一点。
ORA-1652:
当数据库没有设置为自动扩展,则临时表空间不够时事务执行会报ORA-1652无法扩展临时段的错误
解决方法:
1.设置自动扩展
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;
2.增大临时表空间:
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100M;