<!-- logo and buttons -->
|
<iframe id="ads" name="ads" marginwidth="0" marginheight="0" src="http://www.itpub.net/adv/banner.php?areaid=2&posid=1" frameborder="0" width="750" scrolling="no" height="90"></iframe> |
<!-- toplinks -->
首页 |
IXPUB |
设置 |
注册 |
登录 |
商店 搜索 培训
|
Wiki |
Blog |
Flash |
SCM |
SAP |
丛书 |
<!--
<td class=block onmouseover="this.className='blockover'; style.cursor='hand'";
onmouseout="this.className='block'"><a href="attachlist.php?s=">附件</a></td>
-->
退出 |
|
|
<!-- /toplinks --> |
|
<!-- /logo and buttons --><!-- content table -->
<!-- breadcrumb, nav links -->
|
<!-- spacer -->
|
<!-- /spacer --><!-- first unread and next/prev -->
<iframe id="ads" name="ads" align="left" marginwidth="0" marginheight="0" src="/adv/banner.php?areaid=2&posid=3" frameborder="0" width="750" scrolling="no" height="90"></iframe>
|
|
好评列表 加入资料库 上一主题 下一主题
|
<!-- first unread and next/prev -->
作者 |
<!-- Thread nav and post images -->
<!-- /Thread nav and post images --> |
|
<!-- /spacer --> |
|
<!-- /spacer -->
<script language="JavaScript" type="text/javascript">
function doZoom730225(size){ document.getElementById('text730225').style.fontSize=size+'px' }
document.getElementById('text730225').style.fontSize='12px'
</script>
<script language="JavaScript" type="text/javascript">
function doZoom730229(size){ document.getElementById('text730229').style.fontSize=size+'px' }
document.getElementById('text730229').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
第四章. 数据库恢复案例 4.1非归档模式下的备份与恢复 备份方案:采用OS冷备份 1.连接数据库并创建测试表 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test(a int); Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2.备份数据库 SQL> @coldbak.sql 或在DOS下 svrmgrl @coldbak.sql
3.再插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 4.关闭数据库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
5.毁坏一个或多个数据文件,如删除user01.dbf C:/>del D:/ORACLE/ORADATA/TEST/USERS01.DBF 模拟媒体毁坏
6.重新启动数据库,会发现如下错误 SQL> startup ORACLE instance started.
Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:/ORACLE/ORADATA/TEST/USERS01.DBF'
在报警文件中,会有更详细的信息 Errors in file D:/Oracle/admin/test/bdump/testDBW0.TRC: ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:/ORACLE/ORADATA/TEST/USERS01.DBF' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
7.拷贝备份复原到原来位置(restore过程) C:/>xcopy d:/database/*.* d:/oracle/oradata/test/H/R/S
8.打开数据库,检查数据 SQL> alter database open; Database altered. SQL> select * from test; A --------------------------------------- 1
这里可以发现,数据库恢复成功,但在备份之后与崩溃之前的数据丢失了。 说明: 1、非归档模式下的恢复方案可选性很小,一般情况下只能有一种恢复方式,就是数据库的冷备份的完全恢复,仅仅需要拷贝原来的备份就可以(restore),不需要recover。 2、这种情况下的恢复,可以完全恢复到备份的点上,但是可能是丢失数据的,在备份之后与崩溃之前的数据将全部丢失。 3、不管毁坏了多少数据文件或是联机日志或是控制文件,都可以通过这个办法恢复,因为这个恢复过程是Restore所有的冷备份文件,而这个备份点上的所有文件是一致的,与最新的数据库没有关系,就好比把数据库又放到了一个以前的“点”上。 4、对于非归档模式下,最好的办法就是采用OS的冷备份,建议不要用RMAN来作冷备份,效果不好,因为RMAN不备份联机日志,restore不能根本解决问题。 5、如果没有备份联机日志,如RMAN的备份,就需要利用不完全恢复(until cancel)的方法来重新创建联机日志文件
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
3楼 03-05-29 13:16 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730241(size){ document.getElementById('text730241').style.fontSize=size+'px' }
document.getElementById('text730241').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
4.2归档模式下丢失或损坏一个数据文件 4.2.1 OS备份方案 在归档方式下损坏或丢失一个数据文件,如果存在相应的备份与该备份以来的归档日志,恢复还是比较简单的,可以作到尽量少的Down机时间,并能作到数据库的完全恢复。 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test(a int) tablespace users; Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库 SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql
3、继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; System altered. SQL> alter system switch logfile; System altered.
4、关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down C:/>del D:/ORACLE/ORADATA/TEST/USERS01.DBF 模拟媒体毁坏
5、启动数据库错误,脱机该数据文件 SQL> startup ORACLE instance started.
Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:/ORACLE/ORADATA/TEST/USERS01.DBF' 还可以查看报警文件(见上一个恢复案例)或动态视图v$recover_file 如SQL> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME ---------- ------- ------------------ ---------- ----------- 3 ONLINE 1013500 2003-05-07
脱机数据文件 SQL> alter database datafile 3 offline drop; Database altered.
6、打开数据库,拷贝备份回来(restore),恢复(recover)该数据文件,并联机 SQL> alter database open; Database altered. 拷贝备份从备份处 copy d:/databak/ users01.dbf d:/oracle/oradata/test; 恢复该数据文件 SQL> recover datafile 3; ORA-00279: change 1053698 generated at 05/07/2003 17:51:26 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00304.ARC ORA-00280: change 1053698 for thread 1 is in sequence #304
Specify log: {<ret></ret>=suggested | filename | AUTO | CANCEL} AUTO ORA-00279: change 1053701 generated at 05/07/2003 17:51:39 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00305.ARC ORA-00280: change 1053701 for thread 1 is in sequence #305 ORA-00278: log file 'D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00304.ARC' no longer needed for this recovery
Log applied. Media recovery complete. 恢复成功,联机该数据文件 SQL> alter database datafile 3 online; Database altered.
7、检查数据库的数据(完全恢复) SQL> select * from test; A --------------------------------------- 1 2 说明: 1、采用热备份,需要运行在归档模式下,可以实现数据库的完全恢复,也就是说,从备份后到数据库崩溃时的数据都不会丢失。 2、可以采用全备份数据库的方式备份,对于特殊情况,也可以只备份特定的数据文件,如只备份用户表空间(一般情况下对于某些写特别频繁的数据文件,可以单独加大备份频率) 3、如果在恢复过程中,发现损坏的是多个数据文件,即可以采用一个一个数据文件的恢复方法(第5步中需要对数据文件一一脱机,第6步中需要对数据文件分别恢复),也可以采用整个数据库的恢复方法。 4、如果是系统表空间的损坏,不能采用此方法
4.2.2 RMAN备份方案 RMAN也可以进行联机备份,而且备份与恢复方法将比OS备份更简单可靠。 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected.
SQL> create table test(a int) tablespace users; Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库表空间users C:/>rman Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure RMAN-06005: connected to target database: TEST (DBID=1788174720)
RMAN> run{ 2> allocate channel c1 type disk; 3> backup tag 'tsuser' format 'd:/backup/tsuser_%u_%s_%p' 4> tablespace users; 5> release channel c1; 6> }
RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=16 devtype=DISK
RMAN-03022: compiling command: backup RMAN-03025: performing implicit partial resync of recovery catalog RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03023: executing command: backup RMAN-08008: channel c1: starting full datafile backupset RMAN-08502: set_count=5 set_stamp=494177612 creation_time=16-MAY-03 RMAN-08010: channel c1: specifying datafile(s) in backupset RMAN-08522: input datafile fno=00003 name=D:/ORACLE/ORADATA/TEST/USER01.DBF RMAN-08013: channel c1: piece 1 created RMAN-08503: piece handle=D:/BACKUP/TSUSER_05EN93AC_5_1 comment=NONE RMAN-08525: backup set complete, elapsed time: 00:00:01 RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 RMAN>
3、继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; System altered. SQL>r 1* alter system switch logfile; System altered.
4、关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down
C:/>del D:/ORACLE/ORADATA/TEST/USER01.DBF
5、启动数据库,检查错误 SQL> startup ORACLE instance started. Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted. ORA-01157: cannot identify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:/ORACLE/ORADATA/TEST/USER01.DBF'
6、先打开数据库 SQL> alter database datafile 3 offline drop; Database altered. SQL> alter database open; Database altered.
7、恢复该表空间 恢复脚本可以是恢复单个数据文件 run{ allocate channel c1 type disk; restore datafile 3; recover datafile 3; sql 'alter database datafile 3 online'; release channel c1; } 也可以是,恢复表空间 run{ allocate channel c1 type disk; restore tablespace users; recover tablespace users; sql 'alter database datafile 3 online'; release channel c1; } 过程如下: C:/>rman Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure RMAN-06005: connected to target database: TEST (DBID=1788174720)
RMAN> run{ 2> allocate channel c1 type disk; 3> restore datafile 3; 4> recover datafile 3; 5> sql 'alter database datafile 3 online'; 6> release channel c1; 7> }
RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=13 devtype=DISK RMAN-03022: compiling command: restore RMAN-03022: compiling command: IRESTORE RMAN-03023: executing command: IRESTORE RMAN-08016: channel c1: starting datafile backupset restore RMAN-08502: set_count=5 set_stamp=494177612 creation_time=16-MAY-03 RMAN-08089: channel c1: specifying datafile(s) to restore from backup set RMAN-08523: restoring datafile 00003 to D:/ORACLE/ORADATA/TEST/USER01.DBF RMAN-08023: channel c1: restored backup piece 1 RMAN-08511: piece handle=D:/BACKUP/TSUSER_05EN93AC_5_1 tag=TSUSER params=NULL RMAN-08024: channel c1: restore complete RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: recover RMAN-03022: compiling command: recover(1) RMAN-03022: compiling command: recover(2) RMAN-03022: compiling command: recover(3) RMAN-03023: executing command: recover(3) RMAN-08054: starting media recovery RMAN-03022: compiling command: recover(4) RMAN-06050: archivelog thread 1 sequence 332 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00332.ARC RMAN-06050: archivelog thread 1 sequence 333 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00333.ARC RMAN-06050: archivelog thread 1 sequence 334 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00334.ARC RMAN-03023: executing command: recover(4) RMAN-08515: archivelog filename=D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00332.ARC thread=1 sequence=332 RMAN-08055: media recovery complete RMAN-03022: compiling command: sql RMAN-06162: sql statement: alter database datafile 3 online RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 RMAN>
8、检查数据是否完整 SQL> alter database open; Database altered.
SQL> select * from test; A --------------------------------------- 1 2 说明: 1、RMAN也可以实现单个表空间或数据文件的恢复,恢复过程可以在mount下或open方式下,如果在open方式下恢复,可以减少down机时间 2、如果损坏的是一个数据文件,建议offline并在open方式下恢复 3、这里可以看到,RMAN进行数据文件与表空间恢复的时候,代码都比较简单,而且能保证备份与恢复的可靠性,所以建议采用RMAN的备份与恢复
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
4楼 03-05-29 13:20 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730252(size){ document.getElementById('text730252').style.fontSize=size+'px' }
document.getElementById('text730252').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
4.3丢失多个数据文件,实现整个数据库的恢复 4.3.1 OS备份方案 OS备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected.
SQL> create table test(a int); Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库,备份除临时数据文件后的所数据文件 SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql
3、继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; System altered. SQL> alter system switch logfile; System altered.
4、关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down
C:/>del D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF C:/>del D:/ORACLE/ORADATA/TEST/INDX01.DBF C:/>del D:/ORACLE/ORADATA/TEST/TOOLS01.DBF C:/>del D:/ORACLE/ORADATA/TEST/RBS01.DBF 模拟媒体毁坏(这里删除多个数据文件)
5、启动数据库,检查错误 SQL> STARTUP ORACLE instance started. Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: 'D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF'
详细信息可以查看报警文件 ORA-1157 signalled during: ALTER DATABASE OPEN... Thu May 08 09:39:36 2003 Errors in file D:/Oracle/admin/test/bdump/testDBW0.TRC: ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: 'D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
Thu May 08 09:39:36 2003 Errors in file D:/Oracle/admin/test/bdump/testDBW0.TRC: ORA-01157: cannot identify/lock data file 2 - see DBWR trace file ORA-01110: data file 2: 'D:/ORACLE/ORADATA/TEST/RBS01.DBF' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
Thu May 08 09:39:36 2003 Errors in file D:/Oracle/admin/test/bdump/testDBW0.TRC: ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: 'D:/ORACLE/ORADATA/TEST/TOOLS01.DBF' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
Thu May 08 09:39:36 2003 Errors in file D:/Oracle/admin/test/bdump/testDBW0.TRC: ORA-01157: cannot identify/lock data file 6 - see DBWR trace file ORA-01110: data file 6: 'D:/ORACLE/ORADATA/TEST/INDX01.DBF' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
通过查询v$recover_file可以看到 SQL> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME ---------- ------- ------------------ ---------- ----------- 1 ONLINE FILE NOT FOUND 0 2 ONLINE FILE NOT FOUND 0 5 ONLINE FILE NOT FOUND 0 6 ONLINE FILE NOT FOUND 0 有四个数据文件需要恢复
6、拷贝备份回到原地点(restore),开始恢复数据库(recover) restore过程: C:/>copy D:/DATABAK/SYSTEM01.DBF D:/ORACLE/ORADATA/TEST/ C:/>copy D:/DATABAK/TEST/INDX01.DBF D:/ORACLE/ORADATA/TEST/ C:/>copy D:/DATABAK/TEST/TOOLS01.DBF D:/ORACLE/ORADATA/TEST/ C:/>copy D:/DATABAK/TEST/RBS01.DBF.DBF D:/ORACLE/ORADATA/TEST/
Recover过程: SQL> recover database; ORA-00279: change 1073849 generated at 05/08/2003 08:58:35 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00311.ARC ORA-00280: change 1073849 for thread 1 is in sequence #311
Specify log: {<ret></ret>=suggested | filename | AUTO | CANCEL} auto ORA-00279: change 1073856 generated at 05/08/2003 09:03:27 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00312.ARC ORA-00280: change 1073856 for thread 1 is in sequence #312 ORA-00278: log file 'D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00311.ARC' no longer needed for this recovery
ORA-00279: change 1073858 generated at 05/08/2003 09:11:43 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00313.ARC ORA-00280: change 1073858 for thread 1 is in sequence #313 ORA-00278: log file 'D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00312.ARC' no longer needed for this recovery
ORA-00279: change 1073870 generated at 05/08/2003 09:11:46 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00314.ARC ORA-00280: change 1073870 for thread 1 is in sequence #314 ORA-00278: log file 'D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00313.ARC' no longer needed for this recovery
Log applied. Media recovery complete.
7、打开数据库,检查数据库的数据(完全恢复) SQL> alter database open; Database altered. SQL> select * from test; A --------------------------------------- 1 2
说明: 1、只要有备份与归档存在,就可以实现数据库的完全恢复(不丢失数据) 2、适合于丢失大量数据文件,或包含系统数据文件在内的数据库的恢复 3、恢复过程在mount下进行,如果恢复成功,再打开数据库,down机时间可能比较长一些。
GHJ4.3.2 RMAN备份方案 RMAN备份归档模式下损坏(丢失)多个数据文件,进行整个数据库的恢复 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test(a int); Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库 DOS下 C:>/ rman cmdfile=bakup.rcv msglog=backup.log;
以下是backup.log内容。 Recovery Manager: Release 8.1.6.0.0 - Production RMAN> # script:bakup.rcv 2> # creater:chenjiping 3> # date:5.8.2003 4> # desc:backup all database datafile in archive with rman 5> 6> #connect database 7> connect rcvcat rman/rman@back; 8> connect target internal/virpure; 9> 10> #start backup database 11> run{ 12> allocate channel c1 type disk; 13> backup full tag 'dbfull' format 'd:/backup/full%u_%s_%p' database 14> include current controlfile; 15> sql 'alter system archive log current'; 16> release channel c1; 17> } 18> #end 19>
RMAN-06008: connected to recovery catalog database RMAN-06005: connected to target database: TEST (DBID=1788174720) RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=15 devtype=DISK RMAN-03022: compiling command: backup RMAN-03023: executing command: backup RMAN-08008: channel c1: starting full datafile backupset RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03 RMAN-08010: channel c1: specifying datafile(s) in backupset RMAN-08522: input datafile fno=00002 name=D:/ORACLE/ORADATA/TEST/RBS01.DBF RMAN-08522: input datafile fno=00001 name=D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF RMAN-08011: including current controlfile in backupset RMAN-08522: input datafile fno=00005 name=D:/ORACLE/ORADATA/TEST/TOOLS01.DBF RMAN-08522: input datafile fno=00004 name=D:/ORACLE/ORADATA/TEST/TEMP01.DBF RMAN-08522: input datafile fno=00006 name=D:/ORACLE/ORADATA/TEST/INDX01.DBF RMAN-08522: input datafile fno=00003 name=D:/ORACLE/ORADATA/TEST/USER01.DBF RMAN-08013: channel c1: piece 1 created RMAN-08503: piece handle=D:/BACKUP/FULL04EN5UG0_4_1 comment=NONE RMAN-08525: backup set complete, elapsed time: 00:01:16 RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: sql RMAN-06162: sql statement: alter system archive log current RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 Recovery Manager complete. 到这里表示备份成功。
3、继续在测试表中插入记录 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; System altered. SQL> alter system switch logfile; System altered.
4、关闭数据库,模拟丢失数据文件 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down C:/>del D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF C:/>del D:/ORACLE/ORADATA/TEST/INDX01.DBF C:/>del D:/ORACLE/ORADATA/TEST/TOOLS01.DBF C:/>del D:/ORACLE/ORADATA/TEST/RBS01.DBF
5、启动数据库,检查错误 SQL> STARTUP ORACLE instance started. Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: 'D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF'
查询v$recover_file SQL> select * from v$recover_file;
FILE# ONLINE ERROR CHANGE# TIME ---------- ------- ------------------ ---------- ----------- 1 ONLINE FILE NOT FOUND 0 2 ONLINE FILE NOT FOUND 0 5 ONLINE FILE NOT FOUND 0 6 ONLINE FILE NOT FOUND 0 可以知道有四个数据文件需要恢复
6、利用RMAN进行恢复 C:/>rman Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure RMAN-06005: connected to target database: TEST (DBID=1788174720) RMAN> run{ 2> allocate channel c1 type disk; 3> restore database; 4> recover database; 5> sql 'alter database open'; 6> release channel c1; 7> }
RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=17 devtype=DISK RMAN-03022: compiling command: restore RMAN-03025: performing implicit partial resync of recovery catalog RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: IRESTORE RMAN-03023: executing command: IRESTORE RMAN-08016: channel c1: starting datafile backupset restore RMAN-08502: set_count=4 set_stamp=494074368 creation_time=15-MAY-03 RMAN-08089: channel c1: specifying datafile(s) to restore from backup set RMAN-08523: restoring datafile 00001 to D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF RMAN-08523: restoring datafile 00002 to D:/ORACLE/ORADATA/TEST/RBS01.DBF RMAN-08523: restoring datafile 00003 to D:/ORACLE/ORADATA/TEST/USER01.DBF RMAN-08523: restoring datafile 00004 to D:/ORACLE/ORADATA/TEST/TEMP01.DBF RMAN-08523: restoring datafile 00005 to D:/ORACLE/ORADATA/TEST/TOOLS01.DBF RMAN-08523: restoring datafile 00006 to D:/ORACLE/ORADATA/TEST/INDX01.DBF RMAN-08023: channel c1: restored backup piece 1 RMAN-08511: piece handle=D:/BACKUP/FULL04EN5UG0_4_1 tag=DBFULL params=NULL RMAN-08024: channel c1: restore complete RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: recover RMAN-03022: compiling command: recover(1) RMAN-03022: compiling command: recover(2) RMAN-03022: compiling command: recover(3) RMAN-03023: executing command: recover(3) RMAN-08054: starting media recovery RMAN-03022: compiling command: recover(4) RMAN-06050: archivelog thread 1 sequence 327 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00327.ARC RMAN-06050: archivelog thread 1 sequence 328 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00328.ARC RMAN-06050: archivelog thread 1 sequence 329 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00329.ARC RMAN-06050: archivelog thread 1 sequence 330 is already on disk as file D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00330.ARC RMAN-03023: executing command: recover(4) RMAN-08515: archivelog filename=D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00327.ARC thread=1 sequence=327 RMAN-08515: archivelog filename=D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00328.ARC thread=1 sequence=328 RMAN-08055: media recovery complete RMAN-03022: compiling command: sql RMAN-06162: sql statement: alter database open RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1 RMAN>
7、检查数据库的数据(完全恢复) SQL> select * from test; A --------------------------------------- 1 2
说明: 1、只要有备份与归档存在,RMAN也可以实现数据库的完全恢复(不丢失数据) 2、同OS备份数据库恢复,适合于丢失大量数据文件,或包含系统数据文件在内的数据库的恢复 3、目标数据库在mount下进行,如果恢复成功,再打开数据库。 4、RMAN的备份与恢复命令相对比较简单并可靠,建议有条件的话,都采用RMAN进行数据库的备份。
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
5楼 03-05-29 13:25 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730271(size){ document.getElementById('text730271').style.fontSize=size+'px' }
document.getElementById('text730271').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
4.4 不完全恢复案例 4.4.1 OS备份下的基于时间的恢复 不完全恢复可以分为基于时间的恢复,基于改变的恢复与基于撤消的恢复,这里已基于时间的恢复为例子来说明不完全恢复过程。 基于时间的恢复可以不完全恢复到现在时间之前的某一个时间,对于某些误操作,如删除了一个数据表,可以在备用恢复环境上恢复到表的删除时间之前,然后把该表导出到正式环境,避免一个人为的错误。 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test(a int); Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库,这里最好备份所有的数据文件,包括临时数据文件 SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql 或冷备份也可以
3、删除测试表,假定删除前的时间为T1,在删除之前,便于测试,继续插入数据并应用到归档。 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; Statement processed. SQL> alter system switch logfile; Statement processed.
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY ------------------- 2003-05-21 14:43:01 SQL> drop table test; Table dropped.
4、准备恢复到时间点T1,找回删除的表,先关闭数据库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down.
5、拷贝刚才备份的所有数据文件回来 C:/>copy D:/DATABAK/*.DBF D:/ORACLE/ORADATA/TEST/
6、启动到mount下 SQL> startup mount; ORACLE instance started. Total System Global Area 102020364 bytes Fixed Size 70924 bytes Variable Size 85487616 bytes Database Buffers 16384000 bytes Redo Buffers 77824 bytes Database mounted.
7、开始不完全恢复数据库到T1时间 SQL> recover database until time '2003-05-21:14:43:01'; ORA-00279: change 30944 generated at 05/21/2003 14:40:06 needed for thread 1 ORA-00289: suggestion : D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00191.ARC ORA-00280: change 30944 for thread 1 is in sequence #191
Specify log: {<ret></ret>=suggested | filename | AUTO | CANCEL} auto Log applied. Media recovery complete. 8、打开数据库,检查数据 SQL> alter database open resetlogs;
Database altered. SQL> select * from test; A --------------------------------------- 1 2
说明: 1、不完全恢复最好备份所有的数据,冷备份亦可,因为恢复过程是从备份点往后恢复的,如果因为其中一个数据文件的时间戳(SCN)大于要恢复的时间点,那么恢复都是不可能成功的。 2、不完全恢复有三种方式,过程都一样,仅仅是recover命令有所不一样,这里用基于时间的恢复作为示例。 3、不完全恢复之后,都必须用resetlogs的方式打开数据库,建议马上再做一次全备份,因为resetlogs之后再用以前的备份恢复是很难了。 4、以上是在删除之前获得时间,但是实际应用中,很难知道删除之前的实际时间,但可以采用大致时间即可,或可以采用分析日志文件(logmnr),取得精确的需要恢复的时间。 5、一般都是在测试机后备用机器上采用这种不完全恢复,恢复之后导出/导入被误删的表回生产系统
4.4.2 RMAN备份下的基于改变的恢复 以上用OS备份说明了一个基于时间的恢复,现在用RMAN说明一个基于改变的恢复 1、连接数据库,创建测试表并插入记录 SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 (c) Copyright 1999 Oracle Corporation. All rights reserved. SQL> connect internal/password as sysdba; Connected. SQL> create table test(a int); Table created SQL> insert into test values(1); 1 row inserted SQL> commit; Commit complete
2、备份数据库 C:/>rman Recovery Manager: Release 8.1.6.0.0 - Production RMAN> connect rcvcat rman/rman@back RMAN-06008: connected to recovery catalog database RMAN> connect target internal/virpure RMAN-06005: connected to target database: TEST (DBID=874705288)
RMAN> run{ 2> allocate channel c1 type disk; 3> backup full tag 'dbfull' format 'd:/backup/full%u_%s_%p' database 4> include current controlfile; 5> sql 'alter system archive log current'; 6> release channel c1; 7> }
RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=12 devtype=DISK RMAN-03022: compiling command: backup RMAN-03023: executing command: backup RMAN-08008: channel c1: starting full datafile backupset RMAN-08502: set_count=1 set_stamp=494607834 creation_time=21-MAY-03 RMAN-08010: channel c1: specifying datafile(s) in backupset RMAN-08522: input datafile fno=00001 name=D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF RMAN-08011: including current controlfile in backupset RMAN-08522: input datafile fno=00002 name=D:/ORACLE/ORADATA/TEST/RBS01.DBF RMAN-08522: input datafile fno=00003 name=D:/ORACLE/ORADATA/TEST/USERS01.DBF RMAN-08522: input datafile fno=00004 name=D:/ORACLE/ORADATA/TEST/TEMP01.DBF RMAN-08522: input datafile fno=00005 name=D:/ORACLE/ORADATA/TEST/TOOLS01.DBF RMAN-08522: input datafile fno=00006 name=D:/ORACLE/ORADATA/TEST/INDX01.DBF RMAN-08013: channel c1: piece 1 created RMAN-08503: piece handle=D:/BACKUP/FULL01ENM7EQ_1_1 comment=NONE RMAN-08525: backup set complete, elapsed time: 00:00:16 RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete
RMAN-03022: compiling command: sql RMAN-06162: sql statement: alter system archive log current RMAN-03023: executing command: sql
RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1
RMAN>
3、删除测试表,在删除之前,便于测试,继续插入数据并应用到归档,并获取删除前的scn号。 SQL> insert into test values(2); 1 row inserted SQL> commit; Commit complete SQL> select * from test; A --------------------------------------- 1 2 SQL> alter system switch logfile; Statement processed. SQL> alter system switch logfile; Statement processed.
SQL> select max(ktuxescnw * power(2, 32) + ktuxescnb) scn from x$ktuxe; SCN ---------- 31014 SQL> drop table test; Table dropped.
4、准备恢复到SCN 31014,先关闭数据库,然后启动到mount下 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 53126412 bytes Fixed Size 70924 bytes Variable Size 26763264 bytes Database Buffers 26214400 bytes Redo Buffers 77824 bytes Database mounted.
5、开始恢复到改变点SCN 31014 RMAN> run{ 2> allocate channel c1 type disk; 3> restore database; 4> recover database until scn 31014; 5> sql 'ALTER DATABASE OPEN RESETLOGS'; 6> release channel c1; 7> }
RMAN-03022: compiling command: allocate RMAN-03023: executing command: allocate RMAN-08030: allocated channel: c1 RMAN-08500: channel c1: sid=10 devtype=DISK RMAN-03022: compiling command: restore RMAN-03022: compiling command: IRESTORE RMAN-03023: executing command: IRESTORE RMAN-08016: channel c1: starting datafile backupset restore RMAN-08502: set_count=1 set_stamp=494613682 creation_time=21-MAY-03 RMAN-08089: channel c1: specifying datafile(s) to restore from backup set RMAN-08523: restoring datafile 00001 to D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF RMAN-08523: restoring datafile 00002 to D:/ORACLE/ORADATA/TEST/RBS01.DBF RMAN-08523: restoring datafile 00003 to D:/ORACLE/ORADATA/TEST/USERS01.DBF RMAN-08523: restoring datafile 00004 to D:/ORACLE/ORADATA/TEST/TEMP01.DBF RMAN-08523: restoring datafile 00005 to D:/ORACLE/ORADATA/TEST/TOOLS01.DBF RMAN-08523: restoring datafile 00006 to D:/ORACLE/ORADATA/TEST/INDX01.DBF RMAN-08023: channel c1: restored backup piece 1 RMAN-08511: piece handle=D:/BACKUP/FULL01ENMD5I_1_1 tag=DBFULL params=NULL RMAN-08024: channel c1: restore complete RMAN-03023: executing command: partial resync RMAN-08003: starting partial resync of recovery catalog RMAN-08005: partial resync complete RMAN-03022: compiling command: recover RMAN-03022: compiling command: recover(1) RMAN-03022: compiling command: recover(2) RMAN-03022: compiling command: recover(3) RMAN-03023: executing command: recover(3) RMAN-08054: starting media recovery RMAN-03022: compiling command: recover(4) RMAN-06050: archivelog thread 1 sequence 191 is already on disk as file D:/ORACL E/ORADATA/TEST/ARCHIVE/TESTT001S00191.ARC RMAN-06050: archivelog thread 1 sequence 192 is already on disk as file D:/ORACL E/ORADATA/TEST/ARCHIVE/TESTT001S00192.ARC RMAN-03023: executing command: recover(4) RMAN-08515: archivelog filename=D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00191.AR C thread=1 sequence=191 RMAN-08515: archivelog filename=D:/ORACLE/ORADATA/TEST/ARCHIVE/TESTT001S00192.AR C thread=1 sequence=192 RMAN-08055: media recovery complete RMAN-03022: compiling command: sql RMAN-06162: sql statement: ALTER DATABASE OPEN RESETLOGS RMAN-03023: executing command: sql RMAN-03022: compiling command: release RMAN-03023: executing command: release RMAN-08031: released channel: c1
6、检查数据 Database altered. SQL> select * from test; A --------------------------------------- 1 2 可以看到,表依然存在
说明: 1、RMAN也可以实现不完全恢复,方法比OS备份恢复的方法更简单可靠 2、RMAN可以基于时间,基于改变与基于日志序列的不完全恢复,基于日志序列的恢复可以指定恢复到哪个日志序列,如 run { allocate channel ch1 type disk; allocate channel ch2 type 'sbt_tape'; set until logseq 1234 thread 1; restore controlfile to '$ORACLE_HOME/dbs/cf1.f' ; replicate controlfile from '$ORACLE_HOME/dbs/cf1.f'; alter database mount; restore database; recover database; sql "ALTER DATABASE OPEN RESETLOGS"; } 3、与所有的不完全恢复一样,必须在mount下,restore所有备份数据文件,需要resetlogs 4、基于改变的恢复比基于时间的恢复更可靠,但是可能也更复杂,需要知道需要恢复到哪一个改变号(SCN),在正常生产中,获取SCN的办法其实也有很多,如查询数据库字典表(V$archived_log or v$log_history),或分析归档与联机日志(logmnr)等。
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
6楼 03-05-29 13:30 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730285(size){ document.getElementById('text730285').style.fontSize=size+'px' }
document.getElementById('text730285').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
第五章 其它恢复案例 5.1 损坏联机日志的恢复方法 5.1.1 损坏非当前联机日志 大家都清楚,联机日志分为当前联机日志和非当前联机日志,非当前联机日志的损坏是比较简单的,一般通过clear命令就可以解决问题。 1、启动数据库,遇到ORA-00312 or ORA-00313错误,如 ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: 'D:/ORACLE/ORADATA/TEST/REDO01.LOG' 从这里我们知道日志组1的数据文件损坏了 从报警文件可以看到更详细的信息 2、查看V$log视图 SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIVED STATUS ---------- ---------- -------- ---------------- 1 1 YES INACTIVE 2 2 YES INACTIVE 3 3 NO CURRENT 可以知道,该组是非当前状态,而且已经归档。 3、用CLEAR命令重建该日志文件 SQL>alter database clear logfile group 1; 如果是该日志组还没有归档,则需要用 SQL>alter database clear unarchived logfile group 1; 4、打开数据库,重新备份数据库 SQL>alter database open; 说明: 1、如果损坏的是非当前的联机日志文件,一般只需要clear就可以重建该日志文件,但是如果该数据库处于归档状态但该日志还没有归档,就需要强行clear。 2、建议clear,特别是强行clear后作一次数据库的全备份。 3、此方法适用于归档与非归档数据库
5.1.2 损坏当前联机日志 归档模式下当前日志的损坏有两种情况, 一、是数据库是正常关闭,日志文件中没有未决的事务需要实例恢复,当前日志组的损坏就可以直接用alter database clear unarchived logfile group n来重建。 二、是日志组中有活动的事务,数据库需要媒体恢复,日志组需要用来同步,有两种补救办法 A. 最好的办法就是通过不完全恢复,可以保证数据库的一致性,但是这种办法要求在归档方式下,并且有可用的备份 B. 通过强制性恢复,但是可能导致数据库不一致。 下面分别用来说明这两种恢复方法 5.1.2.1 通过备份来恢复 1、打开数据库,会遇到一个类似的错误 ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: 'D:/ORACLE/ORADATA/TEST/REDO01.LOG' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件
2、查看V$log,发现是当前日志 SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIVED STATUS ---------- ---------- -------- ---------------- 1 1 NO CURRENT 2 2 YES INACTIVE 3 3 YES INACTIVE
3、发现clear不成功 SQL> alter database clear unarchived logfile group 1; alter database clear unarchived logfile group 1 * ERROR at line 1: ORA-01624: log 1 needed for crash recovery of thread 1 ORA-00312: online log 1 thread 1: 'D:/ORACLE/ORADATA/TEST/REDO01.LOG'
4、拷贝有效的数据库的全备份,并不完全恢复数据库 可以采用获取最近的SCN的办法用until scn恢复或用until cnacel恢复 recover database until cancel 先选择auto,尽量恢复可以利用的归档日志,然后重新 recover database until cancel 这次输入cancel,完成不完全恢复,也就是说恢复两次。 如: SQL> recover database until cancel; Auto …… SQL> recover database until cancel; Cancel; 5、利用alter database open resetlogs打开数据库 说明: 1、这种办法恢复的数据库是一致的不完全恢复,会丢失当前联机日志中的事务数据 2、这种方法适合于归档数据库并且有可用的数据库全备份。 3、恢复成功之后,记得再做一次数据库的全备份。 4、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。
5.1.2.2 如果没有备份,进行强制性恢复 1、打开数据库,会遇到一个类似的错误 ORA-00313: open failed for members of log group 1 of thread 1 ORA-00312: online log 1 thread 1: 'D:/ORACLE/ORADATA/TEST/REDO01.LOG' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件
2、查看V$log,发现是当前日志 SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIVED STATUS ---------- ---------- -------- ---------------- 1 1 NO CURRENT 2 2 YES INACTIVE 3 3 YES INACTIVE
3、发现clear不成功 SQL> alter database clear unarchived logfile group 1; alter database clear unarchived logfile group 1 * ERROR at line 1: ORA-01624: log 1 needed for crash recovery of thread 1 ORA-00312: online log 1 thread 1: 'D:/ORACLE/ORADATA/TEST/REDO01.LOG'
4、把数据库down掉 SQL>shutdown immediate
5、在init<sid></sid>.ora中加入如下参数 _allow_resetlogs_corruption=TRUE
6、重新启动数据库,利用until cancel恢复 SQL>recover database until cancel; Cancel 如果出错,不再理会,发出 SQL>alter database open resetlogs;
7、数据库被打开后,马上执行一个full export
8、shutdown数据库,去掉_all_resetlogs_corrupt参数
9、重建库
10、import并完成恢复
11、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE; 说明: 1、该恢复方法是没有办法之后的恢复方法,一般情况下建议不要采用,因为该方法可能导致数据库的不一致 2、该方法也丢失数据,但是丢失的数据没有上一种方法的数据多,主要是未写入数据文件的已提交或未提交数据。 3、建议成功后严格执行以上的7到11步,完成数据库的检查与分析 4、全部完成后做一次数据库的全备份 5、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
7楼 03-05-29 13:32 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730299(size){ document.getElementById('text730299').style.fontSize=size+'px' }
document.getElementById('text730299').style.fontSize='12px'
</script>
|
<!-- spacer -->
fable_cao 高级会员
注册日期: 2001 Nov 来自: 上海 技术贴数:1069 精华贴数:0 论坛积分:3514 论坛排名:893 论坛徽章:2
|
牛啊,谢谢 其实备份是简单的,关键是恢复,建议置顶
__________________ 白天睁着眼睛灌水, 晚上闭着眼睛灌水。
|
8楼 03-05-29 13:37 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730316(size){ document.getElementById('text730316').style.fontSize=size+'px' }
document.getElementById('text730316').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
5.2 损坏控制文件的恢复方法 5.2.1 损坏单个控制文件 损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了。 1、控制文件损坏,最典型的就是启动数据库出错,不能mount数据库 SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看报警日志文件,有如下信息 alter database mount Mon May 26 11:59:52 2003 ORA-00202: controlfile: 'D:/Oracle/oradata/chen/control01.ctl' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
2、停止数据库 SQL>shutdown immediate
3、拷贝一个好的控制文件替换坏的控制文件或修改init.ora中的控制文件参数,取消这个坏的控制文件。
4、重新启动数据 SQL>startup 说明: 1、损失单个控制文件是比较简单的,因为数据库中所有的控制文件都是镜相的,只需要简单的拷贝一个好的就可以了 2、建议镜相控制文件在不同的磁盘上 3、建议多做控制文件的备份,长期保留一份由alter database backup control file to trace产生的控制文件的文本备份
5.2.2 损坏全部控制文件 损坏多个控制文件,或者人为的删除了所有的控制文件,通过控制文件的复制已经不能解决问题,这个时候需要重新建立控制文件。 同时注意,alter database backup control file to trace可以产生一个控制文件的文本备份。 以下是详细重新创建控制文件的步骤 1、关闭数据库 SQL>shutdown immediate; 2、删除所有控制文件,模拟控制文件的丢失
3、启动数据库,出现错误,并不能启动到mount下 SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看报警日志文件,有如下信息 alter database mount Mon May 26 11:53:15 2003 ORA-00202: controlfile: 'D:/Oracle/oradata/chen/control01.ctl' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系统找不到指定的文件。
4、关闭数据库 SQL>shutdown immediate;
5、在internal或sys下运行如下创建控制文件的脚本,注意完整列出联机日志或数据文件的路径,或修改由alter database backup control file to trace备份控制文件时产生的脚本,去掉多余的注释即可。 STARTUP NOMOUNT CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 254 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 'D:/ORACLE/ORADATA/TEST/REDO01.LOG' SIZE 1M, GROUP 2 'D:/ORACLE/ORADATA/TEST/REDO02.LOG' SIZE 1M, GROUP 3 'D:/ORACLE/ORADATA/TEST/REDO03.LOG' SIZE 1M DATAFILE 'D:/ORACLE/ORADATA/TEST/SYSTEM01.DBF', 'D:/ORACLE/ORADATA/TEST/RBS01.DBF', 'D:/ORACLE/ORADATA/TEST/USERS01.DBF', 'D:/ORACLE/ORADATA/TEST/TEMP01.DBF', 'D:/ORACLE/ORADATA/TEST/TOOLS01.DBF', 'D:/ORACLE/ORADATA/TEST/INDX01.DBF' CHARACTER SET ZHS16GBK;
-- Recovery is required if any of the datafiles are restored backups, -- or if the last shutdown was not normal or immediate. RECOVER DATABASE --if the last shutdown was not normal or immediate --noarchive -- RECOVER DATABASE UNTIL CANCELUSING BACKUP CONTROLFILE --archive -- RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL -- Database can now be opened normally. ALTER DATABASE OPEN; --if recover database until cancel --ALTER DATABASE OPEN RESETLOGS; 6、如果没有错误,数据库将启动到open状态下。
说明: 1、重建控制文件用于恢复全部数据文件的损坏,需要注意其书写的正确性,保证包含了所有的数据文件与联机日志 2、经常有这样一种情况,因为一个磁盘损坏,我们不能再恢复(store)数据文件到这个磁盘,因此在store到另外一个盘的时候,我们就必须重新创建控制文件,用于识别这个新的数据文件,这里也可以用这种方法用于恢复
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
9楼 03-05-29 13:38 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730322(size){ document.getElementById('text730322').style.fontSize=size+'px' }
document.getElementById('text730322').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4794 精华贴数:14 论坛积分:81184 论坛排名:38 论坛徽章:29
|
5.3 损坏回滚数据文件的恢复方法 回滚段表空间中的一个数据文件丢失或者损坏导致数据库无法识别它,在启动数据库的时候会出现ORA-1157, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7360。在关闭数据库的时候(normal或者immediate)会出现ORA-1116, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7368。 感谢coolyl的辛勤工作,关于回滚段的大部分内容都是摘自他在itpub的文章。
5.3.1 损坏数据文件,但数据库处于Open状态 如果你发现有回滚段的数据文件丢失或者损坏了,而此时的数据库是处于打开的状态下并且在运行,就千万不要关闭数据库了,因为在大多数的情况下打开的时候比关闭的时候好解决问题一些。 一般也是存在有两种情况: A。是offline丢失或损坏的数据文件,然后从一个备份中恢复,执行介质恢复以保持一致性。但是这种情况要求数据库是归档方式下才可以采用的。 B。是offline那个存在丢失或损坏的数据文件所在的整个回滚段表空间,然后删除整个回滚段表空间并重建,但是你必须要杀掉那些在回滚段中已经激活的用户进程才可以offline的。 通常第一种情况就比较简单实现,但是更多的用户事务将会出错并且回滚。 A的具体步骤: 1。offline丢失或损坏的数据文件 ALTER DATABASE DATAFILE '<full_path_file_name></full_path_file_name>' OFFLINE; 2。从一个有效的备份中恢复。 3。执行以下查询 SELECT V1.GROUP#, MEMBER, SEQUENCE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ; 这个将列出你的所有redolog文件以及它们所代表的sequence numbers。 4。恢复数据文件。 RECOVER DATAFILE '<full_path_file_name></full_path_file_name>' 5。确信你应用了所有的redolog文件,直至出现提示信息"Media recovery complete"。 6。online那个数据文件。 ALTER DATABASE DATAFILE '<full_path_file_name></full_path_file_name>' ONLINE;
B的具体步骤: 1。offline存在丢失或损坏的数据文件的回滚段表空间中的所有回滚段。 ALTER ROLLBACK SEGMENT <rollback_segment></rollback_segment>OFFLINE; 2。检测当然回滚段的状态。 SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS WHERE TABLESPACE_NAME = '
<tablespace_name></tablespace_name>
'; 3。删除所有offline的回滚段 DROP ROLLBACK SEGMENT <rollback_segment></rollback_segment>; 4。处理那些online状态的回滚段。 重新执行第二步的查询 如果你已经执行过offline操作的回滚段状态仍然是online,则说明这个回滚段内有活动的事务。你要接着查询 SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS WHERE TABLESPACE_NAME = '
<tablespace_name></tablespace_name>
' AND SEGMENT_ID = USN; 如果没有返回结果,则证明存在丢失或损坏的数据文件的回滚段表空间中的所有回滚段都已经被offline了,然后重新执行第二步,第三步。如果查询有结果返回,则状态应该是"PENDING OFFLINE".接着查看ACTIVE_TX列,如果值为0,则表明此回滚段中已经没有未处理的事务了,很快就会被offline的,然后等它offline后重新执行2,3步后跳至第六步。如果值大于0,则继续到第五步。 5。强制那些包含活动事务的回滚段offline。 活动的事务应该被提交或者回滚,执行下面的查询看看哪些用户占用了回滚段: SELECT S.SID, S.SERIAL#, S.USERNAME, R.NAME "ROLLBACK" FROM V$SESSION S, V$TRANSACTION T, V$ROLLNAME R WHERE R.NAME IN ('
<pending_rollback_1></pending_rollback_1>
', ... , '
<pending_rollback_n></pending_rollback_n>
') AND S.TADDR = T.ADDR AND T.XIDUSN = R.USN; 最好能直接联系到那些user让他们自己去回滚或者提交事务,如果不能做到的话,那就只能强制性的杀掉进程了。 ALTER SYSTEM KILL SESSION '<sid></sid>, '; 杀掉进程后再过一段时间后回滚段会自动清除那些事务,然后就可以回到第二步继续查询了。 6。删除回滚段。 DROP TABLESPACE
<tablespace_name></tablespace_name>
INCLUDING CONTENTS; 7。重建回滚段并online它们 说明: 1、数据库如果是open状态,就可以直接在open状态下解决问题,没有必要停下数据库,增加down机时间 2、不管上上面那种恢复方法都是正常性的恢复,不会引起数据的不一致或错误。
5.3.2数据库关闭,但是数据文件中没有活动事务 这种情况下最简单的方法就是offline drop掉这个坏了的或者丢失的数据文件,然后以restricted模式打开数据库然后删除并且重建包含损坏文件的回滚段表空间。 具体步骤如下: 1。确定数据库是正常的关闭的。方法是可以去查看alert文件,到最后看是否有如下信息: "alter database dismount Completed: alter database dismount" 如果有的话,就证明数据库是正常关闭的,否则就不能用这个方法去恢复。 2。修改init参数文件,移去ROLLBACK_SEGMENTS中包含的损坏数据文件的回滚段表空间的回滚段,如果你不能确定哪些回滚段是坏的,简单的方法是你可以注释掉整个ROLLBACK_SEGMENTS。 3。以restricted模式去mount数据库。 STARTUP RESTRICT MOUNT 4。offline drop掉那个坏的数据文件 ALTER DATABASE DATAFILE '<full_path_file_name></full_path_file_name>' OFFLINE DROP; 5。打开数据库 ALTER DATABASE OPEN 如果你看到如下信息"Statement processed",则跳到第7步,如果你看到ORA-604, ORA-376, and ORA-1110的错误信息,继续第6步。 6。正常的关闭数据库,然后在init文件中注释掉ROLLBACK_SEGMENTS,并加入隐含参数 _corrupted_rollback_segments = ( <rollback1></rollback1>,...., <rollbackn></rollbackn>) 然后以restricted模式打开数据库 STARTUP RESTRICT 7。删除掉那个包含损坏文件的回滚段表空间。 DROP TABLESPACE
<tablespace_name></tablespace_name>
INCLUDING CONTENTS; 8。重建回滚段表空间,记得创建后要把回滚段都online。 9。重新使数据库对所有用户可用。 ALTER SYSTEM DISABLE RESTRICTED SESSION; 10。然后正常关闭数据库,修改init文件,如果开始只是注释掉了ROLLBACK_SEGMENTS的,就去掉注释即可,如果加了隐含参数的,注释掉它,并在ROLLBACK_SEGMENTS加入所有的回滚段。 11。正常启动数据库。 Startup 说明: 1、这种方法的前提条件是数据库是正常关闭(不是abort)可用 2、这种方法是正常方法,不会引起数据错误
5.3.3 数据库关闭,数据文件中有活动事务,没有可用备份 一般造成这种原因的情况是采用了shutdown abort或其它原因异常关机(如断电)导致的。 1、开启一个事务 SQL> set transaction use rollback segment rbs0; Transaction set. SQL> insert into test (a) values (1); 1 row created.
2、异常关闭 SQL> shutdown abort; ORACLE instance shut down.
3、删除rbs的一个数据文件 C:>del D:/Oracle/oradata/chen/rbs01.
4、修改INIT<sid></sid>.ora rollback_segments=(system) 添加_corrupted_rollback_segments=(rbs0,rbs1,rbs2……)
5、SQL>Startup mount
6、SQL>alter database datafile ’d:/oracle/oradata/t8i/rbs01.dbf’ offline drop; 数据库已更改。
7、SQL>recover database ; 完成介质恢复。
8、SQL>alter database open ; 数据库已更改。
9、SQL>select * from v$rollname; USN NAME ----------------- --------------------- 0 SYSTEM
10、SQL>select segment_name,tablespace_name,status from dba_rollback_segs; SEGMENT_NAME TABLESPACE_NAME STATUS ------------------------------ ------ ------------------------------------ SYSTEM SYSTEM ONLINE RBS0 RBS NEEDS RECOVERY RBS1 RBS NEEDS RECOVERY RBS2 RBS NEEDS RECOVERY
11、SQL>drop rollback segment rbs0; 重算段已丢弃。 SQL>drop rollback segment rbs1; 重算段已丢弃。 SQL>drop rollback segment rbs2; 重算段已丢弃。
12、SQL>select segment_name,tablespace_name,status from dba_rollback_segs; SEGMENT_NAME TABLESPACE_NAME STATUS ------------------------------ ------ ------------------------------------ SYSTEM SYSTEM ONLINE
13、SQL>drop tablespace rbs including contents; 表空间已丢弃。
14、重建新的回滚表空间及回滚段,并联机。
15、SQL>shutdown abort
16、再修改INIT<sid></sid>.ora rollback_segments=(rbs0,rbs1,rbs2) 将_corrupted_rollback_segments=(rbs0,rbs1,rbs2)去掉。
17、SQL>startup
1、这种办法是万不得以的时候使用的方法,如果有备份,都建议从备份上进行恢复 2、这种方法恢复的数据库,可能会引起数据库的数据错误 3、恢复成功以后,建议exp/imp数据,并重新分析检查数据库
5.3.4 数据库关闭,数据文件中有活动事务,从备份恢复 1。从一个有效的备份中恢复损坏的数据文件。 2。mount数据库。 3。执行以下查询 SELECT FILE#, NAME, STATUS FROM V$DATAFILE; 如果发现要恢复的文件是offline状态的话,要先online它 ALTER DATABASE DATAFILE '<full_path_file_name></full_path_file_name>' ONLINE; 4。执行以下查询 SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ; 这个将列出redlog文件所代表的sequence和first change numbers。 5。如果数据库是非归档情况下,执行以下查询: SELECT FILE#, CHANGE# FROM V$RECOVER_FILE; 如果CHANGE#大于最小的redolog文件的FIRST_CHANGE#,则数据文件可以被恢复,记得在应用日志的时候要把所有redolog文件全部应用一遍。 如果CHANGE#小于最小的redolog文件的FIRST_CHANGE#,则数据文件就不可以被恢复了,这时候你要从一个有效的全备份中去恢复数据库了,如果没有全备份的话,那你就只能把数据库强制打开到一个不一致的状态去exp出数据,然后重新建库导入数据,因为这种方式的恢复oracle是不推荐用户自己做的,所以这里我就不详细说明了。 6。恢复数据文件 RECOVER DATAFILE '<full_path_file_name></full_path_file_name>' 7。确信你应用了所有的redolog文件,直至出现提示信息"Media recovery complete"。 8。打开数据库。 说明: 1、这种方法要求在归档有备份的方式下进行,而且是建议方式 2、这种方法不会导致数据库的错误
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
10楼 03-05-29 13:43 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730346(size){ document.getElementById('text730346').style.fontSize=size+'px' }
document.getElementById('text730346').style.fontSize='12px'
</script><!-- spacer -->
<!-- /spacer -->
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4787 精华贴数:14 论坛积分:81151 论坛排名:38 论坛徽章:29
|
5.4 损坏临时数据文件的恢复方法 临时数据文件的恢复是比较简单的,因为临时文件中不涉及到其它的有用的数据,所以可以删除后重建 1、关闭数据库 SQL>shutdown immediate 2、删除临时数据文件,模拟媒体失败
3、启动数据库,检测到文件错误
4、脱机该数据文件 SQL>alter database datafile ‘文件名全名’ offline drop;
5、打开数据库 SQL>alter database open
6、删除该临时表空间 SQL>drop tablespace temp(或其它临时表空间名称);
7、重新创建该表空间,并重新分配给用户 说明: 1、临时数据文件是非重要文件,不保存永久数据,可以随时删除重建,不影响数据库的数据安全 2、如果重新建立以后,别忘了重新分配给用户。
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
11楼 03-05-29 13:44 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730357(size){ document.getElementById('text730357').style.fontSize=size+'px' }
document.getElementById('text730357').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4787 精华贴数:14 论坛积分:81151 论坛排名:38 论坛徽章:29
|
第五章. 常见恢复误区 1、可以不需要备份,只有归档就能进行数据库的向前的恢复 答:这个在ORACLE 9i以前起码是不可能的,在别的数据库我也没有听说过,不完全恢复的主要思路是利用不完全点之前的备份,加上归档日志,恢复到不完全恢复点,9i中出现了一个flashback的特性,这个特性的使用,也是有很多局限的。 2、进行不完全恢复只需要拷贝一个需要恢复的备份数据文件 答:不完全恢复需要拷贝所有的数据文件,最好包括临时数据文件在内,否则需要另外的处理,如果有一个数据文件的SCN大于不完全恢复点,那么这个恢复都将是失败的。 3、使用RMAN目录与目标数据库在同一数据库能很好进行数据库的恢复 答:使用恢复目录与目标数据库在同一个数据库中,将存在很大的恢复局限,如该数据库的系统数据文件的损害,数据库根本不能open,那么RMAN也就无法连接恢复目录,也就不存在恢复了。 第六章. 小结 这里我们反复演示了多种情况下的恢复方案,通过这些演示,我们应该掌握了如下内容: 1、利用OS与RMAN进行各种常规备份与恢复。 2、熟悉没有备份或简单的非常规备份与恢复的方法。
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
|
12楼 03-05-29 13:45 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730363(size){ document.getElementById('text730363').style.fontSize=size+'px' }
document.getElementById('text730363').style.fontSize='12px'
</script>
|
<!-- spacer -->
whuijun 高级会员
注册日期: 2001 Nov 来自: 技术贴数:1162 精华贴数:0 论坛积分:5985 论坛排名:550 论坛徽章:3
|
hao wen zhang!duo xie!
__________________ 天道酬勤 功不搪涓!
|
13楼 03-05-29 13:48 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730377(size){ document.getElementById('text730377').style.fontSize=size+'px' }
document.getElementById('text730377').style.fontSize='12px'
</script>
|
<!-- spacer -->
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730385(size){ document.getElementById('text730385').style.fontSize=size+'px' }
document.getElementById('text730385').style.fontSize='12px'
</script>
|
<!-- spacer -->
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730707(size){ document.getElementById('text730707').style.fontSize=size+'px' }
document.getElementById('text730707').style.fontSize='12px'
</script>
|
<!-- spacer -->
pam 中级会员
注册日期: 2003 Mar 来自: 技术贴数:247 精华贴数:0 论坛积分:1112 论坛排名:2799 论坛徽章:3
|
piner,你可真牛
我从帖子上拷贝粘贴弄了半天,谁知老兄最后贴上一个全文的附件! 真是牛啊!
__________________ 学习好累 不累不行
|
16楼 03-05-29 15:35 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730789(size){ document.getElementById('text730789').style.fontSize=size+'px' }
document.getElementById('text730789').style.fontSize='12px'
</script>
|
<!-- spacer -->
tigger7777 老会员
注册日期: 2003 Apr 来自: sh 技术贴数:324 精华贴数:0 论坛积分:1480 论坛排名:2102 论坛徽章:0
|
谢谢!
__________________ --------------------------------------------------
|
17楼 03-05-29 15:39 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730802(size){ document.getElementById('text730802').style.fontSize=size+'px' }
document.getElementById('text730802').style.fontSize='12px'
</script>
|
<!-- spacer -->
piner that's life
注册日期: 2003 Feb 来自: 西子湖畔 技术贴数:4787 精华贴数:14 论坛积分:81151 论坛排名:38 论坛徽章:29
|
__________________ if not now,when? if not me,who?
欢迎访问我的网站Blog www.ixdba.com
欢迎订阅www.ixdba.com
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤
quote:
Fenng 在 03-05-29 23:13 谈到: 看了你的 关于恢复的案例的那个贴子,可以发在ITPUb电子杂志上吗? 盼回复!
--Fenng
完全可以,不过有点长,特别是前面的,为了保证原汁原味,复制了很多原代码,可能得麻烦您修改很多东西了。
|
18楼 03-05-29 15:55 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730870(size){ document.getElementById('text730870').style.fontSize=size+'px' }
document.getElementById('text730870').style.fontSize='12px'
</script>
|
<!-- spacer -->
LGQ_DUCKY 初级会员
注册日期: 2003 May 来自: 广西南宁 技术贴数:1 精华贴数:0 论坛积分:2 论坛排名:231308 论坛徽章:0
|
GOOD!太感激了!
|
19楼 03-05-29 16:03 |
|
|
<!-- spacer --> |
|
<script language="JavaScript" type="text/javascript">
function doZoom730903(size){ document.getElementById('text730903').style.fontSize=size+'px' }
document.getElementById('text730903').style.fontSize='12px'
</script>
|
<!-- spacer -->
|
FROM: ITPUB
URL:http://www.itpub.net/126320,1.html
分享到:
相关推荐
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库...恢复过程大致可以分为复原(Restore)与恢复(Restore)过程。
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库...恢复过程大致可以分为复原(Restore)与恢复(Restore)过程。
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库...恢复过程大致可以分为复原(Restore)与恢复(Restore)过程。
可以支持oracle mysql sqlserver自动备份,mysql sqlserver恢复; oracle恢复: cmd rman target \ shutdown immediate; startup mount; restore database until time "to_date('2019-08-19 08:49:00','yyyy-mm-dd ...
当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库...恢复过程大致可以分为复原(Restore)与恢复(Recover)过程。
备份与恢复测试-整理 目录结构
cognito-backup-restore试图通过提供一种将用户从cognito池备份到json文件,反之亦然的方法来克服此问题。 请注意:无法通过cognito获取用户密码,因此您可能需要要求他们使用ForgotPassword来恢复其帐户。 要求 ...
备份和加密所有cookie,并在需要时解密和还原它们。 有新机器还是想重新安装操作系统? 但是不想重新登录到您的所有帐户吗? 使用此扩展程序备份您所有的珍贵cookie,并在以后还原它们。 不用担心,它会在使用您提供...
Oracle备份与恢复机制详解,十分全面,有示例。
(中文名:Oracle RMAN 11g 备份和恢复) 英文原版图书,Oracle官方出版,学习Oracle Rman备份和恢复的最佳学习资料,与大家一起分享 Master Oracle Recovery MasterProtect your databases from hardware, software, ...
因此在意外发生Truncate后, 如果没有备份可以恢复, 首先要做的事是备份一下当前的文件, 免得空间被重用. 而Truncate之前的数据对象号在AUL/MyDUL中是很容易找出来的. 到此已经说明了如何恢复Truncate表了. ...
pivotal_greenplum_backup_restore-1.20.2-gp6-rhel-x86_64.gppkg
linux-bash-script-to-backup-restore-tvheadend-server-configuration 可以运行此脚本来备份TVHeadend服务器配置(/home/hts/.hts/tvheadend)或从备份(/home/hts/.hts/tvheadend_backup.tar)还原它。 我认为它...
system-tar-and-restore, 使用tar备份或者恢复系统,或者使用rsync进行传输 系统 Tar &还原关于分发包要求你可以做的 。备份模式还原/传输模式注释使用参数的示例 System包含两个bash脚本,主程序 star.sh 和一个。...