楼主: westbird

[精华] 求救----急!!旧数据文件,旧控制文件,新日志,怎样恢复?

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
51#
 楼主| 发表于 2002-11-19 18:11 | 只看该作者
最初由 parrotao 发布
[B]ORA-600 [3020]
recovery is stuck due to conflicting information in the datafile/redolog. If you were able to successfully restore a backup and roll forward, then it would point to the datafile other than the redo.
你的redolog和datafile是不是配对呀? [/B]



好象不是,我的redolog文件只有两个。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
52#
 楼主| 发表于 2002-11-19 18:13 | 只看该作者
最初由 parrotao 发布
[B]我觉得如果你的archive file和你备份的datafile
没有问题的话不可能出现你说的结果

确认一下备份. [/B]


我用备份的旧数据文件已经正常启动过,一切正常,只是是旧的。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
53#
 楼主| 发表于 2002-11-19 18:19 | 只看该作者
拷贝数据很慢,看来只能等到明天做了。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
54#
 楼主| 发表于 2002-11-19 18:26 | 只看该作者
lunar2000 :

udump目录下的.trc文件是一些类似这样的东西,  好象无法改成.sql文件。                  
                 .......................
ksust ksuos_p [1101D9730, 1101D9778) = 7FFFFFFF 00000000 00000000 00000000 ...
Dump of memory from 0x1101D9740 to 0x1101D9778
101D9740 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
101D9760 00000000 00000000 00000000 00000000 00000000 00000000
void * ksmpa_p [1101D9778, 1101D9780) = 00000000 00000000
Dump of memory from 0x000000000 to 0x000000040
00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  Repeat 1 times
size_t ksmpl_p [1101D9780, 1101D9788) = 00000000 00000000
ksulu ksulug_p [1101D9788, 1101D97E8) = 00000001 101D90D8 00000001 ...
Dump of memory from 0x1101D9794 to 0x1101D97E8
101D9780                                              101D8270 00000001 101D83B0
101D97A0 414D4552 4943414E 00000000 00000000 00000000 00000000 00000000 00000000
101D97C0 00000000 00000000 00000000 00000000 00000000 007C4000 03520000 00000000
101D97E0 00000000 00000000
kscn kcrds_p [1101D97E8, 1101D97F0) = 00059D18 0000C540
krdba kcrdb_p [1101D97F0, 1101D97F8) = 00000000 00000000
kfpdf* kfpdf_p [1101D97F8, 1101D9800) = 00000000 00000000
Dump of memory from 0x000000000 to 0x000000040
00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  Repeat 1 times
kfpts* kfpts_p [1101D9800, 1101D9808) = 00000000 00000000
Dump of memory from 0x000000000 to 0x000000040
00 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
  Repeat 1 times
sb4 kfpnd_p [1101D9808, 1101D9810) = 00000000 00000000
sb4 kfpnt_p [1101D9808, 1101D9810) = 00000000 00000000
sb4 kfpsd_p [1101D9810, 1101D9818) = 00000000 00000000
sb4 kfpst_p [1101D9810, 1101D9818) = 00000000 00000000
sb4 kfpct_p [1101D9818, 1101D9820) = 00000000 00000001
ktsug ktsug_p [1101D9818, 1101D9820) = 00000000 00000001
kusn ktusn_p [1101D9820, 1101D9828) = 7FFFFFFF 00000000
word kd_dv_p [1101D9820, 1101D9828) = 7FFFFFFF 00000000
word kd_iv_p [1101D9828, 1101D9830) = 00000000 00000000
kdnug kdnug_p [1101D9830, 1101D9850) = 00000001 101DD6F0 00000001 101DD6F0 ...
Dump of memory from 0x1101D9840 to 0x1101D9850
                   ..........

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
55#
发表于 2002-11-19 18:46 | 只看该作者
兄弟,我怎么说呢   sigh..

不是每个trc文件都可以作control file的,只有你用命令bakcup controlfile to trace生成的trc文件才能这么做,否则你只能手工写了。写也不难呀,前面都有例子,照着改成你的就可以了。

关于redo log,唉,你都重建控制文件了,还管它干嘛呀,不要旧的redo log file就可以了,open resetlogs 就会创建redo log file了。

“我用备份的旧数据文件已经正常启动过,一切正常,只是是旧的。”我开始怀疑你说的问题的,什么是旧的?备份不都是旧的么,只有相对新的备份,不知道如何得到新的备份

