Oracle8i 控制文件损坏情况下成功的恢复
oracle数据库各种恢复方法

数据库各种文件丢失恢复大全SPFILE丢失:startup nomount;set dbid 3988862108;restore spfile from autobackup;shutdown immediate;set dbid 3988862108;startup;模拟操作:oracle> mv spfileora10g.ora spora10g.oraoracle>rman target /;rman> shutdown immediate;rman> startup nomount;startup failed: ORA-01078: failure in processing system parametersLRM-00109: could not open parameter file '/home/oracle/product/10.20/dbs/initora10g.ora' rman>set dbid 3988862108;rman>restore spfile from autobackup;执行该命令,如果没有找到的话,那可能是文件的路径发生错误.可以通过直接赋予它的文件rman>restore spfile from '/u01/oracle/flash_recovery_area/ORA10G/autobackup/2008_12_09/o1_mf_s_673025706_4mw 7xc79_.bkp在dbs/目录下产生spfileora10g.ora文件。
证明spfile 已经恢复好rman> shutdown immediate;rman> startup ;(如果该命令不能够启动数据库,那么需要set dbid 3988862108)controlfile 丢失:startup nomount;restore controlfile from autobackup;alter database mount;recover database;alter database open resetlogs;注意:在做了alter database open resetlogs;会把online redelog file清空,数据文件丢失.所以这个时候要做一个全备份。
Oracle数据文件损坏的修复

Oracle数据文件损坏的修复一、如果不需要该数据库可以删除1、先关闭数据库。
SQL> shutdown ;2、然后执行startup mount把数据库mount上去。
SQL> startup mount;3、执行如下命令把已经删除的dbf文件给drop掉。
SQL> alter database datafile '/opt/oracle/oradata/yhsdbu.dbf' offline drop; 4、启动数据库。
SQL> alter database open;二、如果还需要该数据库可以再创建1.当用户直接删除了oracle的datafile文件,此时oracle数据库不可用,启动时出现了如下的问题。
SQL> startupORACLE instance started.Total System Global Area 320571872 bytesFixed Size 731616 bytesVariable Size 285212672 bytesDatabase Buffers 33554432 bytesRedo Buffers 1073152 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 16 - see DBWR trace fileORA-01110: data file 16: '/opt/oracle/oradata/yhsdbu.dbf'2.恢复的办法,就是再重新创建该datafile文件,如下:alter database create datafile '/opt/oracle/oradata/yhsdbu.dbf' ;SQL> startupORACLE instance started.Total System Global Area 320571872 bytesFixed Size 731616 bytesVariable Size 285212672 bytesDatabase Buffers 33554432 bytesRedo Buffers 1073152 bytesDatabase mounted.ORA-01113: file 16 needs media recoveryORA-01110: data file 16: '/opt/oracle/oradata/yhsdbu.dbf'3.恢复新创建的datafileSQL> startup open recoverORACLE instance started.Total System Global Area 320571872 bytes Fixed Size 731616 bytes Variable Size 285212672 bytes Database Buffers 33554432 bytes Redo Buffers 1073152 bytes Database mounted.Media recovery complete.Database opened.4.此时数据库就可以使用startup正常启动了。
ORACLE数据库如何恢复

ORACLE数据库如何恢复(邝俊标)ORACLE数据库备份与恢复与ORACLE的结构密切相关,大家先弄清ORACLE 物理结构有哪些?逻辑结构是有哪些?它们的作用是什么?弄明白这些以后,具体怎么备份、怎么恢复就需要了解下ORACLE本身是怎么管理数据库的有那些相关的ORACLE系统表?ORACLE的后台进程是怎么管理的?最后就要知道相关的ORACLE命令、语法,根据系统提示错误灵活处理了。
ORACLE 恢复主要有下面的几种问题:一、数据文件丢失恢复:二、OS备份下的基于时间的恢复三、损坏联机日志的恢复四、损坏当前联机日志恢复五损坏控制文件的恢复六、损坏回滚数据文件的恢复七、损坏临时数据文件的恢复一、数据文件丢失恢复:1、查看报警文件或动态视图v$recover_fileSQL>select * from v$recover_file;2、脱机数据文件SQL> alter database datafile 'file#' offline drop;3、打开数据库,拷贝备份回来(restore),恢复(recover)该数据文件,并联机SQL> alter database open;4、拷贝备份从备份处copy d:\databak\ users01.dbf d:\oracle\oradata\orcl;5、恢复该数据文件SQL> recover datafile 'file#';SQL> recover database; (多个数据文件丢失,恢复整个数据库)6、恢复成功,联机该数据文件SQL> alter database datafile 'file#' online;说明:1) 采用热备份,需要运行在归档模式下,可以实现数据库的完全恢复,也就是说,从备份后到数据库崩溃时的数据都不会丢失。
2) 可以采用全备份数据库的方式备份,对于特殊情况,也可以只备份特定的数据文件,如只备份用户表空间(一般情况下对于某些写特别频繁的数据文件,可以单独加大备份频率)3) 如果在恢复过程中,发现损坏的是多个数据文件,即可以采用一个一个数据文件的恢复方法(第5步中需要对数据文件一一脱机,第6步中需要对数据文件分别恢复),也可以采用整个数据库的恢复方法。
一次曲折的rman控制文件恢复

