备份恢复技术_第1页
备份恢复技术_第2页
备份恢复技术_第3页
备份恢复技术_第4页
备份恢复技术_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

备份恢复技术徐荣星备份方法逻辑备份exp/expdp物理备份在线备份或者离线备份实时备份数据库闪回物理备份和逻辑备份物理备份在存储级别实现,采用RMAN、COPY等操作实现。而逻辑备份在SQL级别实现,比如exp、expdp等工具。物理备份是应付介质故障的最好方法,而逻辑备份是对付误操作的最佳工具。热备份和冷备份热备份不中断业务运行,而冷备份必须在数据库关闭状态下运行。热备只有归档模式才可以执行。热备份是不一致的备份,单独一份热备份无法实现数据库的正常的Open,需要备份开始到结束的归档日志的支持。冷备份是一致性备份,应该包含onlineRedolog文件。RMAN备份RMAN是Oracle提供的备份管理工具,整合在Oracle内核中,为一免费产品。备份集可以存储到磁带。Catalog为Rman的辅助产品,更好的完成Rman实现的功能。在Oracle8i中,Catalog是一个建议配件,但Oracle9i开始,Oracle开始弱化catalog的功能,逐步整合到控制文件中。RMAN备份工具介绍RMAN命令浏览Stored

scripts生产库REPORTLISTCatalog库OEMRestore/Recover/FlashbackCatalogmaintenance

CROSSCHECKDELETE…EXPIRECHANGESPFILEBackup控制文件归档日志RMANRMAN命令RMAN命令类型单独命令,在RMAN提示符下直接执行JOB命令,命令必须包含在run{}里执行JOB命令:案例RUN

命令:RMAN>

RUN{

2>

BACKUPASBACKUPSET

3>

FORMAT'/u01/db01/backup/%d_%s_%p'

4>DURATION10:00MINIMIZELOAD;5>

(DATABASE)6>

SQL

'altersystemarchivelogcurrent';

7>

}BACKUP

命令RMAN>BACKUPASBACKUPSET

2>FORMAT'/BACKUP/df_%d_%s_%p.bus'

3>TABLESPACEhr_data;BackupsetDatafile1Datafile2Datafile3Datafile1Datafile2Datafile3Tablespace

HR_DATABackup命令(续)数据库必须处于mountedoropen.不能备份Onlineredolog在非归档模式下能备份”干净”库备份集分片分配多个通道,可以指定具体数据文件.Datafile4Datafile1Datafile5ChannelMMLBackup

piece1Backup

piece2Datafile2Datafile3Datafile9ChannelMMLDatafile6Datafile7Datafile8Backup

Piece3ChannelMMLBackups压缩RMAN>BACKUPAS 2>COMPRESSEDBACKUPSET3>DATABASE;RMAN>CONFIGUREDEVICETYPE

2>DISKPARALLELISM2

3>BACKUPTYPETO 4>COMPRESSEDBACKUPSET;CompressedbackupfilesDatabasefilesBACKUP

命令(续)检查物理块腐败设置允许块腐败的上限校验输入文件块腐败备份归档日志能指定范围备份归档日志备份集仅仅包含归档日志文件RMAN>BACKUP2>FORMAT'/disk1/backup/ar_%t_%s_%p'3>ARCHIVELOGFROMSEQUENCE=2344>DELETEINPUT;整库备份RMAN>

BACKUPDATABASE;Archivedlog

filecopiesSPFILEControl

fileDatafilecopies全备份和增量备份只有存在全备份才有可能在介质损坏情况的下数据库恢复。增量备份依赖于全备份存在,备份从上次备份以来的变化数据。增量备份可以分为:

increment和CumulativeBackupincrementlevel0database;Backupincrementlevel1database;增量备份0级备份

相当于全库.累计备份

备份自0级备份后

所有变化的块.增量备份

自上次增量备份后

所有的块变化Fullbackup增量备份累计增量备份增量备份:示例增量备份仅仅备份自上次增量备份后变化的块累计备份,备份自上次0级备份后所有变化块LvlDaySunMonTueWedThuFriSatSunLevel0Level0111c11001c块变化跟踪通过跟踪文件记录变化块大大加快增量备份速度,避免全扫数据文件ListofchangedblocksRedo

generationRedolog101100101011000011101001011010101110011Changetracking

fileSGACTWR启动变化块跟踪SQL>ALTERDATABASEENABLE2>BLOCKCHANGETRACKING