明天做吧,呵呵,我也头大了

明天理清思路,一步步照着上面说的做做看

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
56#
发表于 2002-11-20 00:09 | 只看该作者
to lunar2000
我认为用重新创建控制文件(旧的数据文件)的方法是不可以恢复到最近的情况的(CRASH)之前,ELSE,无需BACKUP CONTROL FILE了。

我可以告诉大家一点,我曾经测试过之用冷备份后的数据文件恢复数据库(没有控制文件、
日志文件)。换句话说,若用重新创建控制文件(旧的数据文件)的方法可行,那这个
语句 ALTER DATABASE BACKUP CONTROLFIEL TO “”就无用了。

问westbird:数据文件和控制文件是不是同一批备份的?
若想恢复到最近状态,我觉得用老的控制文件还有点希望(没做过测试)。
改天有空试试!

这个话题很有意思!

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
57#
 楼主| 发表于 2002-11-20 08:18 | 只看该作者
最初由 ZALBB 发布
[B]to lunar2000
我认为用重新创建控制文件(旧的数据文件)的方法是不可以恢复到最近的情况的(CRASH)之前,ELSE,无需BACKUP CONTROL FILE了。

我可以告诉大家一点,我曾经测试过之用冷备份后的数据文件恢复数据库(没有控制文件、
日志文件)。换句话说,若用重新创建控制文件(旧的数据文件)的方法可行,那这个
语句 ALTER DATABASE BACKUP CONTROLFIEL TO “”就无用了。

问westbird:数据文件和控制文件是不是同一批备份的?
若想恢复到最近状态,我觉得用老的控制文件还有点希望(没做过测试)。
改天有空试试!

这个话题很有意思! [/B]


ZALBB:

看到你的分析,觉得很有道理,我的数据文件和控制文件确实是同一批备份的,还有redo.log文件也是一样,仅有新的归档文件。
还有希望吗?
我都快要放弃了。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
58#
 楼主| 发表于 2002-11-20 08:24 | 只看该作者
to lunar:
我改的生成控制文件的sql语句,请你看看:

CREATE CONTROLFILE REUSE DATABASE "db1" NORESETLOGS ARCHIVELOG
MAXLOGFILES 64
MAXLOGMEMBERS 2
MAXDATAFILES 254
MAXINSTANCES 32
MAXLOGHISTORY 113
LOGFILE
GROUP 1 '/oradata/database1/oradata/db1/redo01.log' SIZE 500K,
GROUP 2 '/oradata/database1/oradata/db1/redo02.log' SIZE 500K
DATAFILE
'/oradata/database1/oradata/db1/drsys01.dbf',
'/oradata/database1/oradata/db1/oemrep01.dbf',
'/oradata/database1/oradata/db1/rbs_u01.dbf',
'/oradata/database1/oradata/db1/system_u01.dbf',
'/oradata/database1/oradata/db1/temp_u01.dbf',
'/oradata/database1/oradata/db1/users_u01.dbf',
'/oradata/database1/oradata/db1/indx01.dbf',
'/oradata/database1/oradata/db1/rbs01.dbf',
'/oradata/database1/oradata/db1/system01.dbf',
'/oradata/database1/oradata/db1/temp01.dbf',
'/oradata/database1/oradata/db1/users01.dbf'
CHARACTER SET ZHS16GBK
;



经ZALBB这麽一说,我都不知该不该重建控制文件。

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
59#
发表于 2002-11-20 08:36 | 只看该作者
to ZALBB
你说的是最近的是什么意思?包括current redo log file的内容?
如果你当前的current redo log file的内容保留着,那么这个是完全能恢复的。
至于说backup control file,当然是指和他的备份数据文件集同一批备份出来的了,否则数据库
都down了,还怎么backup controlfile to trace ?

我也可以给出我的一些备份恢复的例子,是我在泰国出差,作OPS的热备科隆,原理是一样的,不同的是,我重建控制文件的时候用的不同的db_name,还有就是多个thread的问题,其他思想都一致。

至于旧的控制文件和数据文件不是一批备份的,我觉得只能用重建控制文件做。不知道你觉得怎么做?能否给出
详细的步骤或者思想?

使用道具 举报

