一、 刚开始是这样的
下面信息很明显,数据库服务启动异常。
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
正常运行时间 0 天 7 小时 11 分 55 秒
跟踪级别 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文件与此内容相似,是允许编辑的。
..................................
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