3>USINGFILE'/mydir/rman_change_track.f'

4>REUSE;LIST

命令List显示备份集体及保护的数据文件List显示备份归档日志RMAN>LISTBACKUPOFDATAFILE2>"/db01/ORADATA/u03/users01.dbf";RMAN>LISTBACKUPOFDATABASE;RMAN>LISTBACKUPOFARCHIVELOG

2>;

物理备份数据库恢复Restore&Recover备份是为了恢复。恢复分为两步:

restore

从备份中还原到目标系统中去。

recover

应用归档日志实现数据恢复。恢复步骤Restored数据文件数据文件包含未提交数据恢复好的数据库应用日志回滚未提交数据54321Archived

logArchived

logOnline

Redolog完全恢复完全恢复包含mediarecover和Crashrecover,恢复到数据库Crash时的那一刻。Mediarecover应用归档日志,Crashrecover应用OnlineRedoLog。完全恢复可以完全恢复任何数据,这是最理想的状况。但有时候并不可行,比如误操作或者日志文件丢失或者损坏等等情况。完全恢复Restoredatabase;recoverdatabase;alterdatabaseopen;不完全恢复不完全恢复为恢复到之前的某一个时间点,仅仅应用归档日志,不会进行Crashrecover。不完全恢复要丢失一部分数据,除非是特定的操作比如恢复表格。不完全恢复场合由于缺少归档日志完全恢复失败未归档的在线日志丢失或Current在线日志丢失误操作,要求数据库恢复到之前某个时间点不完全恢复Setuntiltime<time>;restoredatabase;recoverdatabase;alterdatabaseopenresetlogs;restoredatabaseuntilscnrecoverdatabaseuntilscnalterdatabaseopenresetlogs;restoredatabaseuntilsequencerecoverdatabaseuntilsequencealterdatabaseopenresetlogs;

Shutdownandbackup1Mountthedatabase2UNTIL

TIME

恢复案例Restorealldatafiles3OpenwithResetlogs5Backupthedatabase6Database146Datafile1146Datafile2146Datafile3146Control

files146Redolog

file1145Redolog

file2OE.ORDERS RecoveredDatabase1Datafile11Datafile21Datafile31Control

files1Redolog

file10Redolog

file2OE.ORDERS RestoredDatabase144Datafile1144Datafile2144Datafile3146Control

files146Redolog

file1145Redolog

file2144Archived

logfile4OE.ORDERS不完全恢复步骤1. Mountthedatabase.2. Allocatemultiplechannelsforparallelization.3. Restorealldatafiles.4. RecoverthedatabasebyusingUNTIL

TIME,UNTIL

SEQUENCE,orUNTIL