回复
论坛徽章:
4
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB技术丛书作者
日期:2010-09-26 15:24:56
60#
发表于 2002-11-20 08:37 | 只看该作者
先把刚才的两个数据库都down下来,一面空间或者资源不够,再做下面的操作:
Digital UNIX (sce) (ttyp2)

login: oracle
Password:
Last login: Tue Oct 22 12:03:19 from 172.31.8.6

Digital UNIX V4.0F  (Rev. 1229); Wed Aug 22 13:04:08 CST 2001
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 12:32:36 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
oracle@sce> df -k
Filesystem        1024-blocks        Used   Available Capacity  Mounted on
root_domain#root       262144       92876      169268    36%    /
/proc                       0           0           0   100%    /proc
usr_domain#usr        2097152     1347333      692072    67%    /usr
oracle_domain#u01     4954600     4138102      782080    85%    /u01
oracle@sce> ORACLE_SID=NEW;export ORACLE_SID
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 12:33:45 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
oracle@sce>


启动数据库SCEDB,然后做下面的操作
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> env | grep ORACLE
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/OraHome1
ORACLE_SID=SCEDB
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 12:36:51 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  241939428 bytes
Fixed Size                   103396 bytes
Variable Size              82542592 bytes
Database Buffers          159113216 bytes
Redo Buffers                 180224 bytes
Database mounted.
Database opened.
SQL> exit
Disconnected
oracle@sce>



准备工作:
检查空间是否够用,然后做下面的操作
准备一些测试数据
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> env | grep ORACLE
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/OraHome1
ORACLE_SID=SCEDB
oracle@sce>
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 08:05:03 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL>  select * from dba_data_files;

FILE_NAME                                                                           FILE_ID TABLESPACE_NAME                     BYTES     BLOCKS STATUS    RELATIVE_FNO AUTOEXTENSIBLE   MAXBYTES  MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS
-------------------------------------------------------------------------------- ---------- ------------------------------ ---------- ---------- --------- ------------ -------------- ---------- ---------- ------------ ---------- -----------
/u01/oracle/oradata/SCEDB/system01.dbf                                                    1 SYSTEM                          283115520      34560 AVAILABLE            1 YES            3435972198    4194302         1280  283107328       34559
/u01/oracle/oradata/SCEDB/tools01.dbf                                                     2 TOOLS                             8388608       1024 AVAILABLE            2 YES            3435972198    4194302           40    8380416        1023
/u01/oracle/oradata/SCEDB/rbs01.dbf                                                       3 RBS                             104857600      12800 AVAILABLE            3 YES            3435972198    4194302          640  104849408       12799
/u01/oracle/oradata/SCEDB/temp01.dbf                                                      4 TEMP                             71303168       8704 AVAILABLE            4 YES            3435972198    4194302           80   71294976        8703
/u01/oracle/oradata/SCEDB/users01.dbf                                                     5 USERS                            52428800       6400 AVAILABLE            5 YES            3435972198    4194302          160   52420608        6399
/u01/oracle/oradata/SCEDB/indx01.dbf                                                      6 INDX                             20971520       2560 AVAILABLE            6 YES            3435972198    4194302          160   20963328        2559
/u01/oracle/oradata/SCEDB/drsys01.dbf                                                     7 DRSYS                            88080384      10752 AVAILABLE            7 YES            3435972198    4194302           80   88072192       10751
/u01/oracle/oradata/SCEDB/lunar01.dbf                                                     8 LUNAR                            10485760       1280 AVAILABLE            8 NO                      0          0            0   10477568        1279

8 rows selected

SQL> select * from v$controlfile;

STATUS  NAME
------- --------------------------------------------------------------------------------
        /u01/oracle/oradata/SCEDB/control01.ctl
        /u01/oracle/oradata/SCEDB/control02.ctl
        /u01/oracle/oradata/SCEDB/control03.ctl

SQL> select * from v$logfile;

    GROUP# STATUS  MEMBER
---------- ------- --------------------------------------------------------------------------------
         1         /u01/oracle/oradata/SCEDB/redo01.log
         2         /u01/oracle/oradata/SCEDB/redo02.log
         3 STALE   /u01/oracle/oradata/SCEDB/redo03.log

SQL> select sum(bytes) from dba_data_files;

SUM(BYTES)
----------
639631360

