oracle 备份恢复语句整理(最全)

合集下载

Oracle数据库备份与还原命令

Oracle数据库备份与还原命令

Oracle数据库备份与还原命令Oracle数据库备份与还原命令数据导出:1 将数据库TEST完全导出,用户名system 密码manager导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3 将数据库中的表table1 、table2 导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)4将数据库中的表table1中的字段filed1 以"00"打头的数据导出exp system/manager@TEST file=d:\daochu.dmp tables=(table1)query=\" where filed1 like '00%'\"上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

不过在上面命令后面加上compress=y就可以了数据的导入1将D:\daochu.dmp中的数据导入TEST数据库中。

imp system/manager@TEST file=d:\daochu.dmp上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上ignore=y 就可以了2 将d:\daochu.dmp 中的表tablel 导入imp system/manager@TEST file=d:\daochu.dmp tables=(table1)基本上上面的导入导出够用了。

不少情况我是将表彻底删除,然后导入。

一、/ A注息:你要有足够的权限,权限不够它会提示你。

oracle备份与恢复

oracle备份与恢复
shutdown immediate startup mount alter database archivelog; alter database open; alter system archive log start
设置归档运行
删除恢复
如果误删除了数据文件,可以通过归档日志恢复 如果误删除了表,可以从备份中回复或者通过回闪回复 如果误删除了数据
exp system/aptech parfile='C:\parameters.txt' 使用参数文件导出数据
导入命令 2-1
导入实用程序有如下常用命令参数:
参数 USERID BUFFER COMMIT
FILE FROMUSER TOUSER
FULL TABLES ROWS PARFILE
备份与归档
Oracle 数据库可以运行在两种归档方式:
非归档日志方式 归档日志方式
非归档日志方式可以避免实例故障,但无法避免介质故障。在此方式 下,数据库只能实施冷备份
归档日志方式产生归档日志,用户可以使用归档日志完全恢复数据库
archive log list:查看归档方式 可以通过em设置是否归档运行 手工修改为归档模式
Oracle备份与恢复
java培训
oracle的备份
备份与恢复是数据库管理工作中非常重要的任务之一 oracle提供多种备份方式
物理备份:备份常用的数据文件,配置等 逻辑备份:对逻辑组件(表等)的备份
故障类型
导致数据库操作中止的故障包括四种类型:
故障类型
语句故障
用户进程故障
实例故障
介质故障
在当执用行户当S程OQ序rLa出c语le错句的而过数无程据法中库访发实问生例数的由据逻于库辑硬时故件发障或生可软用导件户致问进语题程句而故故无障障法。。导如致果 用户用进户程编故写继障的续的S运原Q行L因时语是,句异就无常会效断发,开生就连实会接例发或故生异障逻常辑终故止障进程

oracle备份与恢复剖析

oracle备份与恢复剖析

RMAN 备份与恢复实例收藏1. 检查数据库模式:sqlplus /nologconn /as sysdbaarchive log list (查看数据库是否处于归档模式中)若为非归档,则修改数据库归档模式。

startup mountalter database archivelogalter database open2.连接到target数据库命令:connect target / (connect target system/oracle@ora10g,如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库)可以连接到target database.(rman 一边连接到target数据库,另外一边连接到control file(nocatalog mode),control file 中存储rman 的备份信息)3.用list backupset 命令查看有没有备份的东西4. 常用备份命令:备份全库:RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)备份表空间:RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)_备份归档日志:RMAN> backup archivelog all delete input;======================对整个数据库进行备份==================1.对整个数据库进行全备份(full backup)。

只要输入命令: backup database;2.list backupset 查看备份的具体信息List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1 Full 6.80M DISK 00:00:02 06-DEC-08BP Key: 1 Status: A V AILABLE Compressed: NO Tag: TAG20081206T201041Piece Name: /home/oracle/flash_recovery_area/ORA10G/backupset/2008_12_06/o1_mf_ncsnf_TAG20081206 T201041_4mntz78s_.bkpControl File Included: Ckp SCN: 782019 Ckp time: 06-DEC-08SPFILE Included: Modification time: 06-DEC-08BS(backupset), piece是一个文件,一个BS包含多个piece.3.rman中缺省的参数,可以通过show all ;来进行查看(RMAN configuration parameters),我们在使用backup database命令中,可以把这些default value 用固定的值来进行替代.4.我们可以把备份的文件才备份的目录中拷贝到磁带上,然后删除备份目录下面的备份文件,如果下次需要恢复的话,只要把文件重新拷回到用来的备份目录就可以了5.查看control file 文件中的备份信息(因为我们做的备份是在nocatalog模式下),control file 在/u01/oracle/oradata/ora10g目录下,由于control file 是个二进制文件,要查看control file 文件中的内容,用strings control03.ctl,发现control03.ctl中有rman备份的信息了====================0级增量备份===============概念:全备份和0级增量备份。