SCN.5. OpenthedatabasebyusingRESETLOGS.6. Performawholedatabasebackup.基于时间的不完全恢复RMAN>RUN{ 2>setuntiltime="to_date('2015-03-0216:27:00','yyyy-mm-ddhh24:mi:ss')";3>RESTOREDATABASE;4>RECOVERDATABASE;5>ALTERDATABASEOPENRESETLOGS;}基于序号的不完全恢复RMAN>RUN{2>SETUNTILSEQUENCE120THREAD1;3>ALTERDATABASEMOUNT;4>RESTOREDATABASE;5>RECOVERDATABASE;#recoversthroughlog1196>ALTERDATABASEOPENRESESTLOGS;7>}物理备份在各种失败中应用介质失败块腐败数据灾难误操作介质失败控制文件数据文件索引文件临时文件回滚段OnlineRedologArchivelog控制文件一个失败简单复制拷贝或者注释掉。全部失败最好以SQL方式重新创建,但是需要重新同步控制文件。没有创建脚本,从备份中恢复控制文件。

restorecontrolefilefromautobackup;OnlineRedoLogfile已归档的OnlineRedologfile

简单drop或clear未归档的非CurrentOnlineRedologfile

简单drop或clear,要求立即全备CurrentRedoLogfile

要执行非完全恢复,意味着丢数据

丢失数据量,取决于redolog大小.ArchiveLog丢失一个或者多个归档日志。已经备份过,可以忽略

没有备份过,之前全库备份将失效(或者全库备份不能恢复到当前时间)如果数据库正常,立即发起一次全备如果数据库异常,数据库只能恢复到归档日志丢失前时间,意味着数据丢失。案例、恢复丢失未归档的联机重做日志由于电源故障,使部分硬盘损坏。当硬盘修复以后,发现onlineredolog文件系统丢失,还丢失了其他一些数据文件。拥有一份全备份和相应的归档日志,归档日志可能没有完全被备份。Selectsequencefromv$archive_log;Restoredatabase;Recoverdatabaseuntilsequence<86>thread1;ShutdownimmediateCopycontrolfileStartupmount;Alterdatabaseopenresetlogs;系统表空间Restoretablespacesystem;Recovertablespacesystem;Alterdatabaseopen;案例、恢复系统表空间Rmantarget/rman>startupforcemount;restoretablespacesystem;recovertablespacesystem;sql‘alterdatabaseopen’;临时表空间SimplyDropit数据文件Alterdatabasedatafileoffline;RestoredatafileRecoverdatafileAlterdatabasedatafileonline;案例、文件系统丢失导致恢复数据表空间恢复(archivelog)Rmantarget/Sql‘altertablespacetbs1offline’;sql‘altertablespacetbs2offline’;restoretablespacetbs1;restoretablespacetbs2;recovertablespacetbs1;recovertablespacetbs2;sql‘altertablespacetbs1online’;sql‘altertablespacetbs2online’;

索引文件RestoreandRecoverORrecreatetablespaceandrecreateindex数据块腐败数据块腐败类型由于存储等原因引起的块损坏由于OracleBug引起的块腐败块一级恢复从Oracle9i开始,Oracle提供了块一级的恢复,极大的提高了系统快速恢复能力。Blockrecoverdatafile19block44;Blockrecoverdatabase19block44,66,127坏块ORA-1578当一个块被读入到数据库高速缓冲区的时候,通过检查块的封装信息(blockwrapperinformation)来确定该块是否有效。这个检查包括校验操作系统传递给oracle的块是否就是所请求的块,存储在块头的信息是否和存储在块尾中的信息是一致的。坏块ORA-1578从磁盘读取数据块的时候,假如发现该信息的不一致性,那么这个块就被认为是个坏块,升起一个:ORA-1578错误:Oracledatablockcorrupted(file#%s,block#%s)。file#是oracle数据文件的文件号block#是在这个数据文件中的块号坏块对象根据file#,block#查找坏快所属对象。

SELECTTABLESPACE_NAME,SEGMENT_NAME,SEGMENT_TYPE,OWNERFROMDBA_EXTENTSWHEREFILE_ID=<f>AND<b>BETWEENBLOCK_IDANDBLOCK_ID+BLOCKS-1; <f>是文件号

<b>是块号。坏块校验数据库处于OPEN状态下可以使用命令

Analyzetable/index..validatestructure

用来分析扫描每一个块,遇到任何潜在的坏块则作出一个错误报告。CASCADE选项,检查所有相关的索引,在数据块和索引行之间进行一对一的校验。DBV校验DBVerify是一个工具,用来扫描数据文件的每一个块,并产生一个关于潜在坏块的报告。DBVerify执行基本的块检查步骤,但是它不提供数据和索引行的1对1校验的能力。DBVerify可以在数据库CLOSE状态下运行。Export会读取分配给每个表的块,报告任何遇到的坏块。使用命令:dbvfile=/dev/roraxxblocksize=8192DBV校验D:\oracle\oradata\ora8>dbvfile=tools01.dbfblocksize=8192DBVERIFY:Release8.1.7.0.0-ProductiononTueDec1409:24:072004(c)Copyright2000OracleCorporation.Allrightsreserved.DBVERIFY-Verificationstarting:FILE=tools01.dbfPage5526ismarkedcorrupt***Corruptblockrelativedba:0x01401596(file5,block5526)Badheaderfoundduringdbv:Datainbadblock-type:6format:2rdba:0x0140159alastchangescn:0x0000.000501bcseq:0x1flg:0x02consistencyvalueintail:0x01bc0601checkvalueinblockheader:0x0,blockchecksumdisabledspare1:0x0,spare2:0x0,spare3:0x0***DBVERIFY-VerificationcompleteTotalPagesExamined:7656TotalPagesProcessed(Data):2129TotalPagesFailing(Data):0TotalPagesProcessed(Index):98TotalPagesFailing(Index):0TotalPagesProcessed(Other):99TotalPagesEmpty:5329TotalPagesMarkedCorrupt:1TotalPagesInflux:0坏块在索引上对象是个索引且不是数据字典的一部分,基表中不包含任何坏块,那么您能简单地删除和重建索引就可以了查出索引建立在那张基表上:

SELECTtable_owner,table_name FROMdba_indexes WHEREowner='<OWNER>‘ANDindex_name='<NAME>'坏块对象如果坏块在数据字典上,系统必须做恢复。坏快在用户表上,不影响整个系统,需要对表进行恢复如果这个对象是一个回滚段,备份中恢复数据库假如段的类型是TEMPORARY,那么块损坏不影响任何永久对象,假如发生问题的表空间是个临时表空间,重建临时表空间。然后,删除发生问题的表空间。假如发生问题的表空间不是一个临时表空间,那么这个块不应该再次被读取,应该在下次读取这个块的时候,重新格式化该块独立对象恢复表格失败或者其他对象失败,需要进行表空间级的不完全恢复,物理备份将会非常麻烦,并且需要额外的存储或者主机来恢复。物理备份并没有任何对象的概念。所以为了应付对象失败,最好建立其他的备份恢复方法。Exp/imp是最为常用的方法,遗憾的是可能无法获得全部数据。其他方法:Logminer,Flashback以及其他从表中抢救数据从包含有坏块的表中提取数据有很多的方法。下面详细介绍了最适合的方法。这些方法的目的是从能访问的表块中提取尽可能的数据从表中抢救数据10231事件,跳过坏块读取数据altersessionsetevents'10231tracenamecontextforever,level10'

Createtable

salvage_tableasselect*frombad_table;使用ROWID案例在Oracle8/8i中使用ROWID范围扫描的一个例子:SQL>select*fromscott.partitionexample; ORA-01578:ORACLEdatablockcorrupted(file#7,block#12698) ORA-01110:datafile7:'/oracle1/oradata/V816/oradata/V816/users01.dbf'<RFN>=7,<BL>=12698,<AFN>=7

使用ROWID案例第一步:找出坏块所在对象SQL>SELECTtablespace_name,segment_type,owner,segment_nameFROMdba_extentsWHEREfile_id=7 AND12698betweenblock_idANDblock_id+blocks-1;TABLESPACE_NAMESEGMENT_TYPEOWNERSEGMENT_NAME

USERSTABLEPARTITIONSCOTTPARTITIONEXAMPLE

使用ROWID案例找出object_id

SQL>SELECTdata_object_id FROMdba_objects WHEREobject_name='PARTITIONEXAMPLE'andowner='SCOTT' ANDsubobject_name='PARTEX2';

DATA_OBJECT_ID

88145使用ROWID案例

找出相映的ROWID>>坏块第一行的ROWID>SQL>selectdbms_rowid.rowid_create(1,88145,7,12698,0)fromdual; DBMS_ROWID.ROWID_C

AAAVhRAAHAAADGaAAA

>>坏块号+1第一行的ROWID>SQL>selectdbms_rowid.rowid_create(1,88145,7,12699,0)fromdual; DBMS_ROWID.ROWID_C

AAAVhRAAHAAADGbAAA使用ROWID案例数据抢救CREATETABLEsalvage_tableAS SELECT/*+ROWID(A)*/*FROMscott.partitionexampleA WHERErowid<‘AAAVhRAAHAAADGaAAA’;

INSERTINTOsalvage_table SELECT/*+ROWID(A)*/*FROMscott.partitionexampleA WHERErowid>=‘AAAVhRAAHAAADGbAAA’;

使用ROWID案例坏块里的数据,根据索引抢救部分坏块数据。

SQL>SELECT/*+INDEX_FFS(APARTEXAM)*/column1 FROMscott.partitionexampleA WHERErowid>='AAAVhRAAHAAADGaAAA' ANDrowid<'AAAVhRAAHAAADGbAAA';

表格IncompeleterecoverEvent10231andRowidfetchButwillloseoneblockrowsBlockrecover误操作误操作的考虑有近40%的灾难是由于误操作造成的,并且有逐年上升的趋势。容灾系统对于误操作完全无能为力。传统的备份和恢复对误操作的策略也比较有限。由于误操作的频繁和重大危害,必须把误操作的恢复作为备份系统的一个重点建设目标。索引被DROPRecreateit表格被truncate10g全库闪回Export/import不完全恢复DML操作失误闪回查询Logminer挖掘逻辑恢复imp/impdp不完全恢复表空间误删除不完全恢复Export/import其他误操作文件被删除,文件误修改,一致性校验失效等等误操作,依据操作的不同性质采用不同的方法进行恢复。Oracle10g闪回技术Flashback功能FlashbackQueriesFlashbackTableFlashbackDropFlashbackDatabase闪回查询闪回查询用途:误操作修补数据查看表格数据变化CREATETABLEchanges_todayASSELECT*FROMemployeesMINUSSELECT*FROM

employeesASOFTIMESTAMPTRUNC(SYSDATE);获取新增加数据SQLSELECT*FROMdepartmentASOFTIMESTAMPTO_TIMESTAMP('03-MAY-200509:30:00');

闪回查询SQL使用闪回查询设置配置参数: UNDO_MANAGEMENT=AUTO UNDO_RETENTION=<appropriatevalue>

定义了可以闪回时间,缺省15分钟。合理规划回滚段表空间大小闪回查询设置确保未过期数据不被覆盖,需要使用GUARANTEE之句强制限制查询dba_tablespaces确认

ALTERTABLESPACE<tablespace_name>RETENTIONGUARANTEE;;闪回查询限制Sys用户不支持SESSION级别闪回查询支持最低粒度为3秒,系统每3秒记录一次SCN变化不能闪回表格最后一次DDL之前FlashbackFeaturesFlashbackQueriesFlashbackTableFlashbackDropFlashbackDatabase表格闪回恢复表格到误操作之前,在线快速完成数据修复避免了复杂的不完全恢复表格闪回恢复表格到指定的时间或者SCN之前自动恢复所有关联对象:Automaticallyrestoresalldependentobjects

索引自动闪回统计信息不会闪回表格闪回使用关键怎么查找误操作发生的时间可以使用闪回行记录变化确定SCN可以使用LOGMNR日志挖掘确定SCN闪回查询SQL

TriggersarenotenabledbydefaultduringaflashbackoperationFLASHBACKTABLEt1 TOTIMESTAMPTO_TIMESTAMP('2005-05-0112:05:00') ENABLETRIGGERS;FLASHBACKTABLEt1TOSCN12345;表格闪回步骤闪回步骤:1EnablerowmovementFLASHBACKTABLEef

TOTIMESTAMPTO_TIMESTAMP('<time_stamp>');2、执行闪回ALTERTABLEefENABLEROWMOVEMENT;表格闪回限制不能闪回最后一次DDL之前SYS用户表格不能闪回表格上事物未结束前,不能闪回表格闪回利用UNDO表格控件数据,确保UNDO表格控件保留时间足够长FlashbackFeaturesFlashbackQueriesFlashbackTableFlashbackDropFlashbackDatabase闪回DROP在10G以后,DROP对象放在垃圾箱里这使DROP表格闪回恢复,变得异常简单在垃圾箱里表格没重新命名,并且控件不被释放闪回表格命令 FLASHBACKTABLE...TOBEFOREDROP一些限制:SYS,SYSTEM用户表格不适用数据字典表空间不适用SYSTEM表空间不适用闪回DROP被DROP表格可以被闪回TRUNCATE表格不能被闪回DROP闪回不适用UNDO表空间牺牲用户表空间的空间作为代价清理垃圾箱Purgedobjectscannotbeflashedback(recovered)ObjectsarepurgedusingthePURGEstatementorautomaticallybyOraclewhenthereisspacepressureintheirtablespaceOraclewillpurgedroppedtablesinpreferencetoextendingautoextensiblefilesDependentobjects(indexes)arepurgedbeforetablesPurgingisperformedonafirst-in,first-outbasisDroppingatablespace,orauserdoesnotplaceanyobjectsinthebinPurgesthebinofanyobjectsbelongingtothattablespaceoruserRecyclebinfeaturecanbeturnedoffALTERSYSTEMSET“_recyclebin”=FALSESCOPE=BOTH;dba_recyclebin

视图记录了所有被DROP对象(未清理前)SQL>descdba_recyclebinNameNull?Type

OWNERNOTNULLVARCHAR2(30)OBJECT_NAMENOTNULLVARCHAR2(30)ORIGINAL_NAMEVARCHAR2(32)OPERATIONVARCHAR2(9)TYPEVARCHAR2(25)TS_NAMEVARCHAR2(30)CREATETIMEVARCHAR2(19)DROPTIMEVARCHAR2(19)DROPSCNNUMBERPARTITION_NAMEVARCHAR2(32)

CAN_UNDROPVARCHAR2(3)

CAN_PURGEVARCHAR2(3)RELATEDNOTNULLNUMBERBASE_OBJECTNOTNULLNUMBERPURGE_OBJECTNOTNULLNUMBERSPACENUMBERNO/YESNO/YES查询垃圾箱查询dba_recyclebin,user_recyclebin

SHOWRECYCLEBIN检查放在垃圾箱里表格的数据内容SELECT*FROM“BIN$xyWe0+q+SniItJ0pn/u54A==$0”[ASOF...];清理垃圾箱对象清理垃圾箱语句PURGEDBA_RECYCLEBIN;

UserswithSYSDBAprivilege,canpurgetheentirerecyclebinPURGERECYCLEBIN;PURGETABLEemp;PURGETABLE“BIN$xyWe0+q+SniItJ0pn/u54A==$0”;PURGETABLESPACEuser1;PURGEINDEX"BIN$FTX34MN88J7==$0”;PURGETABLESPACEuser1USERfred;FlashbackFeaturesFlashbackQueriesFlashbackTableFlashbackDropFlashbackDatabaseFlashbackDatabaseFLASHBACKDATABASETOBEFORESCN...FLASHBACKDATABASETOSCN...FLASHBACKDATABASETOBEFORETIMESTAMP...FLASHBACKDATABASETOTIMESTAMP...整库闪回到之前某个时间点

相当于做了一个RMAN不完全恢复数据库必须处于归档模式,及数据库必须在MOUNT状态NeedsSYSDBAprivilegeFlashbackatTablespaceLevel关闭部分不需要的表空间闪回减少闪回日志产生查看v$tablespace.flashback_on字段ALTERTABLESPACEexptFLASHBACKOFF;ALTERTABLESPACEusersFLASHBACKON*ERRORatline1:ORA-01126:databasemustbemountedinthisinstanceandnotopeninanyinstanceFlashbackLoggingRecommendedtostorebothflashbackandarchivedlogsinacommonrecoveryareaNOLOGGINGoperationsarerecordedintheflashbacklogsDatabaseFlashbacklogsArchivedlogsLGWRRVWRRVWR=RecoveryWriter设置闪回数据库Configuretherecoveryareabysettingthefollowingdynamicparameters DB_RECOVERY_FILE_DESTOraclewritesflashbackslogstothespecifiedrecoveryarea(destination)DefaultvalueisORACLE_BASE\flash_recovery_area DB_RECOVERY_FILE_DEST_SIZEDefaultsizeis2GBBothoftheaboveparametersmustbeset DB_FLASHBACK_RETENTION_TARGET(default1440minutes)Oraclewilltrytokeepenoughflashbackinformationtorollbackthrough1440minutesCOMPATIBILITYneedstobe10.0+(databaseversioncannotgodownoncesetto10.0)启动闪回数据库ConnectusingsysASSYSDBA

FindthecurrentSCNofthedatabaseincaseyouneedtoperformasubsequent‘flashback’tothecurrentstate

SELECTcurrent_scnFROMv$database;SHUTDOWNSTARTUPMOUNTEXCLUSIVEALTERDATABASEFLASHBACKON;ALTERDATABASEOPEN;FlashbackLogsFlashbackdatarequiresalotofspaceOnWindows,logsare~4MBona‘quiet’systemwithnameslikeO1_MF_0B87CPH6_.FLBSizeandfrequencyofgenerationdependsonlocalityofdatabasechangesinagivenintervalAnychangewithinablockmeansthewholeblockisloggedOnWindows,logsareactuallystoredind:\oracle\flash_recovery_area\<oracle_sid>\flashbackFlashbackMechanismFlashbackinformation‘jumps’thedatabasebackintimeArchivelogdataisthenappliedtoperformapointintimerecoveryExample:FLASHBACKDATABASETOSCN53297DatabaseSCN

69633Flashbacklog23Flashbacklog22Flashbacklog21Flashbacklog2067234629835561750614Archivestream5329750617RecoveryAreaStorage恢复区域用于存储闪回日志,备份集在保留时间内需要配置足够的存储空间如果空间使用率达到85%,alert日志会发出警告信息如果空间使用率达到100%,Oracle自动删除选择最老闪回日志闪回日志不能通过手工删除,如果空间满需要调整保留空间大小或者保留时间闪回视图SELECTname,space_limit,space_used,reclaimable_spacereclaim,number_of_filesfilesFROMv$recovery_file_dest;NAMESPACE_LIMITSPACE_USEDRECLAIMFILES

D:\oracle\flash_recovery_area2147483648364353536086v$recovery_file_dest显示闪回空间使用情况闪回视图SELECTTO_CHAR(begin_time,'ddthhh24:mi')start_time,TO_CHAR(end_time,'ddthhh24:mi')end_time,db_data,redo_data,flashback_datafl_data,estimated_flashback_sizeest_fl_sizeFROMv$flashback_database_stat;START_TIMEEND_TIMEDB_DATAREDO_DATAFL_DATAEST_FL_SIZE

15th15:5915th16:4820234240967833612361728015th14:5915th15:591965260877209601027276839849984015th13:5915th14:592164326482647041254195244740608015th12:5915th13:592089779275719681243545651683328015th11:5215th12:59467025923238400033333248712679424v$flashback_database_stat显示每小时日志量

estimated_flashback_sizeisthevaluefoundin

v$flashback_database_logattheendofthetimeinterval闪回视图SELECTname,TO_CHAR(first_time,'ddthhh24:mi:ss')first_time,bytesFROMv$flashback_database_logfile;NAMEFIRST_TIMEBYTES

D:\ORACLE\FLASH_RECOVERY_AREA\ORAC\15th14:42:303981312FLASHBACK\O1_MF_0B7W0MGC_.FLBD:\ORACLE\FLASH_RECOVERY_AREA\ORAC\15th15:01:063981312FLASHBACK\O1_MF_0B7W0WX4_.FLBD:\ORACLE\FLASH_RECOVERY_AREA\ORAC\15th15:27:313981312FLASHBACK\O1_MF_0B7XLT9Z_.FLBv$flashback_database_logfile查看闪回日志数据库闪回小结介质失败,不能通过闪回恢复数据库结构发生变化,如数据文件strink,DROP表空间不能闪回进行恢复数据库RESETLOGS

OPEN后,不能使用闪回进行恢复闪回和只读打开有时候需要反复闪回数据库以获取准确数据可以使用只读模式来完成此操作如:1、shutdown2、startupmount3、flashbackdatabase

toscn;4、alterdatabaseopenreadonly;进行数据校验如果需要重复以上操作逻辑备份备份方法导入导出exp/imp备份条件:数据库打开,导入与导出的数据库表空间尽可能一致,只能同版本导入或低版本导入到高版本数据库数据泵expdp/impdp备份条件:数据库打开,导入与导出的数据库表空间尽可能一致,只能同版本导入或低版本导入到高版本数据库,效率高但只能在10g以上的版本上使用1.目录/ORACLE_HOME/bin下,一个二进制系统文件.2.EXP有三种模式:用户模式:导出用户所有对象以及对象中的数据;表模式:导出用户所有表或者指定的表;表空间:导出表空间所有内容,可能包含多个用户的对象;整个数据库:导出数据库中所有对象。3.导出工具exp非交互式命令导出用户的例子:

$expscott/tigertables=(emp,dept)owner=scottfile=/directory/scott.dmp

导出工具export3.导出工具exp非交互式命令行导出表格的例子

$expscott/tigertables=(emp,dept)file=/directory/scott.dmp

4.导出工具exp非交互式命令行导出全库的例子

$expsystem/oraclefile=/directory/scott.dmpfull=y

导出工具export目录/ORACLE_HOME/bin下,一个二进制系统文件.imp导入工具将EXP形成的二进制系统文件导入到数据库中.

它有三种模式:用户模式:导出用户所有对象以及对象中的数据;表模式:导出用户所有表或者指定的表;表空间:导出表空间的所有内容,可能包含多个用户的对象;整个数据库:导出数据库中所有对象。

只有拥有IMP_FULL_DATABASE和DBA权限的用户才能做整个数据库导入。imp步骤:

(1)createtable

(2)insertdata

(3)createindex

(4)createtriggers,constraints导入工具import2.导入工具imp非交互式命令行方式的例子导入表格

$impsystem/managerfile=expdat.dmp

fromuser=jonestables=(accts)$impsystem/managerfile=expdat.dmp

fromuser=scotttables=(emp,dept)导入用户

$impsystem/manager

file=expdat.dmpfromuser=scotttouser=joe全库导入

$impscott/tigerfile

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论