SQL>
SQL> select file_name Datafile_name
  2  ,        tablespace_name
  3  ,        to_char(bytes/1024/1024) || 'M' mbytes
  4  from        dba_data_files
  5  order by file_name
  6  ,         tablespace_name
  7  /

DATAFILE_NAME                                                                    TABLESPACE_NAME                MBYTES
-------------------------------------------------------------------------------- ------------------------------ -----------------------------------------
/u01/oracle/oradata/SCEDB/drsys01.dbf                                            DRSYS                          84M
/u01/oracle/oradata/SCEDB/indx01.dbf                                             INDX                           20M
/u01/oracle/oradata/SCEDB/lunar01.dbf                                            LUNAR                          10M
/u01/oracle/oradata/SCEDB/rbs01.dbf                                              RBS                            100M
/u01/oracle/oradata/SCEDB/system01.dbf                                           SYSTEM                         270M
/u01/oracle/oradata/SCEDB/temp01.dbf                                             TEMP                           68M
/u01/oracle/oradata/SCEDB/tools01.dbf                                            TOOLS                          8M
/u01/oracle/oradata/SCEDB/users01.dbf                                            USERS                          50M

8 rows selected

SQL>
SQL> select  b.file_id  file_ID,
  2  b.tablespace_name  tablespace_name,
  3  b.bytes  Bytes,
  4  (b.bytes-sum(nvl(a.bytes,0)))  used,
  5  sum(nvl(a.bytes,0))  free,
  6  sum(nvl(a.bytes,0))/(b.bytes)*100 Percent
  7  from dba_free_space a,dba_data_files b
  8  where a.file_id=b.file_id
  9  group by b.tablespace_name,b.file_id,b.bytes
10  order by b.file_id
11  /

   FILE_ID TABLESPACE_NAME                     BYTES       USED       FREE    PERCENT
---------- ------------------------------ ---------- ---------- ---------- ----------
         1 SYSTEM                          283115520  269959168   13156352 4.64699074
         2 TOOLS                             8388608      40960    8347648 99.5117187
         3 RBS                             104857600   20979712   83877888 79.9921875
         4 TEMP                             71303168       8192   71294976 99.9885110
         5 USERS                            52428800       8192   52420608  99.984375
         6 INDX                             20971520       8192   20963328 99.9609375
         7 DRSYS                            88080384    4333568   83746816 95.0799851
         8 LUNAR                            10485760      49152   10436608   99.53125

8 rows selected

SQL> conn lunar/lunar
Connected.
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TEST                           TABLE   

SQL> select * from test;

         A
----------
         1

SQL> insert into test values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> insert into test values(3);

1 row created.

SQL> select * from test;

         A
----------
         1
         2
         3

SQL>
注意 3 是没提交的,2已经提交,但是2还没有被归档
也就是这两条数据都在redo中,但是状态不同


新开一个窗口作switch log:
Digital UNIX (sce) (ttyp1)

login: oracle
Password:
Last login: Tue Oct 22 12:32:18 from 172.31.8.6

Digital UNIX V4.0F  (Rev. 1229); Wed Aug 22 13:04:08 CST 2001
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 12:50:11 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL> archive log list  
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2774
Next log sequence to archive   2776
Current log sequence           2776
SQL> alter system switch logfile;

System altered.

SQL> archive log list  
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2775
Next log sequence to archive   2777
Current log sequence           2777
SQL>
SQL> exit
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

到现在为止,用户lunar的表test中有2条被归档,即 1 和 2
还有一条没有提交的在redo 中,即3;
现在在新窗口(sqlplus internal)中做热备,当前的archive log为2777,
注意观察热备结束后的archive log,并记录下来,以便对照数据回复的情况。



一、确定ORACLE_SID
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 08:05:03 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL> exit
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

二、如果下列目录不存在,先创建下列目录
oracle@sce> cd /u01/oracle/backup2

在/u01/oracle/backup2建立科隆数据库需要的目录
mkdir adhoc
mkdir bdump
mkdir cdump
mkdir arch
mkdir create
mkdir exp
mkdir udump
mkdir pfile
oracle@sce> ls
oracle@sce>

三、检查磁盘空间,如果够用,就创建热备
oracle@sce> df -k
Filesystem        1024-blocks        Used   Available Capacity  Mounted on
root_domain#root       262144       92876      169268    36%    /
/proc                       0           0           0   100%    /proc
usr_domain#usr        2097152     1347469      691936    67%    /usr
oracle_domain#u01     4954600     4138277      781928    85%    /u01
oracle@sce>

