ORA-27101: shared memory realm does not exist 修改share pool大小

本文记录了一次解决Oracle数据库因SharePool内存不足导致的连接失败问题的过程。通过调整参数文件并逐步增加SharePool大小,最终成功启动数据库。

今天项目服务器数据库突然又出现了递归错误 ,报share pool size过小,以前也出现过这种情况,但是都是直接重启oracle服务器之后就好了,可是今天重启了之后还是不行,然后准备尝试直接修改share pool size大小,在网上随便找了一个语句  alert share pool size ,然后修改好了 重启服务器,重启之后灾难诞生了,死活连接不上服务器了。

先是报

 

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

这个错误,

然后修改 listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\oracle\product\10.1.0\db_1)
      (PROGRAM = extproc)
    )

  (SID_DESC =
      (GLOBAL_DBNAME = ORCL)
      (ORACLE_HOME = E:\oracle\product\10.1.0\db_1)
      (SID_NAME = orcl)
    )
  )


 

 红色的是后来添加进去的

但是这个错误改好之后,又有新的错误了

ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist

 

然后CMD 中  sqlplus /nolog
        connect /as sysdba 

 

SQL> startup
ORA-00371: not enough shared pool memory, should be atleast 218227097 bytes

然后报错,显示pool size过小 只能重新加载

 

(2) 解决过程

最麻烦的就是不能startup nomount,只能利用比较旧的pfile进行启动.

SQL> startup nomount pfile= startup nomount pfile='E:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.920200815388';

 

注意 init.ora.920200815388 这个文件路径因为机器不一样 路径。文件名也不一样

 

 

ORACLE instance started.

Total System Global Area 1308622848 bytes
Fixed Size                  1219232 bytes
Variable Size             452986208 bytes
Database Buffers          838860800 bytes
Redo Buffers               15556608 bytes

SQL> create pfile='E:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.20090618' from spfile='E:/oracle/product/10.1.0/db_1/database/SPFILEORCL.ORA';

 

然后对init.ora.20090618'  这个文件里面的size加大就可以了
把spfile的文件恢复到pfile里进行修改,增大share pool的大小到300M

注意 这个里面的单位是byte字节  如果是300m的话要换算一下 300*1024*1024

SQL> shutdown immediate
SQL> startup nomount pfile='E:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.20090618';

SQL>create spfile='E:/oracle/product/10.1.0/db_1/database/SPFILEORCL.ORA' from pfile='E:/oracle/product/10.1.0/admin/orcl/pfile/init.ora.20090618';

 

SQL> shutdown immediate
SQL> startup

init.ora.20090618' SPFILEORCL.ORA' spfile是前缀 后面是你的服务名 我的就是spfile+orcl

就是后来生成的文件
到此为止,数据库可以恢复使用了.

原来数据库加载完毕这几个字这么可爱  历史5个小时啊  激动啊 有木有 !!!有木有!!!

以下是一些可能解决重启服务后仍出现 ORA - 27101 错误(shared memory realm does not exist)的方法: - **检查监听**:在使用 `ip:1521/服务名` 方式连库报错 "ORA - 27101: shared memory realm does not exist" ,而 `sqlplus XX/密码` 可以登录数据库的情况下,需要检查监听是否正常工作。确保监听服务已启动,并且监听配置正确,监听服务能够识别并响应数据库服务名。可使用 `lsnrctl status` 查看监听状态,使用 `lsnrctl start` 启动监听服务 [^2]。 - **数据库启动操作**:尝试在 SQL 命令行中进行数据库启动操作。可以先尝试执行 `startup mount` 命令,若显示 "ORACLE 例程已经启动",则说明该操作可能有助于恢复。示例如下: ```sql SQL> startup mount; ``` 不过在执行操作时,可能会遇到如 `shutdown immediate` 失败提示 "非法的 SHUTDOWN 选项" 或 "ORA - 01034: ORACLE not available" 等情况,此时可专注于启动操作 [^3]。 - **清理归档日志**:进入 RMAN 工具窗口进行归档日志清理操作。可先运行 `crosscheck archivelog all` 命令把无效的 archivelog 标出来,然后直接全部删除过期的归档日志,使用 `delete expired archivelog all` 命令;或者使用指定日期来删除,例如 `delete noprompt archivelog until time "sysdate -3"` 。示例如下: ```plaintext --进入rman工具窗口 rman target / --运行这个命令可以把无效的的archivelog标出来 RMAN> crosscheck archivelog all; --直接全部删除过期的归档日志 RMAN> delete expired archivelog all; --或者直接用一个指定的日期来删除 RMAN> delete noprompt archivelog until time "sysdate -3"; ``` 这样可以释放一些系统资源,可能解决因归档日志过多导致的共享内存问题 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值