controlfile丢失后的 恢复
- 格式:doc
- 大小:26.00 KB
- 文档页数:5
仅仅丢失一个普通用户数据文件的恢复A(联机恢复)(例如,丢失D:\BACKUPDB\USERS01.DBF)准备工作, 通过下面的工作,如果完全恢复,应该可以看到;insert into test1 values(2);SQL> conn lunar/lunarSQL> select * from tab;TESTBACKUP3 TABLESQL> create table test1 (a number);SQL> insert into test1 values(1);SQL> alter system switch logfile;SQL> commit;SQL> alter system switch logfile;SQL> insert into test1 values(2);SQL> commit;SQL> alter system switch logfile;SQL> conn internalSQL> archive log list数据库日志模式存档模式自动存档启用存档终点d:\BACKUPDB\archive最早的概要信息日志序列3下一个存档日志序列5当前日志序列5shutdown abort关闭例程,模拟数据文件丢失SQL> shutdown abortORACLE 例程已经关闭。
Mount数据库SQL> startup mount数据库装载完毕。
使损坏的数据文件脱机SQL> alter database datafile 'D:\BACKUPDB\USERS01.DBF' offline;打开数据库SQL> alter database open;拷贝刚才热备的数据文件(USERS01.DBF)恢复损坏的数据文件SQL> recover datafile 'D:\BACKUPDB\USERS01.DBF';ORA-00279: ?? 424116 (? 10/20/2002 20:42:04 ??) ???? 1 ????ORA-00289: ??: D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARCORA-00280: ?? 424116 ???? 1 ???? # 1 ???指定日志: {<RET>=suggested | filename | AUTO | CANCEL}autoORA-00279: ?? 424125 (? 10/20/2002 20:44:14 ??) ???? 1 ????ORA-00289: ??: D:\BACKUPDB\ARCHIVE\BACKUPT001S00002.ARCORA-00280: ?? 424125 ???? 1 ???? # 2 ???ORA-00278: ??????????? 'D:\BACKUPDB\ARCHIVE\BACKUPT001S00001.ARC' ……………………..已应用的日志。
Oracle数据库丢失一个控制文件恢复方法
1:查看控制文件,使用下面语句:
SQL> select name from v$controlfile;截图如下:
可以看到三个控制文件。
2:模拟丢失一个控制文件。
在oracle用户orcl目录下删除control03.ctl,截图如下:
3:重新启动数据库进行测试,截图如下:
数据库无法启动
4:尝试恢复数据库,因为三个控制文件都是一样的,所以可以通过复制cntrol01.ctl到contol03.ctl,从而找回丢失的控制文件,截图如下:
5:重新启动数据库测试结果:
数据库成功启动。
通过以上步骤就解决由于数据库控制文件部分丢失所造成的数据库无法开启的问题了。
损坏数据文件的恢复方法一:非归档模式下丢失或者损坏数据文件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数据库rman备份计划及恢复1.rman完全恢复的前提条件:历史的datafile,controlfile和spfile备份,加上完整的archivelog和完好的redolog。
2.rman备份脚本: a.RMAN 0级备份命令:run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;backup incremental level 0 tag 'level0' format "E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\RFDB_level_0_%u_%s_%p" as compressed backupset database;sql "alter system archive log current";backup filesperset 3 format "E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\arch_%u_%s_%p_%c"archivelog all delete input; #备份归档可选,可以单独定期备份release channel c1;release channel c2;release channel c3;} b.RMAN 1级备份命令:run{allocate channel c1 type disk;allocate channel c2 type disk;allocate channel c3 type disk;backup incremental level 1 tag 'level1' format 'E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\RFDB_level_1_%u_%s_%p' as compressed backupset database;sql 'alter system archive log current';backup filesperset 3 format 'E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\arch_%u_%s_%p'archivelog all delete input; #备份归档可选,可以单独定期备份release channel c1;release channel c2;release channel c3;} c.rman删除备份命令(在保留最近⼀天备份的情况下,删除其他备份):DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 1 DAYS; d.操作系统层⾯运⾏rman备份或删除命令(windows/linux):rman target sys/rf4rfvbgt56yhn@rfdb nocatalog CMDFILE 'D:\app\rman\rman_file\level_0.txt' log=E:\recovery_area\rfdb\rfdb\AUTOBACKUP\rman_dir\log\rman_level_0.log export ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1export ORACLE_SID=atestexport PATH=$ORACLE_HOME/bin:$PATHrman target sys/123456@atest nocatalog CMDFILE '/u01/rman/rman.sh' log=/u01/rman/rman.log00 02 * * 1 bash /u01/rman_file/run_rman_0.sh00 02 * * 3 bash /u01/rman_file/run_rman_0.sh00 02 * * 5 bash /u01/rman_file/run_rman_0.sh00 04 * * * bash /u01/rman_file/run_delete.sh34 11 * * * bash /u01/rman_file/run_rman_0.sh e.rman参数设置:RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;3.rman恢复a.拷贝datafile,controlfile和spfile的rman备份,以及完整的archivelog和完好的redolog⽂件到新的数据库。
数据恢复快捷键数据恢复是我们在电脑使用过程中常常遇到的一个重要问题。
不论是因为误操作、病毒攻击还是硬件故障,导致数据丢失都会给我们带来困扰。
然而,对于大多数人来说,数据恢复工作显得十分复杂和困难。
好在,今天我将为大家介绍一些常见的数据恢复快捷键,帮助大家在遇到数据丢失的状况下可以快速有效地找回数据。
1. Ctrl + Z无论是文件的误删除,还是文字的误删、误改,Ctrl + Z都是最常用的撤销操作快捷键。
当你不小心删除了一个重要文件或者格式错误后,按下Ctrl + Z即可撤销上一次操作,将文件或者文字恢复到之前的状态。
2. Ctrl + YCtrl + Y是前进操作的快捷键。
当你使用Ctrl + Z撤销了一个操作后,可以按下Ctrl + Y将之前撤销的操作重新恢复。
这对于误操作并需要恢复的情况下非常有用。
3. Ctrl + SCtrl + S是保存快捷键,用于将当前的工作保存起来。
当你在编辑一个文档或者修改一个表格时,记得经常按下Ctrl + S来保存你的工作进度。
这样即便因为意外情况导致电脑重启或者程序崩溃,你也不会丢失之前的工作进度。
4. Ctrl + C 和 Ctrl + VCtrl + C和Ctrl + V是复制和粘贴的快捷键。
当你需要备份一份重要的文件或者复制一段文本时,可以使用Ctrl + C将其复制到剪贴板上,然后使用Ctrl + V将其粘贴到其他地方。
5. F5F5是刷新快捷键。
当你在使用电脑时,有时候可能会遇到显示不正常或者文件列表不更新的问题。
这时候可以按下F5键来刷新你正在浏览的页面或者文件列表,以便得到最新的内容。
6. Ctrl + Alt + DeleteCtrl + Alt + Delete是向Windows操作系统发送强制关机信号的快捷键。
当你的电脑遇到严重的故障或者程序崩溃无法关闭时,你可以按下Ctrl + Alt + Delete来强制关闭电脑。
但请注意,这将会导致你未保存的工作进度丢失,所以在使用这个快捷键之前,请确保你已经保存了你的工作。
一般情况下数据库的DBA都会对controlfile 进行多路复用,这样可以保证控制文件的安全性,对于数据库而言只要数据文件和redolog、archivelog不丢,数据都是可以恢复的,只是controlfile丢失,会比较麻烦。
环境:control01.ctl、control02.ctl、control03.ctl1、3个controlfile中的一个或者两个丢失,关闭数据库后,从没有没丢失的那个controlfile进行拷贝。
2、3个控制文件全丢失,可以进行重构控制文件,一般情况下我们会对控制文件进行二进制文件备份(alter database backup controlfile to trace as '*****' 备份成二进制文件)(alter database backup controlfile to '***' 是直接备份控制文件 )以下是备份出来的二进制文件的内容:有两种情况,1、完全恢复的时候用(红色)2、不完全恢复的时候用(紫红)-- The following are current System-scope REDO Log Archival related-- parameters and can be included in the database initialization file.-- LOG_ARCHIVE_DEST=''-- LOG_ARCHIVE_DUPLEX_DEST=''-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf-- DB_UNIQUE_NAME="orcl"-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'-- LOG_ARCHIVE_MAX_PROCESSES=2-- STANDBY_FILE_MANAGEMENT=MANUAL-- STANDBY_ARCHIVE_DEST=?/dbs/arch-- FAL_CLIENT=''-- FAL_SERVER=''-- LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/orcl/arch'-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'-- LOG_ARCHIVE_DEST_1='REGISTER NOALTERNATE NODEPENDENCY'-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'-- LOG_ARCHIVE_DEST_STATE_1=ENABLE-- Below are two sets of SQL statements, each of which creates a new-- control file and uses it to open the database. The first set opens-- the database with the NORESETLOGS option and should be used only if-- the current versions of all online logs are available. The second -- set opens the database with the RESETLOGS option and should be used -- if online logs are unavailable.-- The appropriate set of statements can be copied from the trace into -- a script file, edited as necessary, and executed when there is a-- need to re-create the control file.-- Set #1. NORESETLOGS case-- The following commands will create a new control file and use it-- to open the database.-- Data used by Recovery Manager will be lost.-- Additional logs may be required for media recovery of offline-- Use this only if the current versions of all online logs are-- available.-- After mounting the created controlfile, the following SQL-- statement will place the database in the appropriate-- protection mode:-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/app1_01.dbf','/u01/app/oracle/oradata/orcl/app02_01.dbf'CHARACTER SET AL32UTF8-- 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.-- Recovery is required if any of the datafiles are restored backups,-- or if the last shutdown was not normal or immediate.RECOVER DATABASE-- All logs need archiving and a log switch is needed.ALTER SYSTEM ARCHIVE LOG ALL;-- Database can now be opened normally.ALTER DATABASE OPEN;-- Commands to add tempfiles to temporary tablespaces.-- Online tempfiles have complete space information.-- Other tempfiles may require adjustment.ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'-- End of tempfile additions.-- Set #2. RESETLOGS case-- The following commands will create a new control file and use it-- to open the database.-- Data used by Recovery Manager will be lost.-- The contents of online logs will be lost and all backups will-- be invalidated. Use this only if online logs are damaged.-- After mounting the created controlfile, the following SQL-- statement will place the database in the appropriate-- protection mode:-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCESTARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/app1_01.dbf','/u01/app/oracle/oradata/orcl/app02_01.dbf'CHARACTER SET AL32UTF8-- 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.-- 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-- 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 '/u01/app/oracle/oradata/orcl/temp01.dbf'-- End of tempfile additions.执行以上脚本对controlfile进行重构时,是在数据库未启动的时候进行。
orcl数据库还原语句ORCL数据库是甲骨文公司开发的一种关系型数据库管理系统,被广泛应用于企业级应用程序中。
在日常运维中,数据库还原是一项非常重要的任务,它可以帮助我们恢复数据库到之前的某个时间点,以防止数据丢失或者错误操作导致的数据损坏。
本文将介绍ORCL数据库还原的相关语句和步骤。
首先,我们需要了解ORCL数据库还原的两种常见方式:物理还原和逻辑还原。
物理还原是通过备份文件来恢复数据库,而逻辑还原则是通过SQL语句来还原数据库。
对于物理还原,我们可以使用以下语句来还原数据库:1. 关闭数据库:SHUTDOWN IMMEDIATE;2. 将数据库设置为归档模式:ALTER DATABASE ARCHIVELOG;3. 还原控制文件:STARTUP MOUNT;RESTORE CONTROLFILE FROM '备份文件路径';ALTER DATABASE OPEN RESETLOGS;4. 还原数据文件和日志文件:RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;CANCEL;5. 打开数据库:ALTER DATABASE OPEN;对于逻辑还原,我们可以使用以下语句来还原数据库:1. 关闭数据库:SHUTDOWN IMMEDIATE;2. 还原数据库:STARTUP MOUNT;RESTORE DATABASE FROM '备份文件路径';RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;CANCEL;3. 打开数据库:ALTER DATABASE OPEN;无论是物理还原还是逻辑还原,我们都需要先关闭数据库,然后根据备份文件的路径来还原数据库。
在还原过程中,我们需要注意以下几点:1. 备份文件的选择:选择最新的备份文件来还原数据库,以确保数据的完整性和准确性。
控制文件(control file)恢复(1)实验前先备份数据库一、利用trace文件恢复控制文件1. 提前将control file备份成文本文件alter database backup controlfile to trace修改controlfile内容,模拟controlfile损坏,select * from v$controlfile;alter system checkpoint;10g没有自动检测出controlfile损坏2. 关闭数据库,再重启,报错shutdown immediatestartupalter文件提示ORA-00202: control file: '/home/oracle/oradata/orcl/control01.ctl'ORA-27047: unable to read the header block of fileLinux Error: 17: File exists3. 启动数据库到nomountstartup nomount4. 利用trace文件中的controlfile创建语句重建controlfileCREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/home/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 '/home/oracle/oradata/orcl/redo02.log' SIZE 50M,GROUP 3 '/home/oracle/oradata/orcl/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE'/home/oracle/oradata/orcl/system01.dbf','/home/oracle/oradata/orcl/undotbs01.dbf','/home/oracle/oradata/orcl/sysaux01.dbf','/home/oracle/oradata/orcl/users01.dbf','/home/oracle/oradata/orcl/example01.dbf'CHARACTER SET AL32UTF85. 开启数据库alter database open resetlog;alter database open / alter datbase open noresetlog 都会提示需要resetlog6. 重启数据库shutdown immediate;startup;若第二步使用shutdown abort关闭数据库(模拟数据库挂了),则第6步后会提示sql>alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1: '/home/oracle/oradata/orcl/system01.dbf'需要使用recover database (事先需要备份数据库)进行介质恢复;。
恢复文件的方法在使用电脑的过程中,我们经常会遇到文件丢失或删除的情况,这给我们的工作和生活带来了很大的困扰。
幸运的是,我们可以通过一些方法来恢复丢失的文件,下面将介绍几种常见的恢复文件的方法。
一、使用回收站恢复文件当我们删除文件时,电脑通常会将这些文件移动到回收站而不是直接永久删除。
因此,我们可以尝试在回收站中查找并恢复文件。
只需双击打开回收站,然后找到所需的文件,右键点击恢复即可。
这种方法适用于最近删除的文件,如果文件被清空回收站或删除时间较长,可能无法找回。
二、使用系统备份恢复文件大多数操作系统都提供了备份和还原的功能,我们可以利用这个功能来恢复文件。
通过系统备份,我们可以将文件还原到之前的某个时间点,使文件恢复到丢失之前的状态。
具体操作步骤可以在系统设置中找到备份和还原选项,按照提示进行操作即可。
需要注意的是,备份功能需要提前设置并定期进行文件备份。
三、使用专业的数据恢复软件如果文件已经从回收站中删除或者备份也没有找到,我们可以考虑使用专业的数据恢复软件来恢复文件。
市面上有很多数据恢复软件可供选择,如Recuva、EaseUS Data Recovery Wizard等。
这些软件可以扫描计算机硬盘上的已删除文件,然后尝试恢复这些文件。
使用数据恢复软件时,我们需要选择正确的扫描模式并按照软件的指示进行操作。
四、使用文件恢复服务如果以上方法都无法恢复文件,或者你不想自己尝试恢复文件,还可以考虑使用文件恢复服务。
文件恢复服务通常由专业的数据恢复公司提供,他们会使用更高级的技术和设备来帮助恢复文件。
你只需要将你的硬盘或存储设备送到他们的实验室,他们会尽力恢复你的文件。
需要注意的是,使用文件恢复服务可能需要支付一定的费用。
五、预防措施除了学会恢复文件的方法外,我们还应该注意文件的预防工作,以避免文件丢失。
首先,我们应该建立良好的文件管理习惯,及时备份重要文件,并定期检查备份文件的完整性和可用性。
其次,我们应该谨慎操作,避免误删除文件,尽量避免使用不可靠的软件或下载来自不信任的来源的文件。
一般情况下数据库的DBA都会对controlfile 进行多路复用,这样可以保证控制文件的安全性,对于数据库而言只要数据文件和redolog、archivelog不丢,数据都是可以恢复的,只是controlfile丢失,会比较麻烦。
环境:control01.ctl、control02.ctl、control03.ctl1、3个controlfile中的一个或者两个丢失,关闭数据库后,从没有没丢失的那个controlfile进行拷贝。
2、3个控制文件全丢失,可以进行重构控制文件,一般情况下我们会对控制文件进行二进制文件备份(alter database backup controlfile to trace as '*****' 备份成二进制文件)(alter database backup controlfile to '***' 是直接备份控制文件 )以下是备份出来的二进制文件的内容:有两种情况,1、完全恢复的时候用(红色)2、不完全恢复的时候用(紫红)-- The following are current System-scope REDO Log Archival related-- parameters and can be included in the database initialization file.-- LOG_ARCHIVE_DEST=''-- LOG_ARCHIVE_DUPLEX_DEST=''-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf-- DB_UNIQUE_NAME="orcl"-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'-- LOG_ARCHIVE_MAX_PROCESSES=2-- STANDBY_FILE_MANAGEMENT=MANUAL-- STANDBY_ARCHIVE_DEST=?/dbs/arch-- FAL_CLIENT=''-- FAL_SERVER=''-- LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/oradata/orcl/arch'-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'-- LOG_ARCHIVE_DEST_1='REGISTER NOALTERNATE NODEPENDENCY'-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'-- LOG_ARCHIVE_DEST_STATE_1=ENABLE-- Below are two sets of SQL statements, each of which creates a new-- control file and uses it to open the database. The first set opens-- the database with the NORESETLOGS option and should be used only if-- the current versions of all online logs are available. The second -- set opens the database with the RESETLOGS option and should be used -- if online logs are unavailable.-- The appropriate set of statements can be copied from the trace into -- a script file, edited as necessary, and executed when there is a-- need to re-create the control file.-- Set #1. NORESETLOGS case-- The following commands will create a new control file and use it-- to open the database.-- Data used by Recovery Manager will be lost.-- Additional logs may be required for media recovery of offline-- Use this only if the current versions of all online logs are-- available.-- After mounting the created controlfile, the following SQL-- statement will place the database in the appropriate-- protection mode:-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE STARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/app1_01.dbf','/u01/app/oracle/oradata/orcl/app02_01.dbf'CHARACTER SET AL32UTF8-- 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 '/u01/app/oracle/oradata/orcl/arch/1_1_562360180.dbf'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/oradata/orcl/arch/1_1_772185780.dbf'; -- Recovery is required if any of the datafiles are restored backups,-- or if the last shutdown was not normal or immediate.RECOVER DATABASE-- All logs need archiving and a log switch is needed.ALTER SYSTEM ARCHIVE LOG ALL;-- Database can now be opened normally.ALTER DATABASE OPEN;-- Commands to add tempfiles to temporary tablespaces.-- Online tempfiles have complete space information.-- Other tempfiles may require adjustment.ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf'SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;-- End of tempfile additions.-- Set #2. RESETLOGS case-- The following commands will create a new control file and use it-- to open the database.-- Data used by Recovery Manager will be lost.-- The contents of online logs will be lost and all backups will-- be invalidated. Use this only if online logs are damaged.-- After mounting the created controlfile, the following SQL-- statement will place the database in the appropriate-- protection mode:-- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCESTARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log' SIZE 50M,GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log' SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/app1_01.dbf','/u01/app/oracle/oradata/orcl/app02_01.dbf'CHARACTER SET AL32UTF8-- 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 '/u01/app/oracle/oradata/orcl/arch/1_1_562360180.dbf'; -- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/oradata/orcl/arch/1_1_772185780.dbf'; -- 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-- 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 '/u01/app/oracle/oradata/orcl/temp01.dbf'SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;-- End of tempfile additions.执行以上脚本对controlfile进行重构时,是在数据库未启动的时候进行。
controlfile丢失后的恢复
controlfile丢失后的恢复
热度2已有1157 次阅读2009-12-3 13:24 |个人分
类:ORACLE学习|关键词:controlfile
1. 使用RMAN工具备份恢复controlfileRMAN参数选项”CONFIGURE CONTROLFILE AUTOBACKUP
ON/OFF”定义为”ON”,则任意一次RMAN备份都会自动备份controlfile,比如备份tablespace;定义为”OFF”,则不会自动备份controlfile,需要手动备份。
使用RMAN工具备份controflile的命令如下#rman target /RMAN>backup current controlfile;
使用RMAN备份集恢复controlfile的步骤如下#rman target /RMAN>startup nomountRMAN>set
dbid=******RMAN>restore controlfile from autobackup;RMAN>alter database
mount;RMAN>recover database;RMAn>alter database open open resetlogs; 注意:使用RMAN恢复时,必须有instance的DBID。
DBID是唯一的,可以通过v$instance视图确定。
Controlfile故障后无法查询v$instance视图,所以故障前须确知DBID,否则会遇到麻烦,呵呵。
2. 使用SQL*PLUS 命令备份至指定文件SQLPLUS命令备份controlfile有两种方式,这里先介绍备份为具体文件的方法。
使用SQL命令备份controlfile,步骤如下:#sqlplus “/as
sysdba”SQL> alter database backup controlfile to
'd:\backup.ctl';使用SQL命令恢复controlfile,步骤如下:
1> 使用备份文件”backup.ctl”直接copy。
注意:拷贝文件的名称、路径、份数与原controlfile 完全一致。
2> 使用下列命令进行恢复SQL> startup mount;ORA-32004: obsolete and/or deprecated parameter(s) specifiedORACLE例程已经启动。
Total System Global Area 452984832 bytesFixed Size
1249512 bytesVariable Size 155193112 bytesDatabase Buffers 289406976 bytesRedo Buffers 7135232 bytes数据库装载完毕。
SQL> recover database using backup controlfile;ORA-00279:更改718494 (在
07/31/2008 22:21:53生成)对于线程1是必需的ORA-00289:建议:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVE\LOG1_2_6613889 74.ARCORA-00280:更改718494 (用于线程1)在序列#2中指定日志: {<RET>=suggested | filename | AUTO |
CANCEL}注意:提示输入redolog,但一般情况下输入建议的archivelog会报错在此处输入的redolog为状态为current的online redolog 通过v$log,v$logfile视图确定当前状态为CURRENT的redolog文件
D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO01.LOG 已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;数据库已更改。
SQL>3. 使用SQL*PLUS命令备份至trace文件备份控制文件步骤如下:#sqlplus
“/as sysdba”SQL> alter database backup controlfile to trace;注意:备份完毕后会在
$ORACLE_HOME/admin/*sid*/udump目录下生成对应的trace文件使用trace备份集恢复controlfile的步骤如下:
1> 打开备份controlfile时生成的trace文件2>
找到标记”Set #1. NORESETLOGS case”部分。
注意:一般情况下trace文件里都会有2部分相关内容恢复时先执行”Set #1. NORESETLOGS case”部分
3> 运行上述标记部分的sql语句SQL>STARTUP NOMOUNTSQL>CREATE CONTROLFILE REUSE DATABASE "ZP" NORESETLOGS ARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292LOGFILEGROUP 1
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO01.LOG ' SIZE 50M,GROUP 2
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO02.LOG ' SIZE 50M,GROUP 3
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\REDO03.LOG ' SIZE
50MDATAFILE'D:\ORACLE\PRODUCT\10.2.0\ORADATA\Z P\SYSTEM01.DBF','D:\ORACLE\PRODUCT\10.2.0\ORADAT A\ZP\UNDOTBS01.DBF','D:\ORACLE\PRODUCT\10.2.0\OR ADATA\ZP\SYSAUX01.DBF','D:\ORACLE\PRODUCT\10.2.0 \ORADATA\ZP\USERS01.DBF','D:\ORACLE\PRODUCT\10.2 .0\ORADATA\ZP\TBS1.DBF'CHARACTER SET
ZHS16GBK;SQL>V ARIABLE RECNO
NUMBER;SQL>EXECUTE :RECNO :=
SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLF ILE AUTOBACKUP','ON');RECOVER
DATABASE;SQL>ALTER SYSTEM ARCHIVE LOG ALL;SQL>ALTER DATABASE OPEN;SQL>ALTER TABLESPACE TEMP ADD TEMPFILE
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ZP\TEMP01.DBF' SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;4. 使用COPY或是cp命令进行控制
文件的备份使用操作系统的copy或是cp命令直接备份controfile,恢复的方法与使用”alter database backup controlfile to filename”备份文件步骤命令一样。