windows32位平台数据库宕机不能open怎么办
windows32位平台数据库宕机不能open怎么办
朋友那32位的windows 2003平台,跑了2年的oracle 10g数据库。
因为操作系统中毒,系统异常关闭后启动蓝屏。
因为操作系统中毒,系统异常关闭后启动蓝屏。
没办法,重装操作系统,重装oracle软件,挂载数据文件后,启动
报错:SYSTEM01.DBF需要恢复。
报错:SYSTEM01.DBF需要恢复。
查看数据库配置,非归档运行,也没有可用的数据库备份。
尝试了_allow_resetlogs_corruption,_offline_rollback_segments,
_corrupt_rollback_segments,set 10513 event等多种方法,始终不
能打开数据库。
_corrupt_rollback_segments,set 10513 event等多种方法,始终不
能打开数据库。
设置了_allow_resetlogs_corruption后,数据库启动关键日志如下:
alert_tjserver.log
[plain]
Wed Mar 20 17:21:53 2013
Errors in file d:\oracle\admin\tjserver\udump\tjserver_ora_1614.trc:
ORA-00600: internal error code, arguments: [4000], [7], [], [], [], [], [], []
常规恢复都没起作用,ORA-00600 [4000],[7]在没有可用备份的情况下,
一般考虑用BBED工具做修复。
一般考虑用BBED工具做修复。
整个恢复流程,基本思路如下:
1、将数据文件、控制文件、参数文件,复制到linux或Unix平台上,
我这顺手就用了64位的Solaris。
我这顺手就用了64位的Solaris。
2、在Solaris平台上安装同版本的Oracle软件。
3、用RMAN做数据文件的跨平台转换。
4、修改参数文件,启动实例,重建控制文件。
5、在Solaris平台上编译BBED工具,并修改数据文件。
6、修正其他错误,尝试open数据库。
7、做全库的exp导出,然后恢复到新的数据库中。
需要用的工作技能主要包括:Solaris操作系统使用、Oracle在Solaris
上的安装、RMAN跨平台转换数据库、Oracle基本灾备技能、BBED
工具使用、exp工具使用
上的安装、RMAN跨平台转换数据库、Oracle基本灾备技能、BBED
工具使用、exp工具使用
第一、二步网上有很多文档,就不介绍了。
这里直接从第三步RMAN跨平台转换开始
[plain]
RMAN> conn target /
RMAN>run{
convert datafile '/opt/oracle/tjserver/SYSTEM01.DBF' to
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
SYSTEM01.DBF.NEW';
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
SYSTEM01.DBF.NEW';
convert datafile '/opt/oracle/tjserver/UNDOTBS01.DBF' to
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
UNDOTBS01.DBF.NEW';
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
UNDOTBS01.DBF.NEW';
convert datafile '/opt/oracle/tjserver/SYSAUX01.DBF' to
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
SYSAUX01.DBF.NEW';
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
SYSAUX01.DBF.NEW';
convert datafile '/opt/oracle/tjserver/USERS01.DBF' to
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
USERS01.DBF.NEW';
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
USERS01.DBF.NEW';
convert datafile '/opt/oracle/tjserver/INDEX01.DBF' to
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
INDEX01.DBF.NEW';
platform='Solaris[tm] OE (64-bit)' format='/opt/oracle/tjserver/
INDEX01.DBF.NEW';
}
逐一转换所有文件。
第四步 修改参数文件,重建控制文件
1)修改参数文件中的*_dest路径,从原来的windows 指向
新的Solaris路径
新的Solaris路径
[plain]
tjserver.__db_cache_size=75497472
tjserver.__java_pool_size=4194304
tjserver.__large_pool_size=4194304
tjserver.__shared_pool_size=79691776
tjserver.__streams_pool_size=0
*.audit_file_dest='/opt/oracle/admin/tjserver/adump'
*.background_dump_dest='/opt/oracle/admin/tjserver/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/opt/oracle/oradata/tjserver/control01.ctl','/opt
/oracle/oradata/tjserver/control02.ctl','/opt/oracle/oradata/tjserver/
control03.ctl'
/oracle/oradata/tjserver/control02.ctl','/opt/oracle/oradata/tjserver/
control03.ctl'
*.core_dump_dest='/opt/oracle/admin/tjserver/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='tjserver'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=tjserverXDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=52428800
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/opt/oracle/admin/tjserver/udump'
重建控制文件:
sql>startup mount;
sql>alter database backup controlfile to trace;
到udump目录下,找到trace文件,根据文件脚本,重建控制文件:
[plain]
SQL> CREATE CONTROLFILE REUSE DATABASE "TJSERVER" RESETLOGS
MAXLOGFILES 16
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 (
'/opt/oracle/oradata/tjserver/REDO01.LOG'
) SIZE 50M,
GROUP 2 '/opt/oracle/oradata/tjserver/REDO02.LOG' SIZE 50M,
GROUP 3 '/opt/oracle/oradata/tjserver/REDO03.LOG' SIZE 50M
DATAFILE
'/opt/oracle/oradata/tjserver/SYSTEM01.DBF.NEW',
'/opt/oracle/oradata/tjserver/UNDOTBS01.DBF.NEW',
'/opt/oracle/oradata/tjserver/SYSAUX01.DBF.NEW',
'/opt/oracle/oradata/tjserver/USERS01.DBF.NEW',
'/opt/oracle/oradata/tjserver/INDEX01.DBF.NEW'
CHARACTER SET US7ASCII;
5、使用BBED工具修改数据块
这里就涉及到,要修改哪个文件?哪个数据块?多少偏移量?修改成多少?
我咋知道它是对的错的呢?
我咋知道它是对的错的呢?
这些都需要详细看日志。
打开alerttjserver.log中提示的trace文件:
d:\oracle\admin\tjserver\udump\tjserver_ora_1614.trc
在跟踪文件中,可以发现以下信息:
[plain]
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [4000], [7], [], [], [], [], [], []
Current SQL statement for this session:
select ctime, mtime, stime from obj$ where obj# = :1
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedst()+23 ? 0000000000000000 00142A73C
000000000 0FFDF5830
000000000 0FFDF5830
0FFFFFD7F
ksedmp()+796 ? 0000000000000000 001429231
000000000 005E1BF08
000000000 005E1BF08
000000000