oracle数据库备份与恢复

oracle数据库备份与恢复
‘C:\db02\new.dbf’ ; 6. 使数据文件联机: ALTER DATABASE DATAFILE
‘C:\db02\new.dbf’ ONLINE;
恢复重做日志
❖ 当前日志组损坏 ❖ 非活动日志组损坏
当前日志组损坏
❖ OPEN状态:清除当前日志组 ALTER DATABASE CLEAR
NOARCHIVELOG
LGWR
LGWR
日志组1
日志组2
❖ 新内容覆盖旧内容 ❖ 只能在关闭数据库时进行备份 ❖ 只能恢复到完全备份点 ❖ 必须备份完整数据库
ARCHIVELOG
LGWR
日志组1
ARCH LGWR
日志组2
ARCH LGWR
日志组1
ARCH LGWR
日志组2
❖ 只有归档后新内容才能覆盖旧内容 ❖ 允许在数据库打开时备份 ❖ 可以完全恢复数据库
UNARCHIVED LOGFILE GROUP 1; ❖ MOUNT状态:不完全恢复
非活动日志组损坏
❖ 增加新日志组 ALTER DATABASE ADD LOGFILE
‘g:\test\log3a.log’ SIZE 1M; ❖ 删除损坏日志组 ALTER DATABASE DROP
LOGFILE GROUP 1;
第一章 备份与恢复简介
❖ ORACLE恢复结构和后台管理 ❖ 备份与恢复配置 ❖ 错误分类
ORACLE恢复结构和后台进程
用户进程
服务器 进程
instance
数据高 重做日志 速缓存 缓冲区
大池 共享池
SMON DBWn CKPT PMON LGWR ARCH
参数文件 口令文件
控制文件
数据文件

orcle数据库备份语句

orcle数据库备份语句

orcle数据库备份语句Oracle数据库备份是一项非常重要的任务,可以保障数据的安全性和完整性。

在进行数据库备份时,我们可以使用不同的语句和方法来完成备份操作。

以下是一些常用的Oracle数据库备份语句:1. 使用RMAN备份整个数据库:RMAN是Oracle推荐的备份工具,可以使用以下语句备份整个数据库:```RMAN> BACKUP DATABASE;```2. 使用RMAN备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```RMAN> BACKUP TABLESPACE tablespace_name;```3. 使用RMAN备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```RMAN> BACKUP DATAFILE 'datafile_path';4. 使用RMAN备份指定控制文件:控制文件是数据库的关键组成部分,可以使用以下语句备份控制文件:```RMAN> BACKUP CURRENT CONTROLFILE;```5. 使用RMAN备份归档日志:归档日志包含了数据库的所有更改记录,可以使用以下语句备份归档日志:```RMAN> BACKUP ARCHIVELOG ALL;```6. 使用EXPDP备份数据库:EXPDP是Oracle提供的数据泵工具,可以使用以下语句备份整个数据库:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp full=yes;7. 使用EXPDP备份指定表:如果只需要备份数据库中的特定表,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tables=table_name;```8. 使用EXPDP备份指定表空间:如果只需要备份数据库中的特定表空间,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp tablespaces=tablespace_name;```9. 使用EXPDP备份指定用户:如果只需要备份数据库中的特定用户,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp schemas=user_name;```10. 使用EXPDP备份指定数据文件:如果只需要备份数据库中的特定数据文件,可以使用以下语句:```expdp username/password directory=directory_name dumpfile=dumpfile_name.dmp filesperset=1 include=datafile:'datafile_path';```总结:以上是一些常用的Oracle数据库备份语句,通过使用不同的备份语句可以实现对整个数据库、指定表空间、指定数据文件、归档日志等的备份。