oracle@sce> cd /u01/oracle/back_script
oracle@sce> ls hotback2.sh
hotback2.sh
oracle@sce> hotback2.sh
Tue Oct 22 13:27:13 GMT+0700 2002

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 13:27:13 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

Tue Oct 22 13:27:13 GMT+0700 2002




Connected.
BEGINING ARCHIVE LOG NUMBER IS :
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2776
Next log sequence to archive   2778
Current log sequence           2778



Begin Backup Tablespace SYSTEM  ...

Successed End Backup This File .



Begin Backup Tablespace TOOLS  ...

Successed End Backup This File .



Begin Backup Tablespace RBS  ...

Successed End Backup This File .



Begin Backup Tablespace TEMP  ...

Successed End Backup This File .



Begin Backup Tablespace USERS  ...

Successed End Backup This File .



Begin Backup Tablespace INDX  ...

Successed End Backup This File .



Begin Backup Tablespace DRSYS  ...

Successed End Backup This File .



Begin Backup Tablespace LUNAR  ...

Successed End Backup This File .



Begin Backup CONTROLFILE to /u01/oracle/backup2/controlfile01.ctl  ...
Successed End Backup The CONTROLFILE .



Begin Backup CONTROLFILE To Trace  ...
Successed End Backup The CONTROLFILE .



Before Switch Log, The Current Log is:
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2776
Next log sequence to archive   2778
Current log sequence           2778



Begin Backup Switch Current Log  ...
Successed End Switch Log .



After Switch Log, The Ending Archive Log Number Is :
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2777
Next log sequence to archive   2779
Current log sequence           2779



Tue Oct 22 13:29:35 GMT+0700 2002

Start Backup Archive log (arch1)  ...

End Backup Archive log (arch1)  ...
Tue Oct 22 13:29:35 GMT+0700 2002




Tue Oct 22 13:29:35 GMT+0700 2002




SQL>
SQL> --set termout on;
SQL>
SQL> exit;
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
Tue Oct 22 13:29:38 GMT+0700 2002
oracle@sce>



四、确认热备正确(包括检查热备的日志)

oracle@sce> cd /u01/oracle/backup2
oracle@sce> ls -l
total 629293
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 adhoc
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:29 arch
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 bdump
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 cdump
-rw-r-----   1 oracle   dba        4628480 Oct 22 13:29 controlfile01.ctl
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 create
-rw-r-----   1 oracle   dba       88088576 Oct 22 13:29 drsys01.dbf
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 exp
-rw-r-----   1 oracle   dba       20979712 Oct 22 13:29 indx01.dbf
-rw-r--r--   1 oracle   dba           4664 Oct 22 11:10 initNEW2.ora
-rw-r-----   1 oracle   dba       10493952 Oct 22 13:29 lunar01.dbf
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 pfile
-rw-r-----   1 oracle   dba      104865792 Oct 22 13:28 rbs01.dbf
-rw-r-----   1 oracle   dba      283123712 Oct 22 13:28 system01.dbf
-rw-r-----   1 oracle   dba       71311360 Oct 22 13:28 temp01.dbf
-rw-r-----   1 oracle   dba        8396800 Oct 22 13:28 tools01.dbf
drwxr-xr-x   2 oracle   dba           8192 Oct 22 13:03 udump
-rw-r-----   1 oracle   dba       52436992 Oct 22 13:29 users01.dbf
oracle@sce>



五、设置新的ORACLE_SID
oracle@sce> ORACLE_SID=NEW2; export ORACLE_SID
oracle@sce>

