用户的系统崩溃,这次的环境是oracle9i,操作系统是windows2003。数据库的数据都存在,需要恢复。
具体做法和恢复10G有些类似:
1.将以前的目录改名,重新按照以前的结构安装数据库软件。
2.将以前数据文件中的 d:\oracle\oradata 和d:\oracle\admin 文件拷贝到对应新建的目录下。
3.将参数文件,listener.ora,密码文件拷贝到对应的目录下。
4.启动数据库:
C:\Documents and Settings\Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期六 10月 11 22:36:27 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn / as sysdba
Yw'rn9j.Wet0ERROR:
~y!BjHg$y0ORA-12560: TNS: 协议适配器错误
5。配置察看监听:
C:\Documents and Settings\Administrator>lsnrctl
LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 11-10月-2008 22:38
0r7Y XQ^l2Z,mY0:04
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
欢迎来到LSNRCTL,请键入"help"以获得信息。
LSNRCTL> statusITPUB个人空间$lE)d+|] e#d*Wg
正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))ITPUB个人空间]5z
j2N3}
TNS-12541: TNS:无监听器
!l[2mx C^(E2S0 TNS-12560: TNS: 协议适配器错误ITPUB个人空间{_H2E&_F:}~
TNS-00511: 无监听器ITPUB个人空间 Y?-i\3p L l
32-bit Windows Error: 61: Unknown error
z)vt$LGj-X0K |0LSNRCTL> startITPUB个人空间5u]RP4x:_5F
启动tnslsnr:请稍候...
Failed to open service <OracleOraHome92TNSListener>, error 1060.ITPUB个人空间/f3@ Lt5Z6U8Y2{r
TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
k-{p ?7n#c.qU]$`V8Y0写入e:\oracle\ora92\network\log\listener.log的日志信息
&`{#P:V)J&Vdk'J0监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xjserver31)(PORT=1521)))
正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
#iQz+I1K5R G$R0LISTENER 的 STATUS
@{i;I/O1g0------------------------ITPUB个人空间OTF&?!c~D
别名 LISTENERITPUB个人空间;QY F~4~
版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc
#Faa/mbn%f0tion
)z#nYFvz0启动日期 11-10月-2008 22:38:11
1X/SC(L$s)e)[0正常运行时间 0 天 0 小时 0 分 0 秒
:O6m,qv(lY9]5?@ e0跟踪级别 off
|M/dR,j!@C,J$GJY0安全性 OFFITPUB个人空间_@ yTB Ids
SNMP OFFITPUB个人空间^$p}-?9D!p6B/XH ^
监听器日志文件 e:\oracle\ora92\network\log\listener.log
`;nS{V5]y}R0监听端点概要...ITPUB个人空间u;qELC_7c-l
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xjserver31)(PORT=1521)))
^
k%xy|fmE8Bn0监听器不支持服务
'Vg`m"VD1J0命令执行成功
状态是不正确的,说明没有监听程序。拷贝监听的listen.ora后,
LSNRCTL> startITPUB个人空间8?W3|1Y&z{GE
启动tnslsnr:请稍候...
TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production
0G0@]k{0系统参数文件为e:\oracle\ora92\network\admin\listener.oraITPUB个人空间FAIige7SF/Cz
写入e:\oracle\ora92\network\log\listener.log的日志信息ITPUB个人空间 wn
SU5LLK*z-_
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
0hP@
eR(V,Mmt@1@0监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xjserver31)(PORT=1521)))
正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))ITPUB个人空间#cqZY\
LISTENER 的 STATUSITPUB个人空间cPP1mf8c{D
------------------------ITPUB个人空间Dq&Or\]M
别名 LISTENER
*m"Hi}:m0版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc
8`1ao.nWt0tionITPUB个人空间jw&{
ez?3G7Qtq
启动日期 11-10月-2008 22:40:52
K {eo M;v
j0正常运行时间 0 天 0 小时 0 分 4 秒ITPUB个人空间j#Y2WVT|
跟踪级别 off
-{0L#B _6g {9Kt.z0安全性 OFFITPUB个人空间zhL.Xa*Y*}
SNMP OFFITPUB个人空间&}6k7N{BA8y%t
监听器参数文件 e:\oracle\ora92\network\admin\listener.oraITPUB个人空间*Gy4rqZ,uL
监听器日志文件 e:\oracle\ora92\network\log\listener.log
z/Z7hAw1}
x?8Ye0监听端点概要...ITPUB个人空间 Z~r R |V
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC0ipc)))
+`[P*]&Ru!V0 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xjserver31)(PORT=1521)))
2I8^"Cv/o0服务摘要..ITPUB个人空间}'aIo^cz C0x2{o
服务 "PLSExtProc" 包含 1 个例程。
(V R3x.i4U0 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...ITPUB个人空间6_pc5z1dA
服务 "orc1" 包含 1 个例程。
1V:U-i'p7T*S&Q3d0 例程 "orc1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...ITPUB个人空间;?X-x
s-hk5f~o-Bf%}
命令执行成功
6.启动数据库仍报错:
SQL> conn / as sysdbaITPUB个人空间@7Z(~H9sb B
ERROR:
G.uJl {%J0ORA-12560: TNS: 协议适配器错误
解决ORA-12560: TNS: 协议适配器错误,与大家共享
ITPUB个人空间{/}2z6Q`
今天遭遇ORA-12560: TNS: 协议适配器错误的问题,经过一番努力问题已经解决,与大家共享。
,Z(Z
|&`p7[3O0造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:ITPUB个人空间&F}auf
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,
启动oraclehome92TNSlistener服务。ITPUB个人空间}W!p Uc
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务
面板,启动oracleserviceXXXX,XXXX就是你的database SID.
~H"SE.D6Y,Eg03.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI
D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下
输set oracle_sid=XXXX,XXXX就是你的database SID.
*n5b E;WE6N0经过以上步骤,就可以解决问题。
最后发现是没有指定oracle_sid造成,指定后数据库正常启动。
7.本次恢复遇到3个不太顺利的事情:
1.没有指定ORACLE的ORACLE_SID,9I需要手工指定。
2.崩溃前数据库的安装文件是在E盘下,崩溃后重新安装的数据库在D盘(由于光驱的缘故),结果第一次安装不成功。这个问题的解决可以找到d:/oracle/ora92/db_1/network/admin/listener.ora 中察看具体的路径。
3.曾报“areasqueries”的错误,结果查明是数据库不支持中文路径。ORACLE 9I数据库也真够垃圾的!
8、后续的问题:
昨天用户停电,造成数据库重启数据库后,提示OUT OF MEMORY的报错,这个报错显然是SGA大于内存的容量。怀疑有可能是有人更改过SGA大小或者是系统引导的不是原始参数。
所以,建议以后修复过数据库后,保留一份PFILE文件,并且使用 create spfile from pfile;