如何解决oracle启动时的几个小问题
发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要介绍了如何解决oracle启动时的几个小问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。oracle在启动时和启动过程中
千家信息网最后更新 2025年02月12日如何解决oracle启动时的几个小问题
这篇文章主要介绍了如何解决oracle启动时的几个小问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
oracle在启动时和启动过程中经常会出现这样那样的错误,简单记录下碰到过的问题,方便备用。
1、启库先起监听,发现监听启动失败
一般常见是/etc/hosts里面配置的主机名称对应IP和你的实际IP不符,改了就OK了。还要检查HOSTNAME和/etc/sysconfig/network里的主机名,都改一致保险。对应的还可检查下:listener和tnsnames里面的HOST名或IP,保持一致。有时只有把listener和tnsnames里面的HOST配成主机名,且hosts文件里的主机名对应IP正确才会启动正常。2、手动修改SPFILE文件报错手动用VI命令修改oracle里面的SPFILE***.ORA文件,数据库就起不来了,报错ORA-27046: file size is not a multiple of logical block size 。原因是动态服务器参数文件(SPFILE)是一个二进制文件,是不可以手工修改的,如果手工改了,该文件就成为了无效文件。可以通过以下方法解决:1、将SPFILE中的参数拷贝到init***.ora文件中 strings spfileCP05PV1DB.ora 查看到后拷贝到init***.ora中 (控制文件也可strings)2、删除DATABASE目录下的SPFILE***.ORA文件。3、启动数据库 (现在应该可以成功启动)4、SQL> create spfile from pfile 生成spfile(pfile文件可自己编写)使用startup命令启动数据库,,Oralce将会按照以下顺序在缺省目录中(9i,10i在oracle_home/database目录下)搜索参数文件:(1)spfile***.ora文件 (2)如果没有spfile***.ora文件就用spfile.ora文件(3) 如果没有spfile.ora文件就用init***.ora(4)如果没有init***.ora文件就用 pfile.ora所以上面我们采取的解决方法是将破坏的spfile中的参数复制到init***.ora中,然后删除spfile文件,这样启动时就会用init***.ora文件启动,然后用create spfile from pfile 命令生成spfile注意如果要修改spfile中的参数,绝对不能手工修改spfile文件,要使用下面命令:alter system set parameter=Value scope=spfile|both|memory 例如:alter system set db_cache_size=24M scope=both;来修改3、路径和名字问题SQL> startupORA-48108: invalid value given for the diagnostic_dest init.ora parameterORA-48140: the specified ADR Base directory does not exist [/home/oracle/102/dbs/]ORA-48187: specified directory does not existLinux Error: 2: No such file or directoryAdditional information: 1SQL>查看$ORACLE_HOME/dbs下的init文件(我的SID名为oracleprod),即initoracleprod.ora,发现该文件中的 没有更改过来,当然启动不了了,修改本文件里的所有 为绝对路径。结合网上其他技术大拿的经验,并删除diagnostic_dest这行记录。然后再启动数据库SQL> startup nomountSQL> alert database mount此时出错,ORA-00205: error in identifying control file, check alert log for more info还是查看$ORACLE_HOME/dbs/initoracleprod.ora中的内容,发现control_files = (ora_control1, ora_control2)有问题,修改为control_files = ("/u01/oradata/orcl/control01.ctl", "/u01/flash_recovery_area/orcl/control02.ctl")注:上面的control_files以机器上实际路径为准。然后再启动Oracle,即可以了。第二,在上面的过程中,还可能会碰到如ORA-09925: Unable to create audit trail file这样的问题,均于 有关,修改之即可。另外,在解决上述问题过程中,还出现了像如下一样的错误:SQL> conn sysSQL> show parameter SP2-0640: Not connectedSQL> conn / as sysdbaERROR:ORA-09925: Message 9925 not found; product=RDBMS; facility=ORALinux-x86_64 Error: 30: Read-only file systemAdditional information: 9925ORA-01075: you are currently logged onSQL> 如果出现上面的问题,无法手动停止Oracle,于是找到pmon进程,然后再kill之,即可关停Oracle.4、pfile与spfile启动问题在一个节点启动数据库:SQL>startup;ORA-01506: missing or illegal database name因前面是从PFILE启动,再生成SPFILE的,可能是生成文件出错。[root@rac2 dbs]# strings spfileracdb2.ora*.SPFILE='+DATA/racdb/spfileracdb.ora'拷贝RAC1节点的spfileracdb1.ora 为spfileracdb2.ora问题解决。还有一个现象就是路径错也会导致这个错误。比如/u01/app/oracle/admin/CP05PV1DB改错了/u01/app/oracle/admin/CP05MV1DB,导致无法识别数据库名5、SPFILE的错误SQL> startup mountORA-01078: failure in processing system parametersORA-01565: error in identifying file 'E:\oracle\product\10.2.0\db_1/dbs/spfileocl.ora'ORA-27046: file size is not a multiple of logical block sizeOSD-04012: ??????????????O/S-Error: (OS 3516) ?????????????? Windows ??????????尝试将SPFILEORCL.ORA的备份文件改名,启动数据库还是报同样的错误,而不是以前的错误,有些不知所措 幸好是自己的本机 实在不行就重装了,于是开始在google上继续找答案。找了一会就找了的方法 真的要感谢互联网。真是一个好东西。解决方法如下:C:\Documents and Settings\Administrator>sqlplus /nologSQL*Plus: Release 10.2.0.1.0 - Production on 星期三 2月 18 23:42:25 2016Copyright (c) 1982, 2005, Oracle. All rights reserved.SQL> connect /as sysdba已连接到空闲例程。SQL> create spfile='E:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA' from pfil='E:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.132009183928';文件已创建。SQL> startupORACLE 例程已经启动。Total System Global Area 167772160 bytesFixed Size 1247900 bytesVariable Size 62915940 bytesDatabase Buffers 100663296 bytesRedo Buffers 2945024 bytes数据库装载完毕。数据库已经打开。SQL>至此问题得到解决。6、另一例spfile问题SQL> create pfile from spfile;create pfile from spfile*ERROR at line 1:ORA-01565: error in identifying file '?/dbs/spfile@.ora'ORA-27046: file size is not a multiple of logical block sizeAdditional information: 1分析:从错误的提示来看,第一行说系统参数出错第二行详细指出了spfileorcl.ora出现了错误再看第三行,google了一下ORA-27046,原来是spfileorcl.ora文件被损坏,导致spfile文件不可读在spfile文件损坏的时候,如果尝试使用create pfile from spfile,也将收到同样的错误由于告警日志alert_orcl.log之前被清空,故此时未能看到更详细的错误提示 解决办法:由于spfile为二进制文件,因此修复比较困难,所以考虑从备份的spfile中恢复1.spfile备份是否存在,如存在则恢复到原始位置,如放在缺省位置,则为$ORACLE_HOME/dbs,Windows平台为%ORACLE_HOME%/database2.spfile备份文件不存在,也可以从pfile启动,启动时指定pfile参数3.spfile备份文件不存在,pfile也不存在,则从告警日志alert_orcl.log中最后一次正常启动中使用strings命令提取相关参数来手动创建pfile,然后从pfile启动,启动时指定pfile参数。注意从告警日志中复制过来的内容有些需要加单引号,一是所有的路径需要使用单引号括起来,其次是和db_name,db_domain等等4.spfile备份文件不存在,pfile也不存在,也不愿从告警日志中手动创建pfile,则可以使用数据库初始化时的pfile来启动,缺省位置为$ORALCE_BASE/admin/$ORACLE_SID/pfile5.也可以在SQLplus下直接使用create spfile from pfile = ' ' 来先创建spfile文件,再启动Oracle6.注意从缺省的pfile或数据库初始化的pfile中来启动数据库后,有很多参数不一致,可能会导致一些功能不可用,需要调整建议定期备份参数文件7.更多有关参数文件的详细描述,请参阅:Oracle 参数文件解决:解决示例--本示例直接数据库了初始化数据库时的pfile来启动数据库--启动后收到了有关控制文件的错误提示SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348'ORACLE instance started. Total System Global Area251658240 bytesFixed Size1218796 bytesVariable Size83887892 bytesDatabase Buffers163577856 bytesRedo Buffers2973696 bytesORA-00205: error in identifying control file, check alert log for more info --从告警日志中查看控制文件的信息,告警日志提示control03.ctl不存在SQL> ho tail -n 100 /u01/app/oracle/admin/orcl/bdump/alert_orcl.logThu Jul 29 16:52:44 2010ALTER DATABASEMOUNTThu Jul 29 16:52:44 2010ORA-00202: control file: '/u01/app/oracle/oradata/orcl/control03.ctl'ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directory --查看控制文件相关的参数信息中定义了control03.ctlSQL> show parameter control_ NAMETYPEVALUE------------------------------------ ----------- ------------------------------control_file_record_keep_timeinteger7control_filesstring/u01/app/oracle/oradata/orcl/control01.ctl, /u01/app/oracle/oradata/orcl/control02.ctl, /u01/app/oracle/oradata/orcl/control03.ctl SQL> ho ls /u01/app/oracle/oradata/orcl/control03.ctl--查看control03.ctl物理文件不存在ls: /u01/app/oracle/oradata/orcl/control03.ctl: No such file or directory --修改pfile文件SQL> ho vim /u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348 --删除这段,/u01/app/oracle/oradata/orcl/control03.ctl内容 --从修改后的pfile文件启动SQL> startup pfile='/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348'Total System Global Area251658240 bytesFixed Size1218796 bytesVariable Size83887892 bytesDatabase Buffers163577856 bytesRedo Buffers2973696 bytesDatabase mounted.Database opened. SQL> ho ls /u01/app/oracle/10g/dbs/alert_orcl.logcore_5372init.orainitorcl.oraorapworclcore_5360hc_orcl.datinitdw.oralkORCL --从pfile文件中创建spfileSQL> create spfile from pfile = '/u01/app/oracle/admin/orcl/pfile/init.ora.2292010214348'; File created. --查看spfileorcl.ora已生成SQL> ho ls /u01/app/oracle/10g/dbs/alert_orcl.loghc_orcl.datinitorcl.oraspfileorcl.oracore_5360init.oralkORCLcore_5372initdw.oraorapworcl SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down. SQL> startup--从spfile 启动ORACLE instance started. Total System Global Area251658240 bytesFixed Size1218796 bytesVariable Size83887892 bytesDatabase Buffers163577856 bytesRedo Buffers2973696 bytesDatabase mounted.Database opened. 实际上可以先create spfile from pfile = ' ', 再从spfile启动,使用alter system 修改相关的参数比直接修改pfile似乎更简单些,比如上面的例子中需要去掉一个控制文件。当然此类问题是仁者见仁,智者见者。总之一条,定期备份参数文件是相当有必要的!
感谢你能够认真阅读完这篇文章,希望小编分享的"如何解决oracle启动时的几个小问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
文件
参数
数据
数据库
问题
错误
备份
日志
命令
路径
控制
生成
主机
手动
方法
篇文章
面的
提示
一致
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全大赛中职组
数据库连接错误15405
一个人能做软件开发吗
一个应用可以连多个数据库吗
keil软件开发平台
网络技术通识
关于网络技术的求职信
数据库进阶需要掌握的东西
3怎样打开数据库
NBA2K20服务器卡
计算机基础网络安全
淘宝 什么数据库
思迅商云8服务器数据库ip
数据库查询的过程
软件开发通用技能
网信办网络安全进社区
管理多台电脑的服务器
网络安全产品排版软件
楼教主数据库
公益众筹软件开发
nba数据库统计排名
数据库如何删除一列中的数据
王者荣耀可转服务器多久更换
上海都因网络技术有限公司
css网络安全峰会
武汉的网络安全基地
文件服务器是用什么搭的
软件开发和达内哪个好
梅林 媒体服务器
多台电脑数据库同步