最近在impdp导入数据库的时候发生了ORA-04030,后来在数据库查询的时候也出现了ORA-04030。
今天数据库连接失败,发现服务没起来,force启动失败,报的还是ORA-04030。
那就把ORA-04030好好整理一下,做个总结。
引起ORA-04030的原因,是不能分配更多的内存,解决办法有两种,其一是加大内存,其二,则是对Oracle的内存控制参数进行调整,使其内存分配更适合于当前的应用程序。
这里就首先总结下Oracle的内存控制参数。此部分参考Oracle文档:Memory Architecture
Oracle 数据库内存结构
在实例启动的时候,Oracle分配内存区域并启动后台进程。
内存区域存储如下信息:
- 程序代码
- 每个Session连接的信息,即使当前已不存活
- 在程序执行中需要用到的信息,例如,被 fetched 的查询结果集的当前状态
- 在进程间共享的锁定数据
- 缓存数据,诸如数据块与redo记录
基础内存结构
Oracle 数据库包含几种内存区域,每种又包含不同的子组件。
基础内存结构包括:
· 系统全局区(SGA)
系统全局区是一组共享的内存结构,也被称为 SGA 模块,包含了一个 Oracle 数据库实例的数据与控制信息。服务器与后台进程共享 SG