备份与恢复--一个表空间能否被多个数据库读写?
继续上一篇文章的测试,第一个数据库采用只读方式打开USERS表空间,然后在目标数据库通过重建数据库恢复的方式加载这个表空间,加载成功后,下面尝试在源数据库中将表空间以读写方式打开。[@more@]SQL> SELECT NAME FROM V$DATABASE;NAME---------ORCLSQL> alter tablespace users read write;alter tablespace users read write*ERROR at line 1:ORA-01256: error in locking database file 4ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'再看看目标库的情况SQL> SELECT NAME FROM V$DATABASE;NAME------
备份与恢复--一个表空间能否被多个数据库同时打开?
一个表空间能否被多个数据库同时打开?我也来试试。这个问题其实是来自论坛上的一个帖子:http://www.itpub.net/showthread.php?s=&threadid=658187。参考:http://yangtingkun.itpub.net/post/468/228632[@more@]SQL> alter tablespace users read only;Tablespace altered.SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM ONLINEUNDOTBS1 ONLINESYSAUX
备份与恢复--nologging表无法恢复
对于采用NOLOGGING方式创建的表,由于系统不产生重做日志,因此即使Oracle处于归档模式下也无法恢复表中的数据。[@more@]SQL> create table jglu.test_recover 2 tablespace test 3 as 4 select * from dba_tables;Table created.SQL> alter tablespace test offline;Tablespace altered.SQL> host cp /u01/backup/test02.dbf /u01/app/oracle/oradata/orclSQL> recover tablespace test;Media recovery complete.SQL> alter tablespace test online;Tablespace altered.SQL> select count(*) from jglu.test_rec
备份与恢复--跨越resetlogs的恢复
在10g之前,一般情况下是无法利用RESETLOGS操作之前的备份进行数据库的恢复的。特定条件下10g前的恢复可参考:http://yangtingkun.itpub.net/post/468/59092,恢复过程已比较复杂。10g中oracle提供了跨越resetlogs恢复的可能,下面就这项新功能做了下测试.[@more@]先进行一次全备份。[oracle@rhel131 ~]$ rman target /Recovery Manager: Release 10.2.0.1.0 - Production on Mon Jan 19 00:47:58 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.connected to target database: ORCL (DBID=1203373630)RMAN> backup data
备份与恢复--重新控制文件数据字典和控制文件不一致的恢复
在执行恢复后,应该检查数据库的alert文件,看是否出现控制文件中的数据文件名称和数据字典中数据文件名称无法一一对应的现象。这篇文章描述通过RESETLOGS方式打开数据库时,如果发现不一致情况及解决方法。[@more@]如果是利用备份的控制文件,除了数据文件的新增和删除以外,不会出现不一致的情况。这种不一致的情况更多的是出现在手工重建控制文件过程中。SQL> select tablespace_name,status from dba_tablespaces;TABLESPACE_NAME STATUS------------------------------ ---------SYSTEM O
备份与恢复--利用备份的控制文件恢复
如果全部控制文件丢失,但是包含以前控制文件的备份,这时可以利用备份的控制文件进行恢复,不过在恢复后需要以RESETLOGS方式打开数据库。如果重做日志文件可用则可以完全恢复,如缺少重做日志文件,则只能进行不完全恢复。[@more@]下面模拟一下完全恢复的情况:SQL> alter database backup controlfile to '/u01/backup/control01.bak';Database altered.SQL> select * from jglu.a; ID---------- 1 2SQL> insert into jglu.a values(3);1 row created.SQL> commit;Commit complete.SQL> alter sy
备份与恢复--从备份的归档日志中恢复数据
在恢复过程中,Oracle利用归档日志进行恢复,默认情况下,Oracle会在归档日志的产生目录来寻找归档日志文件。如果在恢复时发现归档日志被备份并从归档目录删除,则Oracle在恢复过程中无法找到指定的归档日志文件。[@more@]SQL> alter tablespace users offline;Tablespace altered.备份当前的归档日志SQL> host cp /u01/app/oracle/admin/orcl/archive/*.* /u01/backup/archive移除当前的归档日志SQL> host rm /u01/app/oracle/admin/orcl/archive/*.*用备份的datafile替换当前的SQL> host cp /u01/backup/users01.dbf /u01/a
备份与恢复--重建控制文件后数据文件损坏的恢复
恢复办法知用于:控制文件重建后的数据文件损坏前提条件:归档模式,有完整的归档日志和重建控制文件前的数据文件方法:将以前备份的文件拷贝过来,做一次recover就行了[@more@]重建控制文件之前的归档日志。SQL> SELECT RECID, NAME, FIRST_TIME FROM V$ARCHIVED_LOG;RECID NAME FIRST_TIM----- ------------------------------------------------------------------------------------------ --------- 1 /u01/app/oracle/flash_recovery
备份与恢复--重建控制文件
恢复办法适用于: 控制文件全部丢失且没有备份前提条件: 数据库如果是干净的关闭的,就可以用noresetlogs方式打开数据库,否则用resetlogs打开。方法: 如果在最后一次数据库结构修改后使用了ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令备份了创建控制文件的脚本,则可以直接用TRACE文件中的脚本进行控制文件的重建。 如果使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令之后又进行了数据库结构的修改,则需要手工编辑TRACE文件中的脚本,来反映出数据库最后的修改。 如果是使用的ALTER DATABA
备份与恢复--数据文件损坏或丢失
恢复办法适用于: 数据文件损坏或丢失,且损坏或丢失的数据文件没有备份。前提条件: 数据库为archive模式,且保留着所有的从这个表空间建立起到现在的归档日志。方法: 首先建立一个新的空数据文件,然后利用完全的归档日志来恢复表空间中的数据。[@more@]SQL> archive log list;Database log mode Archive ModeAutomatic archival EnabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 4Next log sequence to archive 6Current log sequence
备份恢复原理的实践
看到warehouse的精华,做了点实验,记录一下。http://www.itpub.net/thread-1065138-1-1.html[@more@]checkpoint_change#记录在不同的地方,当checkpoint完成后,这几个地方的checkpoint_change#就会更新为一致,如出现不一致的情况下,就需要进行恢复,先看看哪些地方存储着checkpoint_change#SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';Session altered.SQL> set linesize 1000SQL> alter system checkpoint;System altered.--controlfile记录的checkpoint_change#SQL> select checkpoint_change# from
RMAN异地恢复实战
目的:用RMAN将61.106的database恢复到61.99OS: both rhel u4ORACLE: both 10.2.0.4[@more@]步骤:1.full backup 61.106的数据RMAN> backup database;Starting backup at 04-JUL-08allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=235 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00008 name=/u01/oradata/orcl/office01.dbfinput datafile fno=00011 name=/u01/oradata/orcl/cmrspace01.dbfinput datafile fno=00013 name=/u0