- 浏览: 984992 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
孤星119:
好熟悉的数据库字段啊, 上家公司做的项目每天都跟这些字段打招呼 ...
Oracle exp compress参数引起的空间浪费 -
itspace:
quxiaoyong 写道遇到个问题,网上一搜,全他妈这篇文章 ...
数据库连接错误ORA-28547 -
quxiaoyong:
遇到个问题,网上一搜,全他妈这篇文章。你转来转去的有意思吗?
数据库连接错误ORA-28547 -
hctech:
关于version count过高的问题,不知博主是否看过ey ...
某客户数据库性能诊断报告 -
itspace:
invalid 写道写的不错,我根据这个来安装,有点理解错误了 ...
AIX 配置vncserver
众所周知,Oracle参数compatible 主要用于启用Oracle针对某一版本的新特性。但此参数设置时,只能往上调,设置好之后不能往下降。
比如可以将参数compatible从10.2.0.1.0设置成10.2.0.2.0,重启数据库后生效。
重启数据库后alert日志会有如下显示,从alert日志中可以明显的看出,compatible升级之后,Oracle会修改控制文件和redolog
其实,Oracle还会修改数据文件头,从数据文件头的dump信息中可以看出存在compatible信息
经过以上分析,要实现手工实现compatible降级,必须修改3个地方,即控制文件,数据文件头,redolog。
修改步骤如下,摸索着艰难前进,注意以下操作,除非特殊情况下,严禁在生产库操作:
1、在参数文件中将compatible重设为10.2.0.1.0,重启数据后出现参数文件和控制文件不匹配
于是尝试修改控制文件,由于控制文件compatible设置是从参数文件获取的,可以通过重建控制文件的方法,将compatible从10.2.0.2.0降为10.2.0.1.0。
重建控制文件分为noresetlogs和resetlogs两种。
如果采用noresetlogs方法重建时,需要扫描redolog文件头,由于redolog文件头compatible为10.2.0.2.0,和参数文件compatible版本号不一致。由于控制文件采用resetlogs选项重建时,并不会扫描redolog头,于是我们采用resetlogs选项重建控制文件。
但是无论采用noresetlogs或者resetlogs选项重建控制文件,重建时都会进行数据文件头匹配,由于数据文件头compatible为10.2.0.2.0
所以重建控制文件时会出现以下错误:
至此,我们只能通过修改数据文件头的compatible来达到降级的目的了
修改完所有数据文件之后,用noresetlog重建控制文件,日志文件头和参数文件不匹配如期而至。
SQL> STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oradata/mynewdb/system01.dbf',
'/oradata/mynewdb/undotbs01.dbf',
'/oradata/mynewdb/sysaux01.dbf'
CHARACTER SET ZHS16GBK
;ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 176163716 bytes
Database Buffers 339738624 bytes
Redo Buffers 7122944 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" NORESETLOGS NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-00331: log version 0.0.0.0.0 incompatible with ORACLE version 10.2.0.1.0
ORA-01517: log member: '/oradata/mynewdb/redo01.log'
于是我们采用reselogs选项重建控制文件,终于成功
重建好控制文件后,在open resetlogs时提示需要recover,redolog文件头的版本号依然为10.2.0.2.0,于是recover出现了问题
出现这个错误之后,其实修复也很简单,只要再次通过bbed修复redolog文件头即可。
但由于bbed工具不会再次计算redolog的checksum值,所以修改之后该日志文件头也处于了checksum error状态
其实Oracle 对checkvalue值的计算只是各个字节相对简单的与或运算,由于手头没有现成脚本,于是打算放弃使用该redolog,强制启用Oracle。
启用隐含参数_allow_resetlogs_corruption
用reselogs选项打开Oracle。
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
实例异常终止,打开后台alert日志一看,2662错误如期而至
ORA-600 [2662]主要是由于Oracle内部block的scn大于当前打开数据库的scn而引起的,主要有5个参数:
一般情况下,产生ora-600 [2662],可以通过设置event 10015事件,手工递增scn,即数据库open时的scn。
event 10015事件设置需要针对每个场景计算出level 1,通过2662几个参数根据一定的规则可以计算出我们需要的level。
计算规则如下:
Arg [c]*4得出一个数值,假设为V_Wrap
如果Arg [d]=0,则V_Wrap值为需要的level
Arg [d] < 1073741824,V_Wrap+1为需要的level
Arg [d] < 2147483648,V_Wrap+2为需要的level
Arg [d] < 3221225472,V_Wrap+3为需要的level
本案例中[c]=0,所以level为0*4+1=1,即在数据mount状态下,设置如下参数即可
但Oracle并不识别此event的设置,即并不递增scn值,在打开时,数据库依然报错
也是尝试采用隐含参数_minimum_giga_scn,其取值方法和10015 event相同
再次尝试打开数据终于成功
后台alert日志显示,scn已经递增成功。
可以看到数据库已经成功降级
引用
You can advance the compatibility level of your database. If you do advance the compatibility of your database with the COMPATIBLE initialization parameter, there is no way to start the database using a lower compatibility level setting, except by doing a point-in-time recovery to a time before the compatibility was advanced.
The default value for the COMPATIBLE parameter is the release number of the most recent major release.
Note:For Oracle Database 10g Release 2 (10.2), the default value of the COMPATIBLE parameter is 10.2.0. The minimum value is 9.2.0. If you create an Oracle Database using the default value, you can immediately use all the new features in this release, and you can never downgrade the database.
The default value for the COMPATIBLE parameter is the release number of the most recent major release.
Note:For Oracle Database 10g Release 2 (10.2), the default value of the COMPATIBLE parameter is 10.2.0. The minimum value is 9.2.0. If you create an Oracle Database using the default value, you can immediately use all the new features in this release, and you can never downgrade the database.
比如可以将参数compatible从10.2.0.1.0设置成10.2.0.2.0,重启数据库后生效。
引用
SQL> alter system set compatible="10.2.0.2.0" scope=spfile;
System altered.
System altered.
重启数据库后alert日志会有如下显示,从alert日志中可以明显的看出,compatible升级之后,Oracle会修改控制文件和redolog
引用
Fri May 13 11:59:11 2011
alter database mount
Fri May 13 11:59:15 2011
ALERT: Compatibility of the database is changed from 10.2.0.0.0 to 10.2.0.2.0.
Setting recovery target incarnation to 1
Fri May 13 11:59:15 2011
Successful mount of redo thread 1, with mount id 200680975
Fri May 13 11:59:15 2011
Database mounted in Exclusive Mode
Completed: alter database mount
Fri May 13 11:59:32 2011
alter database open
Fri May 13 11:59:32 2011
Switching redo format version from 10.2.0.0.0 to 10.2.0.2.0 at change 803371
Fri May 13 11:59:32 2011
Thread 1 opened at log sequence 10
Current log# 1 seq# 10 mem# 0: /oradata/mynewdb/redo01.log
Successful open of redo thread 1
alter database mount
Fri May 13 11:59:15 2011
ALERT: Compatibility of the database is changed from 10.2.0.0.0 to 10.2.0.2.0.
Setting recovery target incarnation to 1
Fri May 13 11:59:15 2011
Successful mount of redo thread 1, with mount id 200680975
Fri May 13 11:59:15 2011
Database mounted in Exclusive Mode
Completed: alter database mount
Fri May 13 11:59:32 2011
alter database open
Fri May 13 11:59:32 2011
Switching redo format version from 10.2.0.0.0 to 10.2.0.2.0 at change 803371
Fri May 13 11:59:32 2011
Thread 1 opened at log sequence 10
Current log# 1 seq# 10 mem# 0: /oradata/mynewdb/redo01.log
Successful open of redo thread 1
其实,Oracle还会修改数据文件头,从数据文件头的dump信息中可以看出存在compatible信息
引用
aux_file is NOT DEFINED
V10 STYLE FILE HEADER:
Compatibility Vsn = 169869568=0xa200100
Db ID=2596133541=0x9abddaa5, Db Name='XE'
Activation ID=0=0x0
Control Seq=198940=0x3091c, File size=142080=0x22b00
File Number=1, Blksiz=8192, File Type=3 DATA
V10 STYLE FILE HEADER:
Compatibility Vsn = 169869568=0xa200100
Db ID=2596133541=0x9abddaa5, Db Name='XE'
Activation ID=0=0x0
Control Seq=198940=0x3091c, File size=142080=0x22b00
File Number=1, Blksiz=8192, File Type=3 DATA
经过以上分析,要实现手工实现compatible降级,必须修改3个地方,即控制文件,数据文件头,redolog。
修改步骤如下,摸索着艰难前进,注意以下操作,除非特殊情况下,严禁在生产库操作:
1、在参数文件中将compatible重设为10.2.0.1.0,重启数据后出现参数文件和控制文件不匹配
引用
SQL> startup force
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 159386500 bytes
Database Buffers 356515840 bytes
Redo Buffers 7122944 bytes
ORA-00201: control file version 10.2.0.2.0 incompatible with ORACLE version
10.2.0.1.0
ORA-00202: control file: '/oradata/mynewdb/control01.ctl'
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 159386500 bytes
Database Buffers 356515840 bytes
Redo Buffers 7122944 bytes
ORA-00201: control file version 10.2.0.2.0 incompatible with ORACLE version
10.2.0.1.0
ORA-00202: control file: '/oradata/mynewdb/control01.ctl'
于是尝试修改控制文件,由于控制文件compatible设置是从参数文件获取的,可以通过重建控制文件的方法,将compatible从10.2.0.2.0降为10.2.0.1.0。
重建控制文件分为noresetlogs和resetlogs两种。
如果采用noresetlogs方法重建时,需要扫描redolog文件头,由于redolog文件头compatible为10.2.0.2.0,和参数文件compatible版本号不一致。由于控制文件采用resetlogs选项重建时,并不会扫描redolog头,于是我们采用resetlogs选项重建控制文件。
但是无论采用noresetlogs或者resetlogs选项重建控制文件,重建时都会进行数据文件头匹配,由于数据文件头compatible为10.2.0.2.0
所以重建控制文件时会出现以下错误:
引用
SQL> STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" RESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oradata/mynewdb/system01.dbf',
'/oradata/mynewdb/undotbs01.dbf',
'/oradata/mynewdb/sysaux01.dbf'
CHARACTER SET ZHS16GBK
;
--ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 167775108 bytes
Database Buffers 348127232 bytes
Redo Buffers 7122944 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" RESETLOGS NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01130: database file version 10.2.0.2.0 incompatible with ORACLE version
10.2.0.1.0
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" RESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oradata/mynewdb/system01.dbf',
'/oradata/mynewdb/undotbs01.dbf',
'/oradata/mynewdb/sysaux01.dbf'
CHARACTER SET ZHS16GBK
;
--ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 167775108 bytes
Database Buffers 348127232 bytes
Redo Buffers 7122944 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" RESETLOGS NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01130: database file version 10.2.0.2.0 incompatible with ORACLE version
10.2.0.1.0
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
至此,我们只能通过修改数据文件头的compatible来达到降级的目的了
引用
BBED> find 0x0002200a
File: /oradata/mynewdb/system01.dbf (1)
Block: 1 Offsets: 24 to 535 Dba:0x00400001
------------------------------------------------------------------------
0002200a e28bcb0b 4d594e45 57444200 6a000000 80a20000 00200000 01000300
BBED> modify 0x0001200a
File: /oradata/mynewdb/system01.dbf (1)
Block: 1 Offsets: 24 to 535 Dba:0x00400001
------------------------------------------------------------------------
0001200a e28bcb0b 4d594e45 57444200 6a000000 80a20000 00200000 01000300
BBED> sum apply
Check value for File 1, Block 1:
current = 0xf4ba, required = 0xf4ba
File: /oradata/mynewdb/system01.dbf (1)
Block: 1 Offsets: 24 to 535 Dba:0x00400001
------------------------------------------------------------------------
0002200a e28bcb0b 4d594e45 57444200 6a000000 80a20000 00200000 01000300
BBED> modify 0x0001200a
File: /oradata/mynewdb/system01.dbf (1)
Block: 1 Offsets: 24 to 535 Dba:0x00400001
------------------------------------------------------------------------
0001200a e28bcb0b 4d594e45 57444200 6a000000 80a20000 00200000 01000300
BBED> sum apply
Check value for File 1, Block 1:
current = 0xf4ba, required = 0xf4ba
修改完所有数据文件之后,用noresetlog重建控制文件,日志文件头和参数文件不匹配如期而至。
引用
SQL> STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oradata/mynewdb/system01.dbf',
'/oradata/mynewdb/undotbs01.dbf',
'/oradata/mynewdb/sysaux01.dbf'
CHARACTER SET ZHS16GBK
;ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 176163716 bytes
Database Buffers 339738624 bytes
Redo Buffers 7122944 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" NORESETLOGS NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-00331: log version 0.0.0.0.0 incompatible with ORACLE version 10.2.0.1.0
ORA-01517: log member: '/oradata/mynewdb/redo01.log'
于是我们采用reselogs选项重建控制文件,终于成功
引用
SQL> CREATE CONTROLFILE REUSE DATABASE "MYNEWDB" RESETLOGS NOARCHIVELOG
2 MAXLOGFILES 5
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 100
5 MAXINSTANCES 1
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
9 GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
10 GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
11 -- STANDBY LOGFILE
12 DATAFILE
13 '/oradata/mynewdb/system01.dbf',
14 '/oradata/mynewdb/undotbs01.dbf',
15 '/oradata/mynewdb/sysaux01.dbf'
16 CHARACTER SET ZHS16GBK
17 ;
Control file created.
2 MAXLOGFILES 5
3 MAXLOGMEMBERS 5
4 MAXDATAFILES 100
5 MAXINSTANCES 1
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 '/oradata/mynewdb/redo01.log' SIZE 100M,
9 GROUP 2 '/oradata/mynewdb/redo02.log' SIZE 100M,
10 GROUP 3 '/oradata/mynewdb/redo03.log' SIZE 100M
11 -- STANDBY LOGFILE
12 DATAFILE
13 '/oradata/mynewdb/system01.dbf',
14 '/oradata/mynewdb/undotbs01.dbf',
15 '/oradata/mynewdb/sysaux01.dbf'
16 CHARACTER SET ZHS16GBK
17 ;
Control file created.
重建好控制文件后,在open resetlogs时提示需要recover,redolog文件头的版本号依然为10.2.0.2.0,于是recover出现了问题
引用
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
SQL> recover database using backup controlfile;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/mynewdb/redo01.log
ORA-00331: log version 10.2.0.2.0 incompatible with ORACLE version 10.2.0.1.0
ORA-00334: archived log: '/oradata/mynewdb/redo01.log'
alter database open resetlogs
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
SQL> recover database using backup controlfile;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/mynewdb/redo01.log
ORA-00331: log version 10.2.0.2.0 incompatible with ORACLE version 10.2.0.1.0
ORA-00334: archived log: '/oradata/mynewdb/redo01.log'
出现这个错误之后,其实修复也很简单,只要再次通过bbed修复redolog文件头即可。
引用
BBED> dump offset 0
File: /oradata/mynewdb/redo01.log (0)
Block: 1 Offsets: 0 to 511 Dba:0x00000000
------------------------------------------------------------------------
01220000 01000000 0a000000 00809db0 00000000 0002200a e28bcb0b 4d594e45
BBED> find 0x0002200a
File: /oradata/mynewdb/redo01.log (0)
Block: 1 Offsets: 20 to 511 Dba:0x00000000
------------------------------------------------------------------------
0002200a e28bcb0b 4d594e45 57444200 69000000 00200300 00020000 01000200
File: /oradata/mynewdb/redo01.log (0)
Block: 1 Offsets: 0 to 511 Dba:0x00000000
------------------------------------------------------------------------
01220000 01000000 0a000000 00809db0 00000000 0002200a e28bcb0b 4d594e45
BBED> find 0x0002200a
File: /oradata/mynewdb/redo01.log (0)
Block: 1 Offsets: 20 to 511 Dba:0x00000000
------------------------------------------------------------------------
0002200a e28bcb0b 4d594e45 57444200 69000000 00200300 00020000 01000200
但由于bbed工具不会再次计算redolog的checksum值,所以修改之后该日志文件头也处于了checksum error状态
引用
BBED> sum apply
Check value for File 0, Block 1:
current = 0x0000, required = 0x0000
SQL> recover database using backup controlfile;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/mynewdb/redo01.log
ORA-00367: checksum error in log file header
ORA-00334: archived log: '/oradata/mynewdb/redo01.log'
Check value for File 0, Block 1:
current = 0x0000, required = 0x0000
SQL> recover database using backup controlfile;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/mynewdb/redo01.log
ORA-00367: checksum error in log file header
ORA-00334: archived log: '/oradata/mynewdb/redo01.log'
其实Oracle 对checkvalue值的计算只是各个字节相对简单的与或运算,由于手头没有现成脚本,于是打算放弃使用该redolog,强制启用Oracle。
启用隐含参数_allow_resetlogs_corruption
引用
SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;
System altered.
SQL> startup force mount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 180358020 bytes
Database Buffers 335544320 bytes
Redo Buffers 7122944 bytes
Database mounted.
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion : /ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
ORA-01112: media recovery not started
System altered.
SQL> startup force mount
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1262716 bytes
Variable Size 180358020 bytes
Database Buffers 335544320 bytes
Redo Buffers 7122944 bytes
Database mounted.
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 823455 generated at 05/13/2011 12:05:45 needed for thread 1
ORA-00289: suggestion : /ora10g/oracle/product/10.2.0/db_1/dbs/arch1_11_748203362.dbf
ORA-00280: change 823455 for thread 1 is in sequence #11
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
ORA-01112: media recovery not started
用reselogs选项打开Oracle。
引用
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
实例异常终止,打开后台alert日志一看,2662错误如期而至
引用
Fri May 13 12:29:00 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_22033.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823461], [0], [823504], [4194313], [], []
Fri May 13 12:29:01 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_22033.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823461], [0], [823504], [4194313], [], []
Fri May 13 12:29:01 2011
Error 600 happened during db open, shutting down database
USER: terminating instance due to error 600
Instance terminated by USER, pid = 22033
ORA-1092 signalled during: alter database open resetlogs..
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_22033.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823461], [0], [823504], [4194313], [], []
Fri May 13 12:29:01 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_22033.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823461], [0], [823504], [4194313], [], []
Fri May 13 12:29:01 2011
Error 600 happened during db open, shutting down database
USER: terminating instance due to error 600
Instance terminated by USER, pid = 22033
ORA-1092 signalled during: alter database open resetlogs..
ORA-600 [2662]主要是由于Oracle内部block的scn大于当前打开数据库的scn而引起的,主要有5个参数:
引用
ERROR:
ORA-600 [2662] [a] [b] [c] [d] [e]
VERSIONS:
versions 6.0 to 10.1
DESCRIPTION:
A data block SCN is ahead of the current SCN.
The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN
stored in a UGA variable.
If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]
internal error.
ARGUMENTS:
Arg [a] Current SCN WRAP
Arg [b] Current SCN BASE
Arg [c] dependent SCN WRAP
Arg [d] dependent SCN BASE
Arg [e] Where present this is the DBA where the dependent SCN came from.
ORA-600 [2662] [a] [b] [c] [d] [e]
VERSIONS:
versions 6.0 to 10.1
DESCRIPTION:
A data block SCN is ahead of the current SCN.
The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN
stored in a UGA variable.
If the SCN is less than the dependent SCN then we signal the ORA-600 [2662]
internal error.
ARGUMENTS:
Arg [a] Current SCN WRAP
Arg [b] Current SCN BASE
Arg [c] dependent SCN WRAP
Arg [d] dependent SCN BASE
Arg [e] Where present this is the DBA where the dependent SCN came from.
一般情况下,产生ora-600 [2662],可以通过设置event 10015事件,手工递增scn,即数据库open时的scn。
event 10015事件设置需要针对每个场景计算出level 1,通过2662几个参数根据一定的规则可以计算出我们需要的level。
计算规则如下:
Arg [c]*4得出一个数值,假设为V_Wrap
如果Arg [d]=0,则V_Wrap值为需要的level
Arg [d] < 1073741824,V_Wrap+1为需要的level
Arg [d] < 2147483648,V_Wrap+2为需要的level
Arg [d] < 3221225472,V_Wrap+3为需要的level
本案例中[c]=0,所以level为0*4+1=1,即在数据mount状态下,设置如下参数即可
引用
SQL> ALTER SESSION SET EVENTS '10015 TRACE NAME ADJUST_SCN LEVEL 1';
Session altered.
Session altered.
但Oracle并不识别此event的设置,即并不递增scn值,在打开时,数据库依然报错
引用
Fri May 13 12:45:09 2011
SMON: enabling cache recovery
Fri May 13 12:45:09 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_25610.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823467], [0], [823504], [4194313], [], []
Fri May 13 12:45:09 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_25610.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823467], [0], [823504], [4194313], [], []
Fri May 13 12:45:09 2011
SMON: enabling cache recovery
Fri May 13 12:45:09 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_25610.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823467], [0], [823504], [4194313], [], []
Fri May 13 12:45:09 2011
Errors in file /ora10g/oracle/product/10.2.0/db_1/rdbms/log/mynewdb_ora_25610.trc:
ORA-00600: internal error code, arguments: [2662], [0], [823467], [0], [823504], [4194313], [], []
Fri May 13 12:45:09 2011
也是尝试采用隐含参数_minimum_giga_scn,其取值方法和10015 event相同
引用
SQL> alter system set "_minimum_giga_scn"=1 scope=spfile;
System altered.
System altered.
再次尝试打开数据终于成功
引用
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 823463 generated at 05/13/2011 12:45:09 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_1_751034707.dbf
ORA-00280: change 823463 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
ORA-01112: media recovery not started
SQL> alter database open resetlogs;
Database altered.
ORA-00279: change 823463 generated at 05/13/2011 12:45:09 needed for thread 1
ORA-00289: suggestion :
/ora10g/oracle/product/10.2.0/db_1/dbs/arch1_1_751034707.dbf
ORA-00280: change 823463 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/oradata/mynewdb/system01.dbf'
ORA-01112: media recovery not started
SQL> alter database open resetlogs;
Database altered.
后台alert日志显示,scn已经递增成功。
引用
Fri May 13 12:47:37 2011
alter database open resetlogs
Fri May 13 12:47:37 2011
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 823463
Resetting resetlogs activation ID 200680610 (0xbf624a2)
Online log /oradata/mynewdb/redo01.log: Thread 1 Group 1 was previously cleared
Online log /oradata/mynewdb/redo02.log: Thread 1 Group 2 was previously cleared
Fri May 13 12:47:39 2011
Setting recovery target incarnation to 6
Fri May 13 12:47:39 2011
Fri May 13 12:47:39 2011
Assigning activation ID 200679734 (0xbf62136)
Thread 1 opened at log sequence 1
Current log# 3 seq# 1 mem# 0: /oradata/mynewdb/redo03.log
Successful open of redo thread 1
Fri May 13 12:47:39 2011
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Fri May 13 12:47:39 2011
SMON: enabling cache recovery
Fri May 13 12:47:39 2011
Successfully onlined Undo Tablespace 1.
Dictionary check beginning
Tablespace 'TEMPTS1' #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Dictionary check complete
Fri May 13 12:47:39 2011
SMON: enabling tx recovery
Fri May 13 12:47:39 2011
*********************************************************************
WARNING: The following temporary tablespaces contain no files.
This condition can occur when a backup controlfile has
been restored. It may be necessary to add files to these
tablespaces. That can be done using the SQL statement:
ALTER TABLESPACE <tablespace_name> ADD TEMPFILE
Alternatively, if these temporary tablespaces are no longer
needed, then they can be dropped.
Empty temporary tablespace: TEMPTS1
*********************************************************************
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=16, OS id=401
Fri May 13 12:47:39 2011
LOGSTDBY: Validating controlfile with logical metadata
Fri May 13 12:47:39 2011
LOGSTDBY: Validation complete
Completed: alter database open resetlogs
alter database open resetlogs
Fri May 13 12:47:37 2011
RESETLOGS is being done without consistancy checks. This may result
in a corrupted database. The database should be recreated.
RESETLOGS after incomplete recovery UNTIL CHANGE 823463
Resetting resetlogs activation ID 200680610 (0xbf624a2)
Online log /oradata/mynewdb/redo01.log: Thread 1 Group 1 was previously cleared
Online log /oradata/mynewdb/redo02.log: Thread 1 Group 2 was previously cleared
Fri May 13 12:47:39 2011
Setting recovery target incarnation to 6
Fri May 13 12:47:39 2011
引用
Advancing SCN to 1073741824 according to _minimum_giga_scn
Fri May 13 12:47:39 2011
Assigning activation ID 200679734 (0xbf62136)
Thread 1 opened at log sequence 1
Current log# 3 seq# 1 mem# 0: /oradata/mynewdb/redo03.log
Successful open of redo thread 1
Fri May 13 12:47:39 2011
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Fri May 13 12:47:39 2011
SMON: enabling cache recovery
Fri May 13 12:47:39 2011
Successfully onlined Undo Tablespace 1.
Dictionary check beginning
Tablespace 'TEMPTS1' #3 found in data dictionary,
but not in the controlfile. Adding to controlfile.
Dictionary check complete
Fri May 13 12:47:39 2011
SMON: enabling tx recovery
Fri May 13 12:47:39 2011
*********************************************************************
WARNING: The following temporary tablespaces contain no files.
This condition can occur when a backup controlfile has
been restored. It may be necessary to add files to these
tablespaces. That can be done using the SQL statement:
ALTER TABLESPACE <tablespace_name> ADD TEMPFILE
Alternatively, if these temporary tablespaces are no longer
needed, then they can be dropped.
Empty temporary tablespace: TEMPTS1
*********************************************************************
Database Characterset is ZHS16GBK
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=16, OS id=401
Fri May 13 12:47:39 2011
LOGSTDBY: Validating controlfile with logical metadata
Fri May 13 12:47:39 2011
LOGSTDBY: Validation complete
Completed: alter database open resetlogs
可以看到数据库已经成功降级
引用
SQL> show parameter compatible
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 10.2.0.1.0
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
compatible string 10.2.0.1.0
发表评论
-
buffer cache 的内部结构
2020-03-18 14:21 594BUFFER CACHE作为数据块的 ... -
Oracle OMC介绍
2020-03-18 13:19 500Oracle管理云服务(OMC)的大数据平台,自动收集的企业 ... -
参加Oracle勒索病毒防范专题培训会议
2019-09-27 17:15 5492019年7月22日,受邀参加Oracle勒索病毒防范专题培训 ... -
记一次内存换IO的Oracle优化
2019-09-27 16:50 839某客户数据库从P595物理 ... -
如何定位Oracle SQL执行计划变化的原因
2019-07-03 14:49 1483性能优化最难的是能够 ... -
如何定位Oracle SQL执行计划变化的原因
2018-10-30 09:24 1185性能优化最难的是能够 ... -
数据库性能优化目标
2018-10-08 10:59 535从数据库性能优化的场 ... -
数据库无法打开的原因及解决办法
2018-10-05 20:45 2156数据库的启动是一个相当复杂的过程。比如,Oracle在启动之前 ... -
怎么样彻底删除数据库?
2018-09-18 11:10 617Oracle提供了drop database命令用来删除数据库 ... -
Oracle减少日志量的方法
2018-09-10 10:17 879LGWR进程将LOG BUFFER中的 ... -
如何快速关闭数据库
2018-09-09 13:14 1249“一朝被蛇咬,十年怕井绳”。在没被“蛇”咬之前,很多DBA喜欢 ... -
关于《如何落地智能化运维》PPT
2018-05-17 10:19 1145在DTCC 2018发表《如何落地智能化运维》演讲,主要内容如 ... -
记录在redhat5.8平台安装oracle11.2容易忽视的几个问题
2018-05-11 19:58 590问题一:ping不通问题 在虚拟机上安装好linux系统后, ... -
《Oracle DBA实战攻略》第一章
2018-05-11 10:42 979即日起,不定期更新《OracleDBA实战攻略》一书电子版,请 ... -
Oracle 12c新特性
2018-05-11 10:33 912查询所有pdb [oracle@gj4 ~]$ sqlplu ... -
关于修改memory_target的值后数据库无法启动的问题
2017-02-28 12:24 3995操作系统:RHEL6.5 数据库版本:11.2.0.4 ... -
10g rac安装error while loading shared libraries libpthread.so.0 问题
2017-02-28 12:22 71211g rac安装在二节点跑脚本一般会报此错误: 解决这个问 ... -
记一次Oracle会话共享模式故障处理过程
2017-02-27 19:16 811故障简述 XXX第八人民医院HIS数据库7月13日11点左右从 ... -
RESMGR:cpu quantum等待事件处理过程
2017-02-27 18:23 2690由于数据库上线过程中出现大量的RESMGR:cpu quant ... -
谈谈log file sync
2014-03-19 14:18 1786数据库中的log file sync等待事件指的是,当user ...
相关推荐
Oracle数据库参数是数据库管理员在调整和优化数据库性能时的关键元素。这些参数设定数据库的行为和配置,影响着数据库的运行效率、安全性以及资源管理。以下是一些重要的Oracle数据库参数的详细说明: 1. **always_...
Oracle数据库参数是控制数据库行为和性能的关键配置项。从提供的文件片段中,我们可以提取和总结出许多重要的Oracle数据库参数知识点。 **1. 初始化参数和配置文件** Oracle数据库的初始化参数存储在数据库的参数...
人大金仓数据库是一款由中国人民大学信息学院开发的国产数据库管理系统,具有高度的可靠性和安全性,广泛应用于政府、金融、电信等行业。标题中的“人大金仓V8R3数据库 ARM环境”指的是该数据库系统的第八个主要版本...
PFILE(Parameter File),即参数文件,是Oracle数据库在启动时读取的配置文件,用于设定数据库的各种运行参数。在手工创建数据库的过程中,PFILE的准备尤为关键,它决定了数据库的初始配置,包括数据块大小、控制...
RAC数据库中的初始化参数设置是一个复杂但至关重要的过程,它不仅涉及参数本身的理解,还需要考虑集群环境下的特殊性。通过合理配置这些参数,可以大大提高RAC数据库的稳定性和性能。希望本文能帮助您更好地理解和...
- `compatible=10.2.0.1.0`: 数据库兼容版本号。 - `control_files`: 控制文件的路径列表。 - `core_dump_dest=/oracle/admin/mydb/cdump`: 核心转储文件的存储路径。 - `db_block_size=8192`: 数据块大小(单位...
- **兼容性参数**:`--compatible=name`用于确保导出的数据与特定的数据库或MySQL版本兼容。 - **完整插入模式**:`--complete-insert`选项可提高插入效率,但需谨慎使用,避免因数据包过大导致的问题。 - **字符集...
Oracle数据库作为业界广泛使用的数据库管理系统之一,在企业级应用中扮演着至关重要的角色。然而,由于各种原因(如硬件故障、软件错误或人为失误等),数据库可能会遭受损坏或丢失数据的风险。因此,建立一套可靠的...
在本段内容中,描述的是关于Oracle数据库的RMAN(Recovery Manager)工具在Oracle11g版本中进行数据库复制的步骤,特别指出是基于备份的复制操作,这是Oracle数据保护和灾难恢复策略中的一个重要组成部分。...
基于备份的复制是将源数据库的备份文件复制到目标数据库系统中,并通过RMAN命令进行恢复和重放归档日志来创建一个与源数据库完全一致的新数据库。这种方式适用于创建测试环境或需要在不同时间点恢复数据的场景。 ##...
在进行数据库操作时,有时会遇到一个令人困惑的问题:查询返回的时间字段中丢失了时分秒的信息,只显示日期部分。这种情况通常出现在特定环境下,比如使用Oracle数据库并结合Java应用程序进行数据处理时。本文将详细...
在MySQL中,所谓的“附加”数据库通常指的是将一个已经存在的数据库文件加载到MySQL服务器上,使其成为MySQL服务器中的一个数据库实例。这种操作通常用于恢复从另一个环境中导出的数据或者在不同的服务器之间迁移...
通过上述对Oracle数据库结构及优化调整方面的详细介绍,我们可以看到数据库优化是一个复杂而细致的过程,涉及到数据库的各个方面。合理配置数据库的各项参数、理解并利用其内部结构特点,能够有效提升数据库系统的...
- `compatible`参数指定兼容性版本,此处为`10.2.0.1.0`。 - `control_files`参数定义了控制文件的位置,应与创建的控制文件路径保持一致。 - `db_name`参数定义数据库的名称。 - `db_recovery_file_dest`和`db_...
为了搭建一个基于Data Guard的Oracle数据库实时同步系统,我们需要准备两个服务器环境,即主数据库和备用数据库。本例中的环境设置如下: - **主数据库**(Primary Database): - **操作系统**: Windows 7 - **...
达梦数据库安装需要配置很多参数,应将参数提前提供给厂家。在安装达梦的时候,需要在达梦实例目录下修改 dm.ini 文件以兼容 mysql 模式。PK_WITH_CLUSTER=0、COMPATIBLE_MODE=4(兼容模式 mysql)和 OLAP_FLAG=0 ...
为了深入了解Oracle数据库的工作原理及其组成部分,本文档将通过一系列手动步骤来创建一个Oracle数据库实例,而非使用Oracle提供的图形化工具如DBCA(Database Configuration Assistant)进行自动配置。这种方式虽然比...
OceanBase 是阿里巴巴自主研发的下一代关系型分布式云原生数据库,compatible with three database engines: MySQL, PostgreSQL, and Oracle syntax. 它具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL ...