11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

时间:2024-03-31 18:31:40

第一个问题:

SQL> conn / as sysdba

Connected to an idle instance.

(连接了一个空闲的实例,数据库未启动,需要启动数据库)

SQL> startup

报错:

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/opt/oracle/product/11.2/db_1/dbs/initorcl.ora'

原因:无法找到initorcl.ora文件:

(需要到上述路径查找文件,没有的话进行拷贝添加、重命名)

cd 到上述目录下:cd /opt/oracle/product/11.2/db_1/dbs/

ls查看确实找不到上述文件。

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

补充一下:

a.数据库的启动过程图

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

b.数据库启动与参数文件的关系

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

需要到spfile目录下(切换到安装数据库的admin目录下,看到spfile目录

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

最终在目录/opt/oracle/admin/orcl1/pfile下看到init.ora.542018151831文件

拷贝到报错提示路径下

cp init.ora.542018151831 /opt/oracle/product/11.2/db_1/dbs/initorcl.ora


重新启动数据库,依然报同样的错,认定上面命令没有执行成功(考虑为权限问题或者需要重新登录),

权限问题,用root增加权限:chmod  -R  777  目标   /目标文件夹

[[email protected] dbs]# chmod -R 777 initorcl.ora  /opt/oracle/product/11.2/db_1/dbs/

为确保命令生效,可退出再登录:exit,sqlplus连接后再startup

来看一下:

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

第二个问题:

这次又报了个别的错(至少解决了刚才的问题。。。)

报错:

ORA-00845: MEMORY_TARGET not supported on this system

参考博客https://blog.csdn.net/iloli/article/details/45335315

得知是 oracle 11g 中有一个新特性 MEMORY_TARGET,

来自Oracle的官方解析是:
Starting with Oracle Database 11g, the Automatic Memory Management feature requires more shared memory (/dev/shm)and file descriptors. The size of the shared memory should be at least the greater of MEMORY_MAX_TARGET and MEMORY_TARGET for each Oracle instance on the computer. If MEMORY_MAX_TARGET or MEMORY_TARGET is set to a non zero value, and an incorrect size is assigned to the shared memory, it will result in an ORA-00845 error at startup.


文章给出的解释是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小。

于是需要进行:加大这个目录(/dev/shm)并使其生效。

查看并修改配置文件 /etc/fstab

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot mounxiang 

想要其生效的话,需要重启或者重新挂载,选择重新挂载

mount -o remount,size=4G /dev/shm

df -h进行查看确认

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

再次启动数据库

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

实例终于启动了,但是看最后一行,非常好(sad),又有了一个报错:

第三个问题:

ORA-01102: cannot mount database in EXCLUSIVE mode


参看文章

https://blog.csdn.net/lzwgood/article/details/26368323

原因:

一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;

 

二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,

1、 Oracle的共享内存段或信号量没有被释放;

2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;

3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。


解决思路:

本次操作为虚拟机,不存在HA系统,且在安装后一直未启动数据库,不存在释放和进程问题,定位到3——

用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除

lk<SID>的主要作用是说明DATABASE MOUNT上了,不用在MOUNT了.DATABASE UNMOUNT 后会删除掉,如果DATABASE确实没有MOUNT,这个文件在存在情况下,也MOUNT上,选择手工删除。

切到oracle宿主目录的dbs目录下,查看是否存在sgadef*和lk*文件

$cd $ORACLE_HOME

$cd dbs

$ls sgadef*

$ls lk*

确实存在lk文件

删除:rm lkORCL1

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

查看确认,已被删除。


备注:删除lk*文件的命令,可以参考另一份文章的 /sbin/fuser,以备自己下次遇到问题使用。

https://www.linuxidc.com/Linux/2017-06/144748.htm


/sbin/fuser的主要功能是使用文件或者套接字来表示识别进程。常把它用来查看相关进程和杀死相关进程。此处用来清除lk<SID>文件

/sbin/fuser -u /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 查询占用该临时文件的进程pid和username

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

/sbin/fuser -k /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 直接kill相关pid释放文件lk<SID>文件

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

/sbin/fuser -u /u01/app/oracle/product/11.2.0/db_1/dbs/lkHSDB 再次查看发现已经没有那些进程了

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun


本来看博客,我还准备好了会出现博客下面的问题,结果神奇的连接上了

11g安装报错ORA-01078,LRM-00109: couldnot open parameter;ORA-00845,MEMORY_TARGET not.ORA-01102cannot moun

不夸张地说,这句“Connected”是今天看到的最开心的一句话了。加上之前安装过程的报错,这次安装数据库是出问题最多的一次,从一开始缺少软件包开始,经历了多个插曲,本来已经有多次重装的打算了。不知道后面使用中还会不会遇到问题,不过,出错越多越好,这样才能学习更多的知识。