六、准备科隆数据库需要的文件
创建 initNEW2.ora (/u01/oracle/backup/initNEW2.ora)
        db_name = "NEW2"
        instance_name = NEW2
        service_names = NEW2

        control_files = ("/u01/oracle/backup2/controlfile01.ctl"

        log_archive_start = true
        log_archive_dest="/u01/oracle/backup2/arch"
        log_archive_format = arch_%t_%s.arc
        background_dump_dest = /u01/oracle/backup2/bdump
        core_dump_dest = /u01/oracle/backup2/cdump
        user_dump_dest = /u01/oracle/backup2/udump
       
        为了不重建口令文件,暂时注释掉下面一行:
        #remote_login_passwordfile = exclusive


修改原来的 listener.ora (/u01/oracle/OraHome1/network/admin/listener.ora)
        加入:
                LISTENER2 =
                  (DESCRIPTION_LIST =
                    (DESCRIPTION =
                      (ADDRESS_LIST =
                        (ADDRESS = (PROTOCOL = TCP)(HOST = sce)(PORT = 1522))
                      )
                    )
                  )
               
                SID_LIST_LISTENER2 =
                  (SID_LIST =
                    (SID_DESC =
                      (GLOBAL_DBNAME = NEW2)
                      (ORACLE_HOME = /u01/oracle/OraHome1)
                      (SID_NAME = NEW2)
                    )
                  )       
                  
                  
修改原来的 tnsnames.ora (/u01/oracle/OraHome1/network/admin/listener.ora)
        加入:
                NEW2 =
                  (DESCRIPTION =
                    (ADDRESS_LIST =
                      (ADDRESS = (PROTOCOL = TCP)(HOST = sce)(PORT = 1522))
                    )
                    (CONNECT_DATA =
                      (SERVICE_NAME = NEW2)
                    )
                  )

七、启动新数据库的监听
oracle@sce> lsnrctl

LSNRCTL for DEC OSF/1 AXP: Version 8.1.7.0.0 - Production on 22-OCT-2002 13:36:03

(c) Copyright 1998 Oracle Corporation.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start listener2
Starting /u01/oracle/OraHome1/bin/tnslsnr: please wait...

TNSLSNR for DEC OSF/1 AXP: Version 8.1.7.0.0 - Production
System parameter file is /u01/oracle/OraHome1/network/admin/listener.ora
Log messages written to /u01/oracle/OraHome1/network/log/listener2.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sce)(PORT=1522)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sce)(PORT=1522)))
STATUS of the LISTENER
------------------------
Alias                     listener2
Version                   TNSLSNR for DEC OSF/1 AXP: Version 8.1.7.0.0 - Production
Start Date                22-OCT-2002 13:36:14
Uptime                    0 days 0 hr. 0 min. 1 sec
Trace Level               off
Security                  OFF
SNMP                      OFF
Listener Parameter File   /u01/oracle/OraHome1/network/admin/listener.ora
Listener Log File         /u01/oracle/OraHome1/network/log/listener2.log
Services Summary...
  NEW2          has 1 service handler(s)
The command completed successfully
LSNRCTL> exit
oracle@sce>


====================================================================
======================这步不做===================================
====================================================================
八、用initNEW2.ora来nomount数据库
oracle@sce> ORACLE_SID=NEW2; export ORACLE_SID
oracle@sce>  sqlplus /nolog

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 08:26:39 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

SQL> conn internal
Connected to an idle instance.
SQL> startup nomount pfile=/u01/oracle/backup2/initNEW2.ora
ORACLE instance started.

Total System Global Area  241939428 bytes
Fixed Size                   103396 bytes
Variable Size              82542592 bytes
Database Buffers          159113216 bytes
Redo Buffers                 180224 bytes
SQL>


====================================================================
=========================下面照做==============================================
====================================================================
九、在主数据库上用backup controlfile to trace备份控制文件
(即,创建控制文件的跟踪文件。这个是为了以后创建新数据库的控制文件用的)
oracle@sce> ORACLE_SID=SCEDB; export ORACLE_SID
oracle@sce> sqlplus internal

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 13:36:58 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production

SQL> alter database backup controlfile to trace;

Database altered.

SQL> exit
Disconnected from Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
oracle@sce>

十、编辑那个跟踪文件,保存为一个sql脚本(准备创建新数据库的跟踪文件)
注意3个地方:
(1). SET DATABASE "NEW2" RESETLOGS
(2). LOGFILE
          GROUP 1 '/u01/oracle/backup2/redo01.log'  SIZE 500K,
          GROUP 2 '/u01/oracle/backup2/redo02.log'  SIZE 500K,
          GROUP 3 '/u01/oracle/backup2/redo03.log'  SIZE 500K