/dev/rctrlfile2
/dev/rctrlfile3
用dd把控制文件都搞坏,如下:
# dd if=/dev/zero of=/dev/rctrlfile1 bs=32k
---
---
没有归档当前的redo log。
SQL> shutdown abort;
214 Full 5.30M DISK 00:00:05 14-MAR-12
BP Key: 216 Status: AVAILABLE Compressed: NO Tag: TAG20120314T051102
Piece Name: /oracle/app/oracle/product/10.2.0/db_1/dbs/05n5que6_1_1
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done
提示需要用BACKUP CONTROLFILE方式recover database
ORA-01110: data file 1: '/dev/rsystem'
数据不一致,提示需要recover databdatabase until cancel;
ORA-00283: recovery session canceled due to errors
ORACLE instance shut down.
尝试正常启动数据库
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
损坏数据文件的恢复方法

损坏数据文件的恢复方法一:非归档模式下丢失或者损坏数据文件A:OS备份恢复方案在非归档模式下损坏或者丢失数据文件,如果有相应的备份,在一定程度上是可以恢复的,但是如果oracle过多的读写操作记录信息而导致redo重写的时候,恢复就会停滞,非归档下系统能自动恢复的仅仅限于redo中存在的记录。
可以成功恢复案例:SQL> startupORACLE instance started.Total System Global Area 235999352 bytesFixed Size 450680 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.Database openedSQL> create table test(a int);Table created.SQL> insert into test values(1);1 row created.SQL> /1 row created.SQL> /1 row created.SQL> /1 row created.SQL> commit;Commit complete.SQL> exit;[oracle@www oradata]$ cd cicro/[oracle@www cicro]$ lscontrol01.ctl cwmlite01.dbf indx01.dbf redo02.log temp01.dbfusers01.dbf control02.ctl drsys01.dbf odm01.dbf redo03.logtools01.dbf xdb01.dbf control03.ctl example01.dbf redo01.log system01.dbf undotbs01.dbf[oracle@www cicro]$ pwd/opt/oracle/oradata/cicro[oracle@www cicro]$ sqlplus "/as sysdba"SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL>exit;[oracle@www cicro]$ cp ./*.dbf ../[oracle@www cicro]$ sqlplus "/as sysdba"SQL*Plus: Release 9.2.0.1.0 - Production on Tue Jul 25 19:44:31 2006 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. Connected to:Oracle9i Release 9.2.0.1.0 - ProductionJServer Release 9.2.0.1.0 – ProductionConnected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 235999352 bytesFixed Size 450680 bytesVariable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.Database opened.SQL> insert into test values(3333);1 row created.SQL> /1 row created.SQL> /1 row created.SQL> /1 row created.SQL> commit;Commit complete.SQL> select * from test;A----------1113333333333338 rows selected.SQL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.SQL>exit;[oracle@www cicro]$ rm –rf ./*.dbf[oracle@www cicro]$ sqlplus "/as sysdba"Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 235999352 bytesFixed Size 450680 bytes技术社区Variable Size 201326592 bytesDatabase Buffers 33554432 bytesRedo Buffers 667648 bytesDatabase mounted.ORA-01157: cannot identify/lock data file 1 - see DBWR trace fileORA-01110: data file 1: '/opt/oracle/oradata/cicro/system01.dbf'SQL> quit[oracle@www cicro]$ mv ../*.dbf .[oracle@www cicro]$ lscontrol01.ctl cwmlite01.dbf indx01.dbf redo02.log temp01.dbf users01.dbf control02.ctl drsys01.dbf odm01.dbf redo03.log tools01.dbf xdb01.dbf control03.ctl example01.dbf redo01.log system01.dbf undotbs01.dbf[oracle@www cicro]$ sqlplus "/as sysdba"SQL*Plus: Release 9.2.0.1.0 - Production on Tue Jul 25 17:56:06 2006Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.Connected to:Oracle9i Release 9.2.0.1.0 - ProductionJServer Release 9.2.0.1.0 - ProductionSQL> recover database;Media recovery complete.SQL> alter database open;Database altered.SQL> select * from test;A----------111333333333333333333338 rows selected.至此,恢复成功!不完全恢复的案例基本操作与上面相同,还是首先建立一张表,然后插入数据:1:建表,写入数据,然后关闭数据库SQL> create table gaojf1 as select * from all_objects;T able created.SQL> insert into gaojf1 select * from gaojf1;29614 rows created.SQL> /59228 rows created. (即为现在此表数据有118456列)SQL>commit;SQL>shutdown immediate2:备份所有的数据文件3:启动数据库继续插入数据[oracle@www cicro]$ sqlplus "/as sysdba"SQL*Plus: Release 9.2.0.1.0 - Production on Tue Jul 25 18:07:19 2006 Copyright (c) 1982, 2002, Oracle Corporation.Connected to:Oracle9i Release 9.2.0.1.0 - ProductionJServer Release 9.2.0.1.0 - ProductionSQL> insert into gaojf1 select * from gaojf1;118456 rows created.SQL> /236912 rows created.SQL> /473824 rows created.SQL> /947648 rows created.SQL> commit;Commit complete.SQL> select count(*) from gaojf1;COUNT(*)----------1895296SQL> /1895296 rows created.SQL> /技术社区3790592 rows created.(如果能够完全恢复,此表应该有3790592*2列)SQL> commit;Commit complete.期间,查看日志信息如下:Wed Jul 26 13:02:54 2006Thread 1 opened at log sequence 1Current log# 3 seq# 1 mem# 0: /opt/oracle/oradata/cicro/redo03.log Successful open of redo thread 1.Wed Jul 26 13:03:56 2006Thread 1 advanced to log sequence 2Current log# 1 seq# 2 mem# 0: /opt/oracle/oradata/cicro/redo01.logWed Jul 26 13:05:41 2006Thread 1 advanced to log sequence 3Current log# 2 seq# 3 mem# 0: /opt/oracle/oradata/cicro/redo02.logWed Jul 26 13:09:04 2006Thread 1 advanced to log sequence 4Current log# 3 seq# 4 mem# 0: /opt/oracle/oradata/cicro/redo03.logWed Jul 26 13:09:29 2006Thread 1 advanced to log sequence 5Current log# 1 seq# 5 mem# 0: /opt/oracle/oradata/cicro/redo01.log 可以看到,redo文件在不断的循环重写,当一个redo写完后继续写第二个redo,然后是第三个,当第三个写完后继续回来重写第一个,依此类推。
oracle 故障恢复案例

oracle 故障恢复案例Oracle故障恢复案例1. 数据库实例崩溃恢复某公司的Oracle数据库实例突然崩溃,导致所有业务无法正常运行。
经过专业技术人员的分析,发现是由于服务器硬件故障导致的。
为了恢复数据库,技术人员采取了备份恢复的方式,通过使用备份数据文件和重做日志文件,成功将数据库实例恢复到崩溃前的状态。
2. 数据文件损坏的恢复某公司的数据库中的一个数据文件损坏,导致部分数据无法正常访问。
为了解决这个问题,技术人员首先通过文件系统级别的工具检查数据文件的完整性,并确定了损坏的范围。
然后,他们使用备份数据文件和重做日志文件进行恢复,成功修复了损坏的数据文件,并使数据库恢复正常。
3. 表空间故障的恢复某公司的数据库中的一个表空间突然出现故障,导致表空间中的所有表无法访问。
为了解决这个问题,技术人员首先通过Oracle的故障自诊断工具诊断表空间故障的原因,并确定了故障的范围。
然后,他们使用备份的表空间文件和重做日志文件进行恢复,成功修复了故障的表空间,并使其正常运行。
4. 数据库日志文件损坏的恢复某公司的数据库日志文件突然损坏,导致数据库无法正常启动。
为了恢复数据库,技术人员首先检查了日志文件的完整性,并确定了损坏的范围。
然后,他们使用备份的日志文件进行恢复,成功修复了损坏的日志文件,并使数据库恢复正常。
5. 控制文件丢失的恢复某公司的数据库控制文件丢失,导致数据库无法正常启动。
为了解决这个问题,技术人员首先通过文件系统级别的工具检查控制文件的完整性,并确定了丢失的范围。
然后,他们使用备份的控制文件进行恢复,成功恢复了丢失的控制文件,并使数据库正常启动。
6. 数据库块损坏的恢复某公司的数据库中的一个数据块突然损坏,导致数据库无法正常读取该块的数据。
为了解决这个问题,技术人员首先通过Oracle的故障自诊断工具诊断数据块故障的原因,并确定了损坏的范围。
然后,他们使用备份的数据块进行恢复,成功修复了损坏的数据块,并使数据库恢复正常。
Oracle数据库备份与恢复的三种方法
Oracle数据库备份与恢复的三种方法当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误操作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。
如果平时对数据库做了备份,那么此时恢复数据就显得很容易。
由此可见,做好数据库的备份是多么的重要,下面笔者就以ORACLE7 为例,来讲述一下数据库的备份和恢复。
ORACLE 数据库有三种标准的备份方法,它们分别为导出/导入(EXPORT/IMPORT)、冷备份、热备份。
导出备份是一种逻辑备份,冷备份和热备份是物理备份。
Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。
导出备件是一种逻辑备份,冷备份和热备份是物理备份。
一、导出/导入(Export/Import)利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、简单导出数据(Export)和导入数据(Import)Oracle支持三种方式类型的输出:(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。
2、增量导出/导入增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。
在进行此种导出时,系统不要求回答任何问题。
导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三种类型:(1)、“完全”增量导出(Complete)即备份三个数据库,比如:exp system/manager inctype=complete file=040731.dmp (2)、“增量型”增量导出备份上一次备份后改变的数据,比如:exp system/manager inctype=incremental file=040731.dmp (3)、“累积型”增量导出累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。
controlfile损坏个人处理心得
2009-03-26:control file损坏引发的问题以下是3-26到3-29处理sfis问题的一些简要过程,当时做了2手准备一边在想办法把新资料导入磁盘空间已经不足的sfisnew,一边尽力恢复,最后在几乎绝望的情况下,恢复成功,中间走了很多弯路,oracle还是博大精深啊。
最近二周,用户总是抱怨sfis系统间歇性会死机,经观察现象为不定时(45分钟-8个小时)会突然出现大量等待会话,如下:Node1enq: WF - contentiongcs log flush syncStreams AQ: qmn coordinator waiting for slave to startlog file sync(highest percentage)Node2gc cr requestgc current requestgc buffer busy其他一切正常.此问题先到此,后面再说.由于此问题始终查不到原因,故让用户停止使用系统,然后做下oracle的内存分配设置(或者其他什么设置),看能否有改善.结果…….很遗憾的事情发生了,node2在重启德时候发生了万恶的蓝屏.然后…………..db无法启动了.重启几次,并使用srvctl start database –d wsfis命令都不行,转到命令行模式下:Sqlplus /nologConn sys/pass@wsfis as sysdba结果返回错误ora-00600 [3619]……..上网查,发现是control file文件损坏的原因。
按网上所说重建控制文件。
(其实如果有用rman做备份,可以从备份中恢复。
可惜没做)Sqlplus /nologConn sys/pass@wsfis as sysdbaalter database backup controlfile to trace;@gettrcname #显示跟踪文件的名字E:/oracle/product/10.2.0/admin/wsfis/udump/wsfis1_ora_4124.trc然后在跟踪文件的最后找到控制文件的生成语句,格式如下:MAXLOGFILES 192MAXLOGMEMBERS 3MAXDATAFILES 1024MAXINSTANCES 32MAXLOGHISTORY 20235LOGFILEGROUP 1 '+DATA/wsfis/onlinelog/group_1.257.675961651' SIZE 50M,GROUP 2 '+DATA/wsfis/onlinelog/group_2.258.675961651' SIZE 50M-- STANDBY LOGFILEDATAFILE'+DATA/wsfis/datafile/system.259.675961651', '+DATA/wsfis/datafile/undotbs1.260.675961657', '+DATA/wsfis/datafile/sysaux.261.675961659', '+DATA/wsfis/datafile/undotbs2.263.675961663', '+DATA/wsfis/datafile/users.264.675961665','+DATA/wsfis/datafile/cwsfis01.ora','+DATA/wsfis/datafile/rwsfis01.ora','+DATA/wsfis/datafile/rwsfis02.ora','+DATA/wsfis/datafile/rwsfis03.ora','+DATA/wsfis/datafile/rwsfis04.ora','+DATA/wsfis/datafile/rwsfis05.ora','+DATA/wsfis/datafile/rwsfis06.ora','+DATA/wsfis/datafile/rwsfis07.ora','+DATA/wsfis/datafile/rwsfis08.ora','+DATA/wsfis/datafile/rwsfis09.ora','+DATA/wsfis/datafile/rwsfis10.ora','+DATA/wsfis/datafile/rwsfis11.ora','+DATA/wsfis/datafile/rwsfis12.ora','+DATA/wsfis/datafile/rwsfis13.ora','+DATA/wsfis/datafile/rwsfis14.ora','+DATA/wsfis/datafile/rwsfis15.ora','+DATA/wsfis/datafile/rwsfis16.ora','+DATA/wsfis/datafile/rwsfis17.ora','+DATA/wsfis/datafile/rwsfis18.ora','+DATA/wsfis/datafile/hwsfis01.ora','+DATA/wsfis/datafile/cindx01.ora','+DATA/wsfis/datafile/rindx01.ora','+DATA/wsfis/datafile/rindx02.ora','+DATA/wsfis/datafile/rindx03.ora','+DATA/wsfis/datafile/rindx04.ora','+DATA/wsfis/datafile/rindx05.ora','+DATA/wsfis/datafile/rindx06.ora','+DATA/wsfis/datafile/rindx07.ora','+DATA/wsfis/datafile/rindx08.ora','+DATA/wsfis/datafile/rindx09.ora','+DATA/wsfis/datafile/rindx10.ora','+DATA/wsfis/datafile/rindx11.ora','+DATA/wsfis/datafile/rindx12.ora','+DATA/wsfis/datafile/rindx13.ora','+DATA/wsfis/datafile/rindx14.ora','+DATA/wsfis/datafile/rindx15.ora','+DATA/wsfis/datafile/rindx16.ora','+DATA/wsfis/datafile/rindx17.ora','+DATA/wsfis/datafile/rindx18.ora','+DATA/wsfis/datafile/rindx19.ora','+DATA/wsfis/datafile/rindx20.ora','+DATA/wsfis/datafile/rindx21.ora','+DATA/wsfis/datafile/rindx22.ora','+DATA/wsfis/datafile/rindx23.ora','+DATA/wsfis/datafile/rindx24.ora','+DATA/wsfis/datafile/rindx25.ora','+DATA/wsfis/datafile/rindx26.ora','+DATA/wsfis/datafile/rindx27.ora','+DATA/wsfis/datafile/rindx28.ora','+DATA/wsfis/datafile/rindx29.ora','+DATA/wsfis/datafile/rindx30.ora','+DATA/wsfis/datafile/rindx31.ora','+DATA/wsfis/datafile/rindx32.ora','+DATA/wsfis/datafile/rindx33.ora','+DATA/wsfis/datafile/rindx34.ora','+DATA/wsfis/datafile/rindx35.ora','+DATA/wsfis/datafile/hindx01.ora'CHARACTER SET ZHS16GBK;-- Commands to re-create incarnation table-- Below log names MUST be changed to existing filenames on-- disk. Any one log file from each branch can be used to-- re-create incarnation records.-- ALTER DATABASE REGISTER LOGFILE 'F:\ARCHIVE_LOG_02\ARC00001_0675961640.001'; -- Recovery is required if any of the datafiles are restored backups,-- or if the last shutdown was not normal or immediate.RECOVER DATABASE USING BACKUP CONTROLFILE-- Create log files for threads other than thread one.ALTER DATABASE ADD LOGFILE THREAD 2GROUP 3 '+DATA/wsfis/onlinelog/group_3.265.675962825' SIZE 50M REUSE,GROUP 4 '+DATA/wsfis/onlinelog/group_4.266.675962827' SIZE 50M REUSE;-- Database can now be opened zeroing the online logs.ALTER DATABASE OPEN RESETLOGS;-- Commands to add tempfiles to temporary tablespaces.-- Online tempfiles have complete space information.-- Other tempfiles may require adjustment.ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/wsfis/tempfile/temp.262.675961659' REUSE;ALTER TABLESPACE TEMP2 ADD TEMPFILE '+DATA/wsfis/datafile/temp22.ora' REUSE; ALTER TABLESPACE TEMP2 ADD TEMPFILE '+DATA/wsfis/datafile/temp21.ora' REUSE;然后在asm系统中del了原有控制文件(相当冒险的做法,特别是没有备份的情况下)。
Oracle备份恢复操作说明
Oracle备份恢复操作说明配置要求在使用爱数备份存储柜进行备份和恢复 Oracle 数据库、表空间、控制文件和归档日志等数据之前,应检验每个要保护的 Oracle SID(数据库)是否满足下列条件:∙使用爱数备份存储柜的用户应被分配了一个可用来登录到Oracle 数据库的Oracle 用户帐户。
∙Oracle Server 的数据库日志模式设置为ARCHIVELOG。
∙Oracle Server 的自动归档在Oracle 参数初始化文件中是启用的(该文件的默认名称为Init(SID).ora,其中SID 是实例名称)。
∙在Oracle Server 上有一个Oracle 在其中生成Archived Logfiles 的目录。
创建 Oracle 用户账户必须存在具有适当数据库权限的用户帐户爱数备份存储柜才能访问 Oracle 数据库。
您可以使用具有所需权限的现有用户帐户,或者创建具有所需权限的新用户帐户。
若要创建专门用于爱数备份存储柜的 Oracle 用户帐户,请使用 Oracle 服务器管理器应用程序并从提示符处输入以下命令:create user USERNAME identified by PASSWORD;grant dba to USERNAME;请确保用分配的登录用户名替换 USERNAME,用适当的密码替换 PASSWORD。
输入以上所有命令之后,分配的用户将具有保护数据库所需的适当权限。
注意:确保您是作为DBA 连接。
检验归档日志模式在备份 Oracle 数据库之前,必须将每个数据库的 Oracle 数据库日志模式设置为ARCHIVELOG,并且必须启用每个数据库的自动归档设置。
必须启用 ARCHIVELOG,爱数备份存储柜中的 Oracle 备份模块才能在运行备份操作前将每个表空间置于备份模式。
检验数据库日志是否处于 ARCHIVELOG 模式以及是否启用了“自动归档”的具体步骤如下:∙从服务器管理器的命令提示符处键入以下命令:archive log list;您应该看到: Database Log Mode ARCHIVE LOGAutomatic Archival ENABLED如果有任一参数没有正确设置,请关闭数据库,然后正确设置它。
损坏控制文件的恢复方法
一般情况下是利用控制文件的副本,我们创建数据库的时候不是一般都建立3个控制文件吗,这是用于进行冗余保护的,如果只有一个控制文件是好的,那么我们只需要将已损坏的控制文件删除,然后将好的这个控制文件复制到已损坏的控制文件的目录下,重命名成已损坏的控制文件即可(注意一下复制的位置,如果目标文件夹所在的磁盘已经损坏的情况下,我们就得把控制文件复制到好的磁盘上,并且还要修改control_files参数重新定位控制文件的位置)。
还有一种情况就是所有控制文件都损坏了,那么就得利用控制文件的备份进行恢复。
所以,我们在数据库创建好后第一件事就是对控制文件进行备份,在数据库物理结构变化之后也得备份控制文件。
使用命令ALTER DATABASE BACKUP CONTROLFILE TO TRACE,会有一个转储文件会放在user_dump_dest参数定义的目录中,里面有重建控制文件的脚步,按照转储文件里面写的做就可以了。
一、损坏单个控制文件损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了。
1、控制文件损坏,最典型的就是启动数据库出错,不能mount数据库SQL>startupORA-00205: error in identifying controlfile, check alert log for more info查看报警日志文件,有如下信息alter database mountMon May 26 11:59:52 2003ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl'ORA-27041: unable to open fileOSD-04002: unable to open fileO/S-Error: (OS 2) 系统找不到指定的文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle8i 控制文件损坏情况下成功的恢复Oracle8i, 控制文件情况描述:所有控制文件损坏,掉电(shutdown abort),无归档,无备份的成功恢复。
一个例子希望给大家以帮助。
注意:创建控制文件的时候,正常的话使用红色部分的reuse and noresetlogs,这样就不用手工apply日志而是直接就可以自动恢复了。
连接到:Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - ProductionSQL> drop table rn;表已丢弃。
SQL> alter system checkpoint;系统已更改。
SQL> drop table test_group;表已丢弃。
SQL> conn / as sysdba已连接。
SQL> shutdown abortOracle 例程已经关闭。
SQL> startup nomountOracle 例程已经启动。
Total System Global Area 31229980 bytesFixed Size 75804 bytesVariable Size 14299136 bytesDatabase Buffers 16777216 bytesRedo Buffers 77824 bytesSQL> CREATE CONTROLFILE SET/reuse DATABASE "billy" RESETLOGS/NOresetlogs NOARCHIVELOG2 MAXLOGFILES 643 MAXLOGMEMBERS 24 MAXDATAFILES 2545 MAXINSTANCES 326 MAXLOGHISTORY 1137 LOGFILE8 GROUP 1 'E:\Oracle\ORADATA\BILLY\REDO01.LOG' SIZE 1048576 ,9 GROUP 2 'E:\Oracle\ORADATA\BILLY\REDO02.LOG' SIZE 1048576 ,10 GROUP 3 'E:\Oracle\ORADATA\BILLY\REDO03.LOG' SIZE 104857611 DATAFILE12 'E:\Oracle\ORADATA\BILLY\SYSTEM01.DBF',13 'E:\Oracle\ORADATA\BILLY\RBS01.DBF',14 'E:\Oracle\ORADATA\BILLY\USERS01.DBF',15 'E:\Oracle\ORADATA\BILLY\TEMP01.DBF',16 'E:\Oracle\ORADATA\BILLY\TOOLS01.DBF',17 'E:\Oracle\ORADATA\BILLY\INDX01.DBF',18 'E:\Oracle\ORADATA\BILLY\DR01.DBF',19 'E:\Oracle\ORADATA\BILLY\DB4K.DBF'20 CHARACTER SET ZHS16GBK21 ;数据簇已更改。
SQL> shutdownORA-01109: ??????已经卸载数据库。
Oracle 例程已经关闭。
SQL> startup mountOracle 例程已经启动。
Total System Global Area 31229980 bytesFixed Size 75804 bytesVariable Size 14299136 bytesDatabase Buffers 16777216 bytesRedo Buffers 77824 bytes数据库装载完毕。
SQL> recover database using backup controlfile until cancel; ORA-00279: ?? 25526706 (? 03/20/2003 09:45:25 ??) ???? 1 ???? ORA-00289: ??: E:\Oracle\ORA81\RDBMS\ARC00001.001ORA-00280: ?? 25526706 ???? 1 ???? # 1 ???指定日志: {=suggested | filename | AUTO | CANCEL}'E:\Oracle\ORADATA\BILLY\REDO01.LOG'ORA-00339: ???????????ORA-00334: ????: 'E:\Oracle\ORADATA\BILLY\REDO01.LOG'ORA-01547: ??: RECOVER ??? OPEN RESETLOGS ???????ORA-01194: ??1?????????????ORA-01110: ???? 1: 'E:\Oracle\ORADATA\BILLY\SYSTEM01.DBF'SQL> recover database using backup controlfile until cancel; ORA-00279: ?? 25526706 (? 03/20/2003 09:45:25 ??) ???? 1 ???? ORA-00289: ??: E:\Oracle\ORA81\RDBMS\ARC00001.001ORA-00280: ?? 25526706 ???? 1 ???? # 1 ???指定日志: {=suggested | filename | AUTO | CANCEL}'E:\Oracle\ORADATA\BILLY\REDO03.LOG'已应用的日志。
完成介质恢复。
SQL> recover database using backup controlfile until cancel; ORA-00279: ?? 25526718 (? 03/20/2003 09:45:38 ??) ???? 1 ???? ORA-00289: ??: E:\Oracle\ORA81\RDBMS\ARC00001.001ORA-00280: ?? 25526718 ???? 1 ???? # 1 ???指定日志: {=suggested | filename | AUTO | CANCEL}'E:\Oracle\ORADATA\BILLY\REDO01.LOG'ORA-00339: ???????????ORA-00334: ????: 'E:\Oracle\ORADATA\BILLY\REDO01.LOG'SQL> alter database open resetlogs;数据库已更改。
SQL>在最后一步注意日志文件选择的正确,一个一个试都没有关系或问曰:CREATE CONTROLFILE SET DATABASE "billy" RESETLOGS NOARCHIVELOG ??应该不要resetlogs吧? redo log file做shut abort之前的数据不就全没有了吗?答:如果reuse 创建控制文件就可以不用resetlogs。
即使使用set 创建控制文件也可以进行完全恢复。
看下面:SQL> conn rainy/rainy已连接。
SQL> truncate table trans;表已截掉。
SQL> alter system checkpoint;系统已更改。
SQL> insert into trans values(1);已创建 1 行。
SQL> commit;提交完成。
SQL> conn / as sysdba已连接。
SQL> shutdown abortOracle 例程已经关闭。
SQL> startup nomountOracle 例程已经启动。
Total System Global Area 31229980 bytesFixed Size 75804 bytesVariable Size 14299136 bytesDatabase Buffers 16777216 bytesRedo Buffers 77824 bytesSQL> CREATE CONTROLFILE SET DATABASE "billy" NORESETLOGS NOARCHIVELOG2 MAXLOGFILES 643 MAXLOGMEMBERS 24 MAXDATAFILES 2545 MAXINSTANCES 326 MAXLOGHISTORY 1137 LOGFILE8 GROUP 1 'E:\Oracle\ORADATA\BILLY\REDO01.LOG' SIZE 1048576 ,9 GROUP 2 'E:\Oracle\ORADATA\BILLY\REDO02.LOG' SIZE 1048576 ,10 GROUP 3 'E:\Oracle\ORADATA\BILLY\REDO03.LOG' SIZE 104857611 DATAFILE12 'E:\Oracle\ORADATA\BILLY\SYSTEM01.DBF',13 'E:\Oracle\ORADATA\BILLY\RBS01.DBF',14 'E:\Oracle\ORADATA\BILLY\USERS01.DBF',15 'E:\Oracle\ORADATA\BILLY\TEMP01.DBF',16 'E:\Oracle\ORADATA\BILLY\TOOLS01.DBF',17 'E:\Oracle\ORADATA\BILLY\INDX01.DBF',18 'E:\Oracle\ORADATA\BILLY\DR01.DBF',19 'E:\Oracle\ORADATA\BILLY\DB4K.DBF'20 CHARACTER SET ZHS16GBK21 ;CREATE CONTROLFILE SET DATABASE "billy" NORESETLOGS NOARCHIVELOG*ERROR 位于第 1 行:ORA-01503: CREATE CONTROLFILE ??ORA-01223: ???? RESETLOGS ?????????SQL> CREATE CONTROLFILE SET DATABASE "billy" RESETLOGS NOARCHIVELOG2 MAXLOGFILES 643 MAXLOGMEMBERS 24 MAXDATAFILES 2545 MAXINSTANCES 326 MAXLOGHISTORY 1137 LOGFILE8 GROUP 1 'E:\Oracle\ORADATA\BILLY\REDO01.LOG' SIZE 1048576 ,9 GROUP 2 'E:\Oracle\ORADATA\BILLY\REDO02.LOG' SIZE 1048576 ,10 GROUP 3 'E:\Oracle\ORADATA\BILLY\REDO03.LOG' SIZE 104857611 DATAFILE12 'E:\Oracle\ORADATA\BILLY\SYSTEM01.DBF',13 'E:\Oracle\ORADATA\BILLY\RBS01.DBF',14 'E:\Oracle\ORADATA\BILLY\USERS01.DBF',15 'E:\Oracle\ORADATA\BILLY\TEMP01.DBF',16 'E:\Oracle\ORADATA\BILLY\TOOLS01.DBF',17 'E:\Oracle\ORADATA\BILLY\INDX01.DBF',18 'E:\Oracle\ORADATA\BILLY\DR01.DBF',19 'E:\Oracle\ORADATA\BILLY\DB4K.DBF'20 CHARACTER SET ZHS16GBK21 ;数据簇已更改。