orcal数据备份语句

orcal数据备份语句

orcal数据备份语句Oracle数据库备份语句是数据库管理员经常使用的重要工具,它可以保护数据库的数据安全,防止数据丢失或损坏。

以下是一些常用的Oracle数据库备份语句:1. 全备份语句:RMAN> BACKUP DATABASE;这个语句将对整个数据库进行备份,包括数据文件、控制文件和日志文件。

2. 表空间备份语句:RMAN> BACKUP TABLESPACE example;这个语句将备份指定的表空间,可以用于恢复该表空间的数据。

3. 数据文件备份语句:RMAN> BACKUP DATAFILE 1 FORMAT '/backup/datafile1.bak';这个语句将备份指定的数据文件,可以用于恢复该数据文件的数据。

4. 控制文件备份语句:RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/backup/controlfile.bak';这个语句将备份当前的控制文件,以便在需要时进行恢复。

5. 归档日志备份语句:RMAN> BACKUP ARCHIVELOG ALL FORMAT '/backup/archivelog.bak';这个语句将备份所有归档日志文件,用于保留数据库变更的历史记录。

6. 增量备份语句:RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;这个语句将备份已更改的数据块,可以用于快速备份大型数据库。

7. 压缩备份语句:RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;这个语句将备份数据库并使用压缩备份集来减小备份文件的大小。

8. 备份到远程服务器语句:RMAN> BACKUP DATABASE FORMAT '/backup/%d_%T_%U' TAG 'PROD_BACKUP'2> REMOTE 'ssh user@remotehost "/backup"' SECTION SIZE 10M;这个语句将备份数据库并将备份文件传输到远程服务器上的指定路径。

oracle数据库备份恢复


2.数据库备份应用
(1) 从备份中把丢失的文件恢复到其原来位置 cp/db10/oracle/CC1/data01.dbf/db03
/oracle/CC1/data01.dbf
2.数据库备份应用
(2) 安装数据库 ORACLE_SID=CC1;export
ORACLE_SID ORAENV_ASK=NO;export
导入文件:EXPDAT.DMP>XS.DMP
/*输入要导入的导出转储文件名*/ 输入插入缓冲区大小(最小为919230720> /*使用默认设置,然后回车*/
2.导入
经由常规路径导出由EXPORT:V10.02.00创建 的文件已经完成ZHS16GBK字符集和 AL16UTF16 NCHAR字符集中的导入只列出导 入文件的内容(yes/no):no> 由于对象已存在,忽略创建错误(yes/no no> 导入权限(yes/no):yes> 导入整个导出文件(yes/no):no>
表9.1 Export选项
表9.1 Export选项
1.导出
【例1】以交互模式进行数据库XSCJ的表XS的导出。 C:\exp /*在命令提示符下输入EXP,然后回车*/ Export: Release 10.2.0.1.0 – Production on 星期四 6月9 15:19:19 2019 Copyright <C> 1992,2019, Oracle. All rights reserved.
…正在导入表 22行被导入源自“XS”准备启用约束条件…
成功终止导入,但出现警告。
2.导入
(2)参数模式 参数模式其实就是将命令行中命令后面所带 的参数写在一个参数文件中,然后再使用命 令,使后面带一个调用该文件的参数。可以 通过普通的文本文件编辑器来创建这个文件。 为了便于标识,将该参数文件命名为.parfile 的后缀。以下是一个参数文件的内容:

Oracle数据库impexp导入导出命令(备份与恢复)

Oracle数据库imp/exp导入导出命令(备份与恢复)Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。

今天在这里主要讲一下用命令行来操作oracle数据导入和导出:备份数据1、获取帮助:exp help=y2. 导出一个完整数据库exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =yimp tax/test@tax file=d:/dbbak.dmp full=y3 、导出一个或一组指定用户所属的全部表、索引和其他对象exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、导出一个或多个指定表exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)恢复数据1. 获取帮助imp help=y2. 导入一个完整数据库imp system/manager file=bible_db log=dible_db full=y ignore=y3. 导入一个或一组指定用户所属的全部表、索引和其他对象imp system/manager file=seapark log=seapark fromuser=seaparkimp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)4. 将一个用户所属的数据导入另一个用户imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copyimp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)5. 导入一个表imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)****************************************************利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。

