ORACLE 11g 断电重启报错的相关修复
由于服务器突然断电,造成oracle连接的时候报错。
用客户端连接的时候报的错误信息如下:
ORA-01033:ORACLE initialization or shutdown in progress
做了一下操作
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup mount
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
这个时候请大家把listener.ora里面的上方加上,具体的原因请大家看后面文章的解释。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = JCZ)
(ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1)
(SID_NAME = JCZ)
)
)
继续向下操作
执行 startup命令是报:
ORA-01589:要打开数据库则必须使用 RESETLOGS 或NORESETLOGS 选项
解决如下:
SQL> shutdown abort
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 711430144 bytes
Fixed Size 1374584 bytes
Variable Size 444597896 bytes
Database Buffers 260046848 bytes
Redo Buffers 5410816 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS或 NORESETLOGS 选项
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01152: 文件 1 没有从过旧的备份中还原
ORA-01110: 数据文件 1:'C:\APP\ADMINISTRATOR\ORADATA\JCZ\SYSTEM01.DBF'
SQL> recover database using backup controlfile;
ORA-00279: 更改 24153794 (在 07/20/201209:28:29 生成) 对于线程 1 是必需的
ORA-00289: 建议:
C:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\JCZ\ARCHIVELOG\2012_07_23\O1_MF_1_939_%
U_.ARC
ORA-00280: 更改 24153794 (用于线程 1) 在序列 #939 中
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
C:\app\Administrator\oradata\jcz\REDO03.LOG
已应用的日志。
完成介质恢复。
SQL> alert database open resetlogs;
SP2-0734: 未知的命令开头 "alertdata..." - 忽略了剩余的行。
SQL> alter database open resetlogs;
数据库已更改。
SQL>
参考的部分文章:
Oracle9以上如果报错ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
近日在配置Oracle 10G的流复制环境时,遇到一个问题,关闭数据库(shutdown immediate)后,通过SQL Plus连接数据库:conn sys/his@orc0 as sysdba,出现如下错误:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
通过重启服务的方式启动数据库,再次连接却能成功登录,也就是说在关闭数据库状态下无法连接服务器。
开始以为是系统环境变量Oracle_SID的配置问题,因为机器有多个实例,一阵折腾后还是不能连接。后来查资料得知:
Oracle9i以后,后台进程PMON自动在监听器中注册在系统参数SERVICE_NAMES中定义的服务名,SERVICE_NAMES默认为DB_NAME+DOMAIN_NAME。监听配置文件listener.ora中可以不必指定监听的服务名。但是,当数据库处于关闭状态下PMON进程没有启动,也就不会自动注册监听的实例名,所以使用sqlplus sys/his@orc0 as sysdba 会出现ORA-12514错误。
如果在listener.ora文件中指定监听的实例名,则即使数据库处于关闭状态,仍然可以连接。
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME =G:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL =TCP)(HOST = zyk)(PORT = 1521))
)
)
以上粗体部件为增加的内容,修改后重启监听服务后即可。
附:通过在lsnrctl中输入set display verbose,然后再通过命令service查看,服务状态为READY表示PMON自动注册的服务名,而UNKNOWN则表示该服务是手工在LISTENER.ORA中配置的数据库服务。
服务器莫名其妙的报这个错,之前一直正常,从google获取解决方案,解决之,记录如下:
1. Open the""<OracleHome>/network/admin/listener.ora" file in thehost,and you will see:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME =D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
2. Add the following lines after the 7th line in the above
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME =D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
3. At last the content of the file become to the following section:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME =D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME =D:\oracle\product\10.2.0\db_1)
(SID_NAME = ORACLE)
)
)
4. Save the file and restart the TNSListener service in the host. That'sOK!
ORA-01589错误的解决方法
(2011-12-06 15:47:08)
转载▼
标签: | 分类: ORACLE |
SQL*Plus:Release 9.2.0.1.0 - Production on 星期四 4月 17 15:01:262008
Copyright (c) 1982, 2002, Oracle Corporation. Allrights reserved.
SQL> conn / as sysdba;
已连接。
SQL> shutdown immediate;
ORA-01109: database未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 135338868 bytes
FixedSize 453492bytes
VariableSize 109051904bytes
DatabaseBuffers 25165824bytes
RedoBuffers 667648bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1:'D:/ORACLE/ORADATA/ORCL/SYSTEM01.DBF'
SQL> recover database using backup controlfile;
ORA-00279: 更改 1254931418 (在 06/09/2011 01:12:51 生成) 对于线程 1 是必需的
ORA-00289: 建议:D:/ORACLE/ORA92/RDBMS/ARC00001.001
ORA-00280: 更改 1254931418 对于线程 1 是按序列 # 1 进行的
指定日志: {<RET>=suggested | filename |AUTO | CANCEL}
d:/oracle/oradata/eygle/redo01.log
ORA-00308: 无法打开存档日志'd:/oracle/oradata/eygle/redo01.log'
ORA-27041: 无法打开文件
OSD-04002: Ξ??????
O/S-Error: (OS 3) ?????????????????
指定日志: {<RET>=suggested | filename |AUTO | CANCEL}
d:/oracle/oradata/orcl/redo01.log
ORA-00339: 归档日志未包含任何重做
ORA-00334: 归档日志:'D:/ORACLE/ORADATA/ORCL/REDO01.LOG'
SQL> recover database using backup controlfile;
ORA-00279: 更改 1254931418 (在 06/09/2011 01:12:51 生成) 对于线程 1 是必需的
ORA-00289: 建议:D:/ORACLE/ORA92/RDBMS/ARC00001.001
ORA-00280: 更改 1254931418 对于线程 1 是按序列 # 1 进行的
指定日志: {<RET>=suggested | filename |AUTO | CANCEL}
d:/oracle/oradata/orcl/redo02.log
ORA-00339: 归档日志未包含任何重做
ORA-00334: 归档日志:'D:/ORACLE/ORADATA/ORCL/REDO02.LOG'
SQL> recover database using backup controlfile;
ORA-00279: 更改 1254931418 (在 06/09/2011 01:12:51 生成) 对于线程 1 是必需的
ORA-00289: 建议:D:/ORACLE/ORA92/RDBMS/ARC00001.001
ORA-00280: 更改 1254931418 对于线程 1 是按序列 # 1 进行的
指定日志: {<RET>=suggested | filename |AUTO | CANCEL}
d:/oracle/oradata/orcl/redo03.log
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。