(3). DATAFILE
          '/u01/oracle/backup2/system01.dbf',
          '/u01/oracle/backup2/tools01.dbf',
          '/u01/oracle/backup2/rbs01.dbf',
          '/u01/oracle/backup2/temp01.dbf',
          '/u01/oracle/backup2/users01.dbf',
          '/u01/oracle/backup2/indx01.dbf',
          '/u01/oracle/backup2/drsys01.dbf',
          '/u01/oracle/backup2/lunar01.dbf'

        完整的创建新控制文件的脚本如下:
        CREATE CONTROLFILE SET DATABASE "NEW2" RESETLOGS ARCHIVELOG
            MAXLOGFILES 32
            MAXLOGMEMBERS 2
            MAXDATAFILES 254
            MAXINSTANCES 8
            MAXLOGHISTORY 3630
        LOGFILE
                  GROUP 1 '/u01/oracle/backup2/redo01.log'  SIZE 500K,
                  GROUP 2 '/u01/oracle/backup2/redo02.log'  SIZE 500K,
                  GROUP 3 '/u01/oracle/backup2/redo03.log'  SIZE 500K
        DATAFILE
          '/u01/oracle/backup2/system01.dbf',
          '/u01/oracle/backup2/tools01.dbf',
          '/u01/oracle/backup2/rbs01.dbf',
          '/u01/oracle/backup2/temp01.dbf',
          '/u01/oracle/backup2/users01.dbf',
          '/u01/oracle/backup2/indx01.dbf',
          '/u01/oracle/backup2/drsys01.dbf',
          '/u01/oracle/backup2/lunar01.dbf'
        CHARACTER SET US7ASCII
        ;