【专业文档】oracle备份、恢复.doc

RMAN(备份与恢复管理器)基本知识RMAN是 ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。

它也可以用来执行完全或不完全的数据库恢复。

RMAN可以由命令行接口或者 OEM的 Backup Manager GUI 来控制。

4.1 基本知识4.1.1 RMAN的组件、概念1. RMAN 主要包括以下组件:Target Database: (目标数据库)就是需要 RMAN 对其进行备份与恢复的数据库,RMAN 可以备份数据文件,控制文件,归档日志,spfile。

(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)Server Session: (服务器会话)RMAN启动数据库上的 Oracle服务器进程,将建立一个与目标数据库的会话。

由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。

服务器进程RMAN 的服务进程是一个后台进程,用于与 RMAN工具与数据库之间的通信,也用于 RMAN 工具与磁盘/磁带等 I/O 设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:当连接到目标数据库分配一个新的通道Channel: (通道)一个通道是 RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的 I/O类型。

通道控制命令可以用来:? 控制 RMAN使用的 O/S资源,影响并行度? 指定 I/O带宽的限制值(设置 limit read rate 参数)? 定义备份片大小的限制(设置 limit kbytes)? 指定当前打开文件的限制值(设置 limit maxopenfiles)recovery catalog: (恢复目录)用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。

RMAN 利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。

ORACLE最简单有效的备份恢复方案.docx

