共计 3140 个字符,预计需要花费 8 分钟才能阅读完成。
今天静默安装完 Oracle11gr2 版本后,连入数据库后,出现如下情况:
[oracle@oracle response]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 29 09:04:40 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> shutdown immediate;
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
SQL> alter system register;
alter system register
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
于是上网查了一下资料,排除了内存不足问题,说是数据库没有打开,然后尝试重新打开,结果还是报错。如下:
SQL> startup mount;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file ‘/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initORCL.ora’
根据提示查找 initORCL.ora 文件,发现没有。于是 将 $ORACLE_BASE/admin/orcl/pfile 目录下的 init.ora.*** 形式的文件 copy 到 $ORACLE_HOME/dbs 目录下重命名为 initORCL.ora 即可。(注:initORCL.ora 中的 orcl 为你的实例名 ORACLE_SID,这里我的 SID 为:ORCL)
或者 将 $ORACLE_HOME/dbs 目录下 spflieoracl.ora 改名为 spfileORCL.ora 即可。(注:spfileORCL.ora 中的 ORCL 为环境变量中设置的 SID)
[oracle@oracle ~]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.82920179156 $ORACLE_HOME/dbs/initORCL.ora
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Sep 29 11:58:27 2017
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2215944 bytes
Variable Size 184553464 bytes
Database Buffers 436207616 bytes
Redo Buffers 3350528 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
尝试正常关闭数据库:
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
查了一下资料,发现是 lk<SID> 文件造成的,该文件位于 ORALCE_HOME 下的 dbs 目录下,马上检查该文件:
[oracle@oracle ~]$ ls $ORACLE_HOME/dbs
hc_DBUA0.dat hc_ORCL.dat initORCL.ora orapworcl
hc_orcl.dat init.ora lkORCL spfileorcl.ora
[oracle@oracle dbs]$ fuser -u lkORCL
lkORCL: 7621(oracle) 7627(oracle) 7631(oracle) 7633(oracle) 7637(oracle) 7639(oracle) 7641(oracle) 7643(oracle) 7645(oracle) 7647(oracle) 7649(oracle) 7651(oracle) 7663(oracle) 7680(oracle) 7682(oracle) 7684(oracle) 7692(oracle) 8272(oracle)
果然该文件没有释放,用 fuser 命令 kill 掉:
[oracle@oracle dbs]$ fuser -k lkORCL
lkORCL: 7621 7627 7631 7633 7637 7639 7641 7643 7645 7647 7649 7651 7663 7680 7682 7684 7692 8272
[oracle@oracle dbs]$ fuser -u lkORCL
然后:
SQL> startup mount;
ORACLE instance started.
Total System Global Area 626327552 bytes
Fixed Size 2215944 bytes
Variable Size 184553464 bytes
Database Buffers 436207616 bytes
Redo Buffers 3350528 bytes
Database mounted.
在进行归档时发现:
SQL> alter database archivelog;
alter database archivelog
*
ERROR at line 1:
ORA-00265: instance recovery required, cannot set ARCHIVELOG mode
继续查资料,发现需要先将数据库起到 open 状态:
SQL> alter dababase open;
alter dababase open
*
ERROR at line 1:
ORA-00940: invalid ALTER command
发现还是报错,继续查资料,找到一个 datafile 被 offline 的解决办法。解决办法。
shutdown immediate
startup mount
recover datafile 2
alter database datafile 2 online
alter datebase open
结果如下:
SQL> recover datafile 2;
Media recovery complete.
SQL> alter database datafile 2 online;
Database altered.
SQL> alter database open;
Database altered
然后对数据库进行重启,问题解决。
静默安装了很多次,头一次出现安装好就无法登陆数据库的问题,折腾到半夜两点,还是度参数不熟悉,继续努力吧!
更多 Oracle 相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147229.htm