最大SGA设置超过系统限额的恢复

本文介绍了解决Windows Server 2003 32位系统上因增大SGA导致Oracle数据库无法启动的问题。通过逐步恢复SGA配置并重启数据库服务,最终使数据库恢复正常运行。

windows server 2003 32位 企业版
16G内存。

原来SGA为1G,设为2G。重启后,数据库无法启动。

经查,32位系统支持最大SGA为1.7G。通过修改windows和oracle参数,可以设置超过1.7G。觉得麻烦,还是设为最大1.2G好了。

下面是恢复方法:
1.使用sqlplus以sys进入系统:

sqlplus /nolog
connect as sysdba


2.拷贝spfile到pfile

create pfile from spfile;

 spfile和pfile位于$oracle_home\product\10.2.0\db_1\database中,分别以SPFILE{数据库}.ora、INIT{数据库名}.ora命名。

 

3.使用文本工具打开pfile,修改sga_max_size的值到正常水平

 

4.拷贝pfile到spfile

create spfile from pfile;

 

5.使用windows中的服务,重启DB服务,OK。

 

SGASystem Global Area)是 Oracle 数据库中的一个重要内存结构,它是分配给一个 Oracle 实例的一块共享内存区域,用于存储数据库实例运行过程中需要共享的数据和控制信息。所有数据库连接会话和后台进程都可以访问 SGASGA 主要包括以下几个组件: 1. **共享池(Shared Pool)**:用于缓存 SQL 语句、PL/SQL 代码、数据字典信息等。 2. **数据库缓冲区缓存(Database Buffer Cache)**:用于缓存从数据文件中读取的数据块。 3. **重做日志缓冲区(Redo Log Buffer)**:用于临时存储数据库更改的重做信息。 4. **大型池(Large Pool)**:可选区域,用于支持大型内存分配,如 RMAN 备份操作。 5. **Java 池(Java Pool)**:用于存储 Java 虚拟机(JVM)相关的代码和数据。 6. **流池(Streams Pool)**:用于 Oracle Streams 功能。 --- ### 如何查看当前 SGA 设置? 如果你有 Oracle 数据库的访问权限,可以通过以下 SQL 查询查看当前 SGA 的配置: ```sql -- 查看 SGA 的当前设置 SHOW PARAMETER SGA; -- 或者使用更详细的查询 SELECT * FROM v$sga; -- 查看 SGA 各个组件的详细信息 SELECT pool, name, bytes/1024/1024 AS MB FROM v$sgastat ORDER BY pool, name; ``` 你也可以使用以下命令查看 SGA 的目标大小: ```sql SELECT name, value/1024/1024 AS MB FROM v$parameter WHERE name = 'sga_target'; ``` --- ### 示例输出 ```sql SQL> SHOW PARAMETER SGA; NAME TYPE VALUE ------------------------------------ ----------- -------------------------- lock_sga boolean FALSE pre_page_sga boolean FALSE sga_max_size big integer 500M sga_target big integer 500M ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值