.ORACLE 最简单有效的备份恢复方案ORACLE备份分两种, 1.逻辑备份;2.物理备份;逻辑备份又分两种:传统的 exp 备份; 10g 开始支持的expdp数据泵备份;物理备份主要就是 RMAN 备份;最基本的原则是:这些逻辑或物理备份和数据库文件必须放在不同的硬盘上;否者一损俱损;备份就没多大意义了;如果数据库不是很大,比如在50G 以下,那么我们就考虑一些傻话化的全备方案我现在的备份方案是:两个逻辑备份和RMAN 备份全部用上;1.传统 dmp 逻辑备份和恢复1.1 传统 dmp 逻辑备份,这个是最简单的备份方法;现在我提供一个简单的脚本:1.1.1 首先建立一个bat 文件,名字叫:exp_backup.bat内容是:set oracle_username=%1set oracle_password=%2set local_tnsname=%3set url=%oracle_username%/%oracle_password%if not %local_tnsname% == "" set url=%url%@%local_tnsname%if exist %oracle_username%_old.dmp del %oracle_username%_old.dmp ifexist %oracle_username%_old.log del %oracle_username%_old.logif exist %oracle_username%.dmp ren %oracle_username%.dmp %oracle_username%_old.dmp ifexist %oracle_username%.log ren %oracle_username%.log %oracle_username%_old.logexp %url% file=%oracle_username%.DMP log=%oracle_username%.LOG该脚本是一个通用的最简单的exp 脚本;意思就是:备份之间,把以前的备份文件修改名字,后面加上_old ,如果本来就有old 文件,就删除之;之后,.就开始份;份的文件目和脚本一致(做最 );所以是会出一新一旧两个文件;当然只要最新的就行了,所以理上只要一份文件;但是考有可能份的候突然,old 文件在,将就着使用,否者新的是坏的,旧的也没了;有的人做一周7 天循份,我得没有必要,要那么多旧的份文件何用,浪空;1.1.2 然后再做一个bat 文件,比如是my_exp.bat内容是 :call exp_backup.bat USER PASSWORD ""如果是在服器自身上份,就不需要写入数据服名;如果有多个用数据需要份;那么就在my_exp.bat 添加:call exp_backup.bat USER1 PASSWORD1 ""⋯.My_EXP.BAT可以做成windows 的行划,每天不忙的候行一次;1.2 exp 份的恢复下面就是恢复的最方法:1.2.1.把上当前用底除,用命令,就可以把象底清除;DROP USER XXX CASCADE1.2.2 .再建用CREATE USER xxxxIDENTIFIED BY xxxxDEFAULT TABLESPACE xxxxTEMPORARY TABLESPACE TEMP并予限:GRANT DBA TO xxxx WITH ADMIN OPTION1.2.3 用 IMP 恢复C:\>imp xxxx/xxxx FILE=xxxx.DMP LOG=xxxx.LOG FULL=Y2.10G 后的数据 expdp 份和恢复2.1 expdp 份据个比exp 有很多点,个我就不了,大家可以自己参考料;不我下来,如果数据量小expdp 是不如 exp 的;但是是建是使用expdp ,因数据会慢慢大的,用expdp 更好些;我最看重的是: expdp 份的文件涵盖的西更多;所以恢复的候方便;除用后,可以不用再建用恢复;不,它的目不像 EXP那么直接,需要使用 oracle 的目象;所以2.1.1 第一步先建一个目象,比如:SQL>create or replace directory LOGIC_BUCKUP份 ';2.1.2 建立一个通用脚本,比如叫EXPDP_BACKUP.BAT内容是:set oracle_username=%1set oracle_password=%2set local_tnsname=%3set url=%oracle_username%/%oracle_password%if not %local_tnsname% == "" set url=%url%@%local_tnsname%if exist %oracle_username%_old_dump.dmp del %oracle_username%_old_dump.dmp ifexist %oracle_username%_old_dump.log del %oracle_username%_old_dump.logif exist %oracle_username%_dump.dmp ren %oracle_username%_dump.dmp%oracle_username%_old_dump.dmpif exist %oracle_username%_dump.log ren %oracle_username%_dump.log%oracle_username%_old_dump.logEXPDP%url%DIRECTORY=LOGIC_BACKUP DUMPFILE=%oracle_username%_DUMP.DMP LOGFILE=%oracle_username%_DUMP.LOG PARALLEL=2方法与上面的dmp 份似;2.1.3 然后再做一个bat 文件,比如是my_expdp.bat内容是 :call expdp_backup.bat USER PASSWORD ""如果是在服器自身上份,就不需要写入数据服名;如果有多个用数据需要份;那么就在my_exp.bat 添加:call expdp_backup.bat USER1 PASSWORD1 ""⋯⋯同 dmp 份一, My_EXPdp.BAT也可以做成windows 的行划,每天不忙的候行一次;2.2 expdp 份的恢复2.2.1.把电脑上当前用户彻底删除,用命令,这样就可以把对象彻底清除;DROP USER XXXX CASCADE2.2.2.用另外一个权限较高的用户(最好不是sys,比如是 YYYY) 导入:C:\>IMPDP yyyy/yyyy DUMPFILE=xxxx_DUMP.DMP LOGFILE=xxxx_DUMP.LOG DIRECTORY=LOGIC_BUCKUP PARALLEL=2(这里的LOGIC_BUCKUP是 oracle 的对象目录,要和xxxx_dump.dup 存放的目录一致)这样就 OK 了,也即是说用户不需要创建,数据泵文件含有了用户以及它原来的权限;从这点来讲,是不是比 IMP 导入更为方便;好了,两种逻辑备份讲完了,下面重点说一下RMAN 备份;因为在生产系统中,逻辑备份作用不大的,因为它不能实时的备份数据,所以逻辑备份更多的时候是给开发人员互相导入数据和存储过程之类用的;RMAN 备份的原理还是有点复杂的,很多细节的我也不是很清楚,不过没关系,我们可以整理出一套最简单的备份方案:3.RMAN 备份和恢复3.1. RMAN 备份3.1.1 首先把数据库参数关注一下,关注下面两个参数第一个参数:db_recovery_file_dest_size, 上图中的大小是默认的4G,也就是归档模式下,archivelog 的所有归档日志文件大小总和,如果超过这个数,就会导致数据库出问题;所以要非常小心,因而建议修改大一些,比如修改成20G;当然最本质的方法,是要按时清理无用的归档日志;第二个参数:db_recovery_file_dest,这个参数非常重要,是11G 里,存放rman 备份集和归档日志的地方;默认是放在flash_recovery_area 目录下的,因为我的系统的flash_recovery_area 和数据库文件在同一个硬盘,所以修改了;3.1.2.关注 redo 日志文件,每组里要有两个成员, 1 个在数据库文件的硬盘下, 1 个在备份文件的硬盘下,因为日志文件写入最频繁,RMAN 无法对它备份,或者说任何备份工具都无法对redo 日志备份;不过redo 它自己可以做冗余,两个文件只要有一个在,即可;比如:3.1.3 做一个最简单的rman 备份脚本;3.1.3.1 首先做一个txt ,比如是: autorman.txt内容是:sql 'alter system archive log current';backup database;delete noprompt obsolete;这三句话的作用分别是: 1.对当前 redo 日志进行归档; 2.备份数据库 3.删除无效的archive 日志和 rman 备份集3.1.3.2 做一个 bat 调用上面的autorman.txt ,比如是: autorman.bat内容是:rman target / @autorman.txt然后就在 winddows 下做一个执行计划,每天或没隔几天,自动执行一下这个autorman.bat当然备份之前,要用rman>show all看一下参数设置,有没有自动备份控制文件,如果没有,要加上;3.2 rman 恢复Rman 恢复非常简单;下面说一下步骤:3.2.1 假如最新一次全备是 3 天前的,先随便建立一个新表,比如是test_rman ,随便插几条数据;用来测试还.现在用 sqlplus 登陆, shutdown 数据库,然后把 oracle 的数据库文件全部删除 (控制文件, redo 日志文件,数据库文件 );3.2.2 用 sql> startup nomount启动数据库的参数文件,参数文件和数据库文件不在同一个硬盘,所以没丢;这时候如果执行sql>alter database mount会报错,因为mount 会加载控制文件,而控制文件已经丢了;3.3.3.把以前控制文件所在的目录建立好,否者rman 找不到控制文件恢复路径;然后执行RMAN>restore controlfile from autobackup;这样控制文件就回复了,有了控制文件就好办了;3.2.4. 以为有了控制文件,所以在sqlplus 里,可以装载数据库Sql>alter database mount3.2.5 数据库被装载后,说明控制文件生效了,这时候,所有的数据库信息都出来了;所以可以用rman 还原数据库了:RMAN> RESTORE database;3.2.6恢复数据库:RMAN> recover database;2.2.7 数据库现在已经全部回复好,可以重新启动了:SQL> alter database open resetlogs;数据库已更改。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle备份恢复场景总结一、数据文件、表空间恢复1、数据库文件恢复1>场景一:问题描述:test.dbf丢失,有RMAN备份。