十一、执行这个脚本,创建控制文件
====================================================================
======================这步不做===================================
====================================================================
(1). 修改initNEW.ora,重新指定控制文件的名字
#control_files = ("/u01/oracle/backup2/controlfile01.ctl"
control_files = ("/u01/oracle/backup2/control01.ctl"

====================================================================
已经证明,如果不做这一步,下面创建控制文件就会出错:
做到第十一步的(4),就会出错
SQL> @/u01/oracle/back_script/ora_1381.sql
CREATE CONTROLFILE SET DATABASE "NEW2" RESETLOGS ARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-00200: controlfile could not be created
ORA-00202: controlfile: '/u01/oracle/backup2/controlfile01.ctl'
ORA-27038: skgfrcre: file exists


SQL>

如果出错,就shutdown,然后回来从这一步重新做

====================================================================
=========================下面照做==============================================
====================================================================
(2). 设置ORACLE_SID=NEW2
oracle@sce> ORACLE_SID=NEW2; export ORACLE_SID

(3). 用pfile=/u01/oracle/backup2/initNEW2.ora来nomount 数据库
oracle@sce>  sqlplus /nolog

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 08:26:39 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.

SQL> conn internal
Connected to an idle instance.
SQL> startup nomount pfile=/u01/oracle/backup2/initNEW2.ora
ORACLE instance started.

Total System Global Area  241939428 bytes
Fixed Size                   103396 bytes
Variable Size              82542592 bytes
Database Buffers          159113216 bytes
Redo Buffers                 180224 bytes
SQL>

确定是新的数据库
SQL> host
$ env | grep ORACLE
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/OraHome1
ORACLE_SID=NEW2
$ exit

SQL>


(4). 执行创建控制文件的脚本
SQL> @/u01/oracle/back_script/ora_9413.sql

Control file created.

SQL>
这一步执行完,数据库会在initNEW2.ora中指定的位置创建控制文件
#control_files = ("/u01/oracle/backup2/controlfile01.ctl"
control_files = ("/u01/oracle/backup2/control01.ctl"

SQL> host
$ cd /u01/oracle/backup2
$ ls
$
可见,已经创建了control01.ctl

(6). shutdown数据库
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL>

====================================================================
======================这步不做===================================
====================================================================
(7). 修改initNEW2.ora中的控制文件的位置和名字
修改为
#control_files = ("/u01/oracle/backup2/controlfile01.ctl"
#control_files = ("/u01/oracle/backup2/control01.ctl"
control_files = ("/u01/oracle/backup2/control02.ctl"

====================================================================
=========================下面照做==============================================
====================================================================

(8). 重新nomount pfile=/u01/oracle/backup2/initNEW2.ora
$ exit

SQL> startup nomount pfile=/u01/oracle/backup2/initNEW2.ora
ORACLE instance started.

Total System Global Area  241939428 bytes
Fixed Size                   103396 bytes
Variable Size              82542592 bytes
Database Buffers          159113216 bytes
Redo Buffers                 180224 bytes
SQL>

====================================================================
======================这步不做===================================
====================================================================
(9). 再次执行那个创建控制文件的脚本
SQL> @/u01/oracle/back_script2/ora_9413.sql

Cluster altered.

SQL>
这一步执行完,数据库会在initNEW.ora中指定的位置创建控制文件
#control_files = ("/u01/oracle/backup2/controlfile01.ctl"
#control_files = ("/u01/oracle/backup2/control01.ctl"
control_files = ("/u01/oracle/backup2/control02.ctl")

SQL> host
$ cd /u01/oracle/backup2
$ ls
$
可见,已经创建了control02.ctl



十二、恢复数据库(用auto )
$ exit

====================================================================
=========================下面照做==============================================
====================================================================
SQL> alter database mount;

Database altered.

SQL>
SQL> recover database using backup controlfile;
ORA-00279: change 557654 generated at 10/22/2002 13:27:13 needed for thread 1
ORA-00289: suggestion : /u01/oracle/backup2/arch/arch_1_2778.arc
ORA-00280: change 557654 for thread 1 is in sequence #2778


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto        ------------敲 " auto "
ORA-00279: change 557671 generated at 10/22/2002 13:29:34 needed for thread 1
ORA-00289: suggestion : /u01/oracle/backup2/arch/arch_1_2779.arc
ORA-00280: change 557671 for thread 1 is in sequence #2779
ORA-00278: log file '/u01/oracle/backup2/arch/arch_1_2778.arc' no longer needed
for this recovery


ORA-00308: cannot open archived log '/u01/oracle/backup2/arch/arch_1_2779.arc'
ORA-27037: unable to obtain file status
Compaq Tru64 UNIX Error: 2: No such file or directory
Additional information: 3


SQL>

十三、再次恢复(用cancel)
与前面热备值日中的"After Switch Log"对比日志号,确保几经把全部日志都恢复了:
After Switch Log, The Ending Archive Log Number Is :
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/oracle/admin/SCEDB/arch
Oldest online log sequence     2777
Next log sequence to archive   2779
Current log sequence           2779

当前是2779,那么恢复到2778完成,提示2779的时候敲"cancel"

SQL> recover database using backup controlfile until cancel;
ORA-00279: change 557671 generated at 10/22/2002 13:29:34 needed for thread 1
ORA-00289: suggestion : /u01/oracle/backup2/arch/arch_1_2779.arc
ORA-00280: change 557671 for thread 1 is in sequence #2779


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel        ------------敲 " cancel "
Media recovery cancelled.
SQL>

十四、用open resetlogs打开数据库
这一步建立了initNEW.ora中指定的redo log file, 并且打开数据库
SQL> alter database open resetlogs;

Database altered.

SQL>

十五、验证数据是否恢复
为了方便,可以新开一个session(窗口),
并设置ORACLE_SID=SCEDB; export ORACLE_SID
然后打开老数据库,和新数据库作对比。

在窗口一(老数据库):
oracle@sce> ORACLE_SID=SCEDB;export ORACLE_SID
oracle@sce> env | grep ORACLE
ORACLE_BASE=/u01/oracle
ORACLE_HOME=/u01/oracle/OraHome1
ORACLE_SID=SCEDB
oracle@sce> sqlplus lunar/lunar

SQL*Plus: Release 8.1.7.0.0 - Production on Tue Oct 22 12:47:23 2002

(c) Copyright 2000 Oracle Corporation.  All rights reserved.


Connected to:
Oracle8i Release 8.1.7.0.0 - Production
JServer Release 8.1.7.0.0 - Production
SQL> select * from test;      

         A
----------
         1
         2
         3

SQL>

在窗口2(新数据库):

SQL> conn lunar/lunar
Connected.
SQL> select * from test;

         A
----------
         1
         2

SQL>


已经验证数据库除了redo的没有回复,凡是归档的全部回复了
(参考最初的假设:
到现在为止,用户lunar的表test中有2条被归档,即 1 和 2
还有一条没有提交的在redo 中,即3;
现在在新窗口(sqlplus internal)中做热备,当前的archive log为2777,
注意观察热备结束后的archive log,并记录下来,以便对照数据回复的情况。


结论:该热备份为有效数据库备份

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表