微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle数据库spfile损毁

一、 刚开始是这样的

下面信息很明显,数据库服务启动异常。

C:\WINDOWS\system32>lsnrctl status

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 - Production on 11-10月-2016 05:52:47

copyright (c) 1991,2014,Oracle.  All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 - Production
启动日期                  10-10月-2016 22:40:52
正常运行时间              07 小时 1155 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序日志文件          D:\app\orcl\diag\tnslsnr\LAPTOP-3F3OG0M9\listener\alert\log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=LAPTOP-3F3OG0M9)(PORT=1521)))
服务摘要..
服务 "ORCL" 包含 1 个实例。
  实例 "orcl",状态 BLOCKED,包含此服务的 1 个处理程序...
命令执行成功

数据库是用不了的。但是导致这个问题的原因有很多。我这里只介绍我的这种情况:我本地IP修改后,数据库就连不上了。因为在启动文件里D:\app\orcl\product\12.1.0\dbhome_1\database\SPFILEORCL.ORA,内容如下。记录了监听的地址,我尝试过使用127.0.0.1或localhost,结果不行。没办法,我只能修改文件了。注意:SPFILEORCL.ORA是不能修改的。上述错误就是由此造成。而INITorcl001.ORA文件与此内容相似,是允许编辑的。

这里提到的两个启动文件的名字都是和数据库实例ID相关的,不同SID,名字不同。

..................................
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=1862270976
orcl.__java_pool_size=16777216
orcl.__large_pool_size=33554432
orcl.__oracle_base='D:\app\orcl'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=855638016
orcl.__sga_target=2550136832
orcl.__shared_io_pool_size=117440512
orcl.__shared_pool_size=503316480
orcl.__streams_pool_size=0
*._catalog_foreign_restore=FALSE
*.audit_file_dest='D:\app\orcl\admin\orcl\adump'
*.audit_trail='db'
*.compatible='12.1.0.2.0'
*..............................................control_files='D:\app\orcl\oradata\orcl\control01.ctl','D:\app\orcl\oradata\orcl\control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.diagnostic_dest='D:\app\orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.enable_pluggable_database=true
*.local_listener='(ADDRESS_LIST=(Address=(Protocol=tcp) (Host=172.16.0.174)(Port=1521)))'
*.open_cursors=300
*.pga_aggregate_target=810m
*.processes=300
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2431m
*.undo_table........................

为了提供多一点的线索,你在sqlplus / as sysdba登录后,执行show parameter control;和show parameter spfile;命令。对比解决问题前后的输出变化。

二、 解决问题

sql> create pfile from spfile;
create pfile from spfile
**该操作可以不做,也不要在意这个错误。原因大致是spfile已经损坏,系统在寻找其他可作为替代的启动文件时没有找到。
第 1 行出现错误:
ORA-01565: ???? '%ORACLE_HOME%\DATABASE\SPFILE%ORACLE_SID%.ORA' ???
ORA-27046: ??????????????
OSD-04012: ?????????????? (OS 3586)


sql> shutdown immediate;
ORA-01507: ??????


ORACLE 例程已经关闭sql> startup pfile="D:/app/orcl/product/12.1.0/dbhome_1/database/INITorcl001.ORA"
ORACLE 例程已经启动。
****这里指明使用pfile启动,系统认使用spfile启动。
Total System Global Area 2550136832 bytes
Fixed Size                  3048872 bytes
Variable Size             671091288 bytes
Database Buffers         1862270976 bytes
Redo Buffers               13725696 bytes
数据库装载完毕。
数据库已经打开。
sql> show parameter spfile;
***很明显没有得到想要的结果
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
sql> show parameter pfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string
sql> show parameter control;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
control_files                        string      D:\APP\ORCL\ORADATA\ORCL\CONTR
                                                 OL01.CTL,D:\APP\ORCL\ORADATA\
                                                 ORCL\CONTROL02.CTL
control_management_pack_access       string      DIAGNOSTIC+TUNING

sql> create spfile from pfile='D:/app/orcl/product/12.1.0/dbhome_1/database/INITorcl001.ORA';

文件已创建。

sql> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭sql> startup;
ORACLE 例程已经启动。

Total System Global Area 2550136832 bytes
Fixed Size                  3048872 bytes
Variable Size             671091288 bytes
Database Buffers         1862270976 bytes
Redo Buffers               13725696 bytes
数据库装载完毕。
数据库已经打开。
sql> show parameter pfile;
***看到理想的结果了
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      D:\APP\ORCL\PRODUCT\12.1.0\DBH
                                                 OME_1\DATABASE\SPFILEORCL.ORA
sql> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      D:\APP\ORCL\PRODUCT\12.1.0\DBH
                                                 OME_1\DATABASE\SPFILEORCL.ORA

原文地址:https://www.jb51.cc/oracle/212288.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