重启报错:Startup;ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: data file 5: '/oracle/app/oracle/oradata/orcl/test01.dbf'run{startup mount;allocate channel ch00 type 'SBT_TAPE';restore datafile 5;recoverdatafile 5;alter database open;release channel ch00;}2>场景二问题描述:模拟test表空间损坏,删除数据文件(恢复到新目录)旧目录:/oracle/app/oracle/oradata新目录: /home/oraclerun{allocate channel ch00 type 'SBT_TAPE';sql 'alter database datafile 5 offline';setnewname for datafile 5 to '/home/oracle/test01.dbf';restoredatafile 5;switchdatafile 5;recoverdatafile 5;sql 'alter database datafile 4 online';release channel ch00;}说明:set newname for 告诉RMAN 还原数据文件的新位置在哪里。

这个命令在restore 前出现。

switch datafile更新controlfile,记录这个新位置。

这个命令要在recover 前出现2、表空间恢复恢复误删除表空间(已备份),RMAN 必须通过备份的控制文件(与之配套的老控制文件)进行恢复。

run{startupnomount;allocate channel d1 type sbt;restorecontrolfile from '/bk_43_1_920726015';sql 'alter database mount';set until time '2016-08-24 13:17:16';restore database;recover database;alter database open read only;release channel d1;}确保没问题在:shutdown abort;startup mount;alter database open resetlogs;二、控制文件恢复1、场景一:控制文件自动备份的恢复startupnomountset dbidxxxx需指定DBIDrestorecontrolfilefrom autobackup;alter database mount;recover database;alter database open resetlogs;如何寻找DBID?1.既然是默认路径,那么就去默认路径寻找,一般在$ORACLE_HOME/dbs目录下,例如c-361654012-20150312-04,其中361654012就是DBID2.在数据文件的头部含有DBID2、场景一:控制文件从非默认地方恢复这里控制文件从nbu备份的磁带上恢复备份路径startupnomount#从本地恢复restore controlfile from ‘/u01/c-361654012-20150312-04’;在此之前无需指定DBID 或者#从SBT_TAPE恢复restorecontrolfile from '/cntrl_23_1_920645270';run{allocate channel d1 type sbt;restorecontrolfile from '/cntrl_23_1_920645270';sql 'alter database mount';recover database;sql 'alter database open resetlogs';release channel d1;}注释:1>、restore controlfile必须写在run块了,否则报错:RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece2>sbt的磁带号-/cntrl_23_1_920645270可以从已备份成功的任务里查看。

