整理这篇文章的原因是前段时间帮网友远程解决一个问题时,用startup pfile='d:\1.ora';时总是报错ORA-27100,最后是用oradim删除了服务后再创建服务后解决。
一直比较郁闷,所以做了一下测试,终于搞清楚了原因。
测试环境:系统物理内存2G,ORACLE9.2.0.8及ORACLE10.2.0.1,sga_max_size=500M,SPFILE启动。
错误模拟,设置sga_max_size=200G
SQL> alter system set sga_max_size=200000000000 scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORA-27102: out of memory
OSD-00022: Message 22 not found; product=RDBMS; facility=SOSD
O/S-Error: (OS 8) 存储空间不足,无法处理此命令。
SQL> startup;
ORA-27100: shared memory realm already exists
SQL> shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SQL> startup;
ORA-27100: shared memory realm already exists
SQL>
这个错误的意思是实例共享内存的空间已经存在,但是实际上自己又没有启动数据为实例。
检查参数文件后,生成一个新的pfile='d:\1.ora',把sga_max_size改成正确的值(500M),然后关闭服务,重新启动服务后,再进入sqlplus
SQL> startup pfile='d:\1.ora';
ORA-27100: shared memory realm already exists
错误依旧,但是这时明明自己没有启动实例啊。
仔细分析一下,这是windows服务及oracle的问题,oracle在windows启动中如果由于sga_max_size的问题,实例不会启动成功,但是仍然会有一个错误的实例存,shutdown immediate及shutdown abort都关闭不了。由于缺省安装时,oracle在windows服务启动时会自动启动实例,所以每次启动服务都会自动用默认的错误的spfile启动实例,导至内存错误。
知道问题的原因后,解决的办法就很简单,解决的办法以下两种:
1.关闭服务,删除数据库的spfile文件,用新的正确的pfile启动后,再生成新的spfile;
2.设置数据库在服务启动时不自动启动实例,再用正确的pfile启动实例,然后再生成新的spfile。
如何设置数据库在服务启动时不自动启动实例有以下两种方法:
1.直接修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0下的数据库对象项ORA_MYDB_AUTOSTART值为false
2.使用ORACLE安装的工具Administration Assistant for Windows NT修改数据库启动关闭选项,如下图所示。
分享到:
相关推荐
NULL 博文链接:https://snowelf.iteye.com/blog/507976
在 32 位 WINDOWS SERVER 2003 旗舰版、16G 内存、ORACLE10.1.0.2 环境下,将 ORACLE 的 SGA_MAX_SIZE 设置为 2G,但是在重启数据库时报错:ORA-27100 shared memory realm already exists。 解决方案: 1. 使用 ...
此错误通常发生在尝试启动或访问Oracle数据库时,系统提示“ORA-01033: Oracle初始化或关闭中”。该错误表明Oracle实例正处于启动或关闭的过程中,未能完成其正常的启动或关闭流程。 #### 二、问题现象 当遇到ora-...
在Oracle数据库管理中,"ORA-00990: 权限缺失或无效"是一个常见的错误代码,它表示用户尝试执行的操作没有足够的权限。这个错误通常发生在试图访问、修改或者管理数据库对象(如表、视图、索引等)时。在本篇文章中...
在Oracle数据库操作过程中,用户可能会遇到一个特定的错误提示——ORA-29275:部分多字节字符。这一错误通常出现在执行查询`SELECT * FROM V$SESSION`时。该错误的出现意味着在查询结果中存在一些多字节字符(通常是...
在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...
ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL>alter system set control_files=’/u01/app/oracle/oradata/prod/...
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...
#### ORA-00021: Unable to Lock Memory in Shared Pool 当Oracle试图锁定共享池中的内存但失败时触发。这可能是因为操作系统的限制或配置问题。 #### ORA-00022: Error Getting Lock ID 获取锁ID时出错,通常是...
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...
### Oracle 10g启动后报ORA-16038错误的解决方法 #### 错误概述 在启动Oracle 10g数据库时遇到ORA-16038错误,该错误通常与归档日志操作有关。具体错误信息为: ``` ORA-16038: log 1 sequence #230 cannot be ...
例如,在尝试删除回收站中的对象时出现错误: ```sql DROP TABLE "BIN$Qo99szdrw8bgQAB/AQAX/Q==$0"; ``` 错误提示: ``` ERROR dropping "BIN$Qo99szdrw8bgQAB/AQAX/Q==$0" ORA-00933: SQL command not properly ...
oracle报错ora-12541:TNS无监听程序
此错误通常出现在Oracle数据库服务器升级或配置改变后,尤其是当服务器启用了更高级的安全认证协议,而客户端库(如JDBC驱动)无法支持该协议时。Oracle 12c引入了更安全的加密标准,如Oracle Wallet和SSL/TLS,如果...