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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值