三、Redo 文件恢复联机重做日志的3种状态:current 当前inactive 非活动active 活动观察数据恢复是否需要联机重做日志来恢复。

1.inactive日志丢失的恢复—实例恢复不需要2.active日志丢失的恢复:日志组对应的脏块还没有从data buffer 写入到data file,不能被覆盖(但已写入到归档里)—实例恢复需要3.current日志丢失的恢复—实例恢复需要1、场景一:inactive日志丢失的恢复1>正常关闭数据库后(redo的丢失就属于inactive日志丢失的恢复)shutdown immediaterm redo*startup mountalter database clear logfile '/u01/app/oracle/oradata/ortest/redo01.log';## alter database clear logfile group n;也行alter database clear logfile '/u01/app/oracle/oradata/ortest/redo03.log';alter database clear unarchivedlogfile '/u01/app/oracle/oradata/ortest/redo02.log';alter database open;此情况不会丢失数据。

起来后多切几遍日志,看是否正常:alter system switch logfile;注意事项:必须clear 完非current log之后,才能clear unarchived current log(当你不带参数unarchived而clear当前日志的时候会提示你日志需要归档)。

2>非关闭数据库后(inactive日志丢失)shutdown abortrm redo01.logstartup mountalter database clear logfile '/u01/app/oracle/oradata/ortest/redo01.log';alter database open;此种情况不会丢失数据2、场景二:active日志丢失非正常关闭数据库,active日志丢失shutdown abortrm redo01.logstartup mountrecover database until cancel;alter database open resetlogs;此种情况不会丢失数据。

(active的日志已写入归档)3、场景三:current日志丢失此种情况会丢失数据:shutdown abortrm redo01.logstartup mountalter system set "_allow_resetlogs_corruption"=true scope=spfile;添加隐藏参数recover database until cancel;alter database open resetlogs;四、不完全恢复RMAN不完全恢复:三个标准模式:基于time、基于scn和基于sequence还有一种是基于cancel的恢复(注意是在SQL下执行)在不完全恢复时,有时为了保险往往一步把数据库open read only,确保没问题再open resetlogs:alter database open read only;启动到mount下执行:run {allocate channel c1 type disk;allocate channel c2 type disk;set until time '2016-06-06 11:54:05';restore database;recover database;alter database open resetlogs;}//基于scn的方法与基于time 相似,语法是set until scn 6689163;//基于日志的方法类似手工恢复的例子,语法是set until sequence 3;//有时报错格式不对恢复前执行://linux操作系统:export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'五、database恢复1、原机器恢复1>恢复spfile文件-到nomount状态:可以从数据库模板里随便找个pfile起到mount下,再恢复spfile。

因为分配channel 必须得在nomount下面:rman>run{allocate channel c1 type sbt;restorespfile from '/al_63_1_920727874'; release channel c1;}2>恢复控制文件-到mount状态run{allocate channel c1 type sbt; restorecontrolfile from '/cntrl_64_1_920727890'; sql 'alter database mount';release channel c1;}3>恢复数据文件-以read only打开run{allocate channel c1 type sbt;allocate channel c2 type sbt;allocate channel c3 type sbt;allocate channel c4 type sbt;set until time '2016-08-24 13:40:00';restore database;recover database;sql 'alter database open read only';release channel c1;release channel c2;release channel c3;release channel c4;}注释:查看恢复用到的截止时间戳:用list backup;查看备份的归档最后的时间:4>打开数据库确定无误后,已resetlogs打开数据库:shutdown abort;startup mount;alter database open resetlogs;2、异机恢复:参考原机器恢复,主要的就是,再每个run里面写着一条:run{….SEND 'NB_ORA_CLIENT=rac1;…}rac1是nbu上原机器的client名字。

相关文档
最新文档