第一步:确认数据库运行在归档模式。
检查:

SQL> archive log list;Database log mode           No Archive ModeAutomatic archival           DisabledArchive destination           USE_DB_RECOVERY_FILE_DESTOldest online log sequence     4Current log sequence           5

当前运行在非归档模式.

关闭数据库,运行在mount模式

SQL> shutdown immediate;SQL> startup mount;

启用归档模式

SQL> alter database archivelog;

将配置写入spfile

SQL> alter system set log_archive_start=true scope=spfile;

重启数据库 运行在open模式

SQL> shutdown immediate;SQL> startup;

重新检查:已经运行在归档模式。

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   5Current log sequence           5

第二步:备份数据库

运行rman:

[gateman@~]$ rman target /

将下面语句copy入终端运行:写成脚本都得,注意红色path的写权限

run{allocate channel d1 type disk;backup as compressed backupset incremental level = 0format '/home/gateman/Public/db_bak/db_%d_%s_%p_%t_%T' database;sql 'alter system archive log current';release channel d1;}

如果无error的话, 去该path睇下有无备份出来的备份文件。 备份时我部机卡到阿妈都唔认得

[gateman@Public]$ cd db_bak/[gateman@db_bak]$ ls -ltotal 173820-rw-r----- 1 oracle dba 176889856 Jul 22 23:07 db_XE_3_1_789346754_20120722-rw-r----- 1 oracle dba   1097728 Jul 22 23:07 db_XE_4_1_789347261_20120722


第三步:一些检验(非必要)

查看当前的数据文件:

RMAN> report schema;

using target database control file instead of recovery catalogReport of database schema for database with db_unique_name XE

List of Permanent Datafiles===========================File Size(MB) Tablespace           RB segs Datafile Name---- -------- -------------------- ------- ------------------------1    360      SYSTEM               ***     /u01/app/oracle/oradata/XE/system.dbf2    640      SYSAUX               ***     /u01/app/oracle/oradata/XE/sysaux.dbf3    25       UNDOTBS1             ***     /u01/app/oracle/oradata/XE/undotbs1.dbf4    100      USERS                ***     /u01/app/oracle/oradata/XE/users.dbf

List of Temporary Files=======================File Size(MB) Tablespace           Maxsize(MB) Tempfile Name---- -------- -------------------- ----------- --------------------1    20       TEMP                 32767       /u01/app/oracle/oradata/XE/temp.dbf

查看归档日志:

RMAN> list copy of archivelog all;

List of Archived Log Copies for database with db_unique_name XE=====================================================================

Key     Thrd Seq     S Low Time ------- ---- ------- - ---------1       1    5       A 17-JUL-12        Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_5_80r5tngg_.arc

2       1    6       A 22-JUL-12        Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_6_80r7q4y8_.arc

查看还原预览: 可以见到关键信息

RMAN> restore database preview;

Starting restore at 22-JUL-12allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=51 device type=DISK

List of Backup Sets===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------1       Incr 0  168.69M    DISK        00:08:23     22-JUL-12              BP Key: 1   Status: AVAILABLE  Compressed: YES  Tag: TAG20120722T225914        Piece Name: /home/gateman/Public/db_bak/db_XE_3_1_789346754_20120722  List of Datafiles in backup set 1  File LV Type Ckp SCN    Ckp Time  Name  ---- -- ---- ---------- --------- ----  1    0  Incr 422228     22-JUL-12 /u01/app/oracle/oradata/XE/system.dbf  2    0  Incr 422228     22-JUL-12 /u01/app/oracle/oradata/XE/sysaux.dbf  3    0  Incr 422228     22-JUL-12 /u01/app/oracle/oradata/XE/undotbs1.dbf  4    0  Incr 422228     22-JUL-12 /u01/app/oracle/oradata/XE/users.dbfusing channel ORA_DISK_1

List of Archived Log Copies for database with db_unique_name XE=====================================================================

Key     Thrd Seq     S Low Time ------- ---- ------- - ---------1       1    5       A 17-JUL-12        Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_5_80r5tngg_.arc

2       1    6       A 22-JUL-12        Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_6_80r7q4y8_.arc

Media recovery start SCN is 422228Recovery must be done beyond SCN 422228 to clear datafile fuzzinessFinished restore at 22-JUL-12

查看控制文件备份, 可以看到存在于刚才备份出来的文件中

RMAN> list backup of controlfile;

List of Backup Sets===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------2       Incr 0  1.03M      DISK        00:00:05     22-JUL-12              BP Key: 2   Status: AVAILABLE  Compressed: YES  Tag: TAG20120722T225914        Piece Name: /home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722  Control File Included: Ckp SCN: 422479       Ckp time: 22-JUL-12

RMAN> 

查看spfile备份

RMAN> list backup of spfile;

List of Backup Sets===================

BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------2       Incr 0  1.03M      DISK        00:00:05     22-JUL-12              BP Key: 2   Status: AVAILABLE  Compressed: YES  Tag: TAG20120722T225914        Piece Name: /home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722  SPFILE Included: Modification time: 22-JUL-12  SPFILE db_unique_name: XE

第四步:删除数据库

你们懂的

RMAN> shutdown immediate;RMAN> startup mount;

开启受限模式, 禁止闲杂人等连接。

RMAN> sql 'alter system enable restricted session';

sql statement: alter system enable restricted session

drop 掉数据库..  spfile control file 数据文件都无晒噶啦。

spfile目录:pwd

RMAN> drop database;

退出下先

RMAN> exit


第五步:还原数据库

连接rman

[gateman@~]$ rman target /

nomount模式

RMAN> startup nomount;

startup failed: ORA-01078: failure in processing system parametersLRM-00109: could not open parameter file '/u01/app/oracle/product/11.2.0/xe/dbs/initXE.ora'

starting Oracle instance without parameter file for retrieval of spfileOracle instance started

Total System Global Area     158662656 bytes

Fixed Size                     2224592 bytesVariable Size                 96472624 bytesDatabase Buffers              54525952 bytesRedo Buffers  

还原spfile

RMAN> restore spfile from '/home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722'2> ;

Starting restore at 23-JUL-12using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=135 device type=DISK

channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722channel ORA_DISK_1: SPFILE restore from AUTOBACKUP completeFinished restore at 23-JUL-12

还原controlfile 控制文件

RMAN> restore controlfile from '/home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722';

Starting restore at 23-JUL-12using channel ORA_DISK_1

channel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:03output file name=/u01/app/oracle/product/11.2.0/xe/dbs/cntrlXE.dbfFinished restore at 23-JUL-12

注意上面呢个 还原出bug了 叼

下面呢个先系正常的 不然改不了mount模式:话controlfile有问题,  所以path唔正常的命令执行多一次, controlfile 的path有记录在spfile中,对比下一唔一致。

RMAN> restore controlfile from '/home/gateman/Public/db_bak/db_XE_4_1_789347261_20120722';

Starting restore at 23-JUL-12using channel ORA_DISK_1

channel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:03output file name=/u01/app/oracle/oradata/XE/control.dbfFinished restore at 23-JUL-12

改成mount 模式

RMAN> alter database mount;

database mountedreleased channel: ORA_DISK_1

check下backup文件

RMAN> crosscheck backup;

Starting implicit crosscheck backup at 23-JUL-12allocated channel: ORA_DISK_1channel ORA_DISK_1: SID=5 device type=DISKCrosschecked 1 objectsFinished implicit crosscheck backup at 23-JUL-12

Starting implicit crosscheck copy at 23-JUL-12using channel ORA_DISK_1Finished implicit crosscheck copy at 23-JUL-12

searching for all files in the recovery areacataloging files...cataloging done

List of Cataloged Files=======================File Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_6_80r7q4y8_.arcFile Name: /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_5_80r5tngg_.arc

using channel ORA_DISK_1crosschecked backup piece: found to be 'AVAILABLE'backup piece handle=/home/gateman/Public/db_bak/db_XE_3_1_789346754_20120722 RECID=1 STAMP=789346754Crosschecked 1 objects

再check下预览 因为恢复了controlfile 预览应该会正常。

RMAN> restore database preview;

开始真正还原数据文件

RMAN> restore database;

Starting restore at 23-JUL-12using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/XE/system.dbfchannel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/XE/sysaux.dbfchannel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/XE/undotbs1.dbfchannel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/XE/users.dbfchannel ORA_DISK_1: reading from backup piece /home/gateman/Public/db_bak/db_XE_3_1_789346754_20120722channel ORA_DISK_1: piece handle=/home/gateman/Public/db_bak/db_XE_3_1_789346754_20120722 tag=TAG20120722T225914channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:01:45Finished restore at 23-JUL-12

貌似成功了

第六步:检验完整性

有问题

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of alter db command at 07/23/2012 00:57:12ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '/u01/app/oracle/oradata/XE/system.dbf'
recover 虽然报错话找不到归档日志, 因为drop database 时被删除了。 但是 执行这个命令后就可以open

RMAN> recover database;

Starting recover at 23-JUL-12using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 5 is already on disk as file /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_5_80r5tngg_.arcarchived log for thread 1 with sequence 6 is already on disk as file /u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_6_80r7q4y8_.arcarchived log file name=/u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_5_80r5tngg_.arc thread=1 sequence=5archived log file name=/u01/app/oracle/fast_recovery_area/XE/archivelog/2012_07_22/o1_mf_1_6_80r7q4y8_.arc thread=1 sequence=6unable to find archived logarchived log thread=1 sequence=7RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of recover command at 07/23/2012 00:57:50RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 7 and starting SCN of 442570

呢次终于可以open了

RMAN> alter database open resetlogs;

database opened

最后, 禁止返受限模式,其他人又可以连接了

RMAN> sql 'alter system disable restricted session'; 

 sql statement: alter system disable restricted session

Oracle 备份还原数据库练习.相关推荐

  1. oracle导入导出还原,Oracle 备份 还原 数据库 导入导出

    导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP ROWS=N //不保存数据: 导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP  ...

  2. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息"is formatted to support  1 media fami ...

  3. Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行imp、exp一键导入导出oracle数据库dmp文件

    Python 远程操作 Oracle 进行数据库备份还原 第一章:效果演示 ① 数据库恢复演示 ② 请求模拟 第二章:功能实现 ① 创建启动服务 ② 处理解析请求 ③ 处理命令 ④ 服务端数据库操作 ...

  4. oracle批处理还原数据库,用批处理写的:数据库备份还原工具(修正加强版)

    @echo off&setlocal enabledelayedexpansion color 0a echo.===================================== ec ...

  5. 国产数据库清单;微盟《生产环境和数据恢复》;TiDB招聘;Oracle备份还原指南、GaussDB性能调优指南……墨天轮数据库周刊-第5期

    热门资讯 1.国产数据库清单(2020年第1季度)发布! modb.pro/db/22488 [摘要]本文统计了国产数据库产品清单,共58个产品仅供参考,同时在清单下方简单整理了各产品的基本介绍.应用 ...

  6. Mysql备份还原数据库之mysqldump实例及参数详细说明

    我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一般用一下两种方式来处理: 1.使用into outfile 和 load data infile导入导出备份数据 这种方法的好处是, ...

  7. Oracle 备份还原

    导出整个数据库,在CMD命令窗口执行 EXP 用户名/密码@服务名(数据库) FULL=Y FILE=路径 EXP INTERFACE/INTERFACE@PIVAS_XMDWYY FULL=Y FI ...

  8. oracle备份还原采集,oracle 备份还原

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据. 补充: 1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数 ...

  9. T-Sql备份还原数据库

    代码如下: -- 备份数据库 BACKUP DATABASE 数据库名称 TO DISK = '物理存储位置' WITH FORMAT,CHECKSUM -- 还原数据库 alter database ...

最新文章

  1. 面试题-自旋锁,以及jvm对synchronized的优化
  2. 顺F分享,你是在裸奔吗?
  3. MATLAB 只是冰山一角!一个海外资深程序员聊被卡脖子……
  4. 腾讯99公益日︱深圳市慈善会:那些无力的故事,都拥有了力量
  5. C# 重绘tabControl,添加关闭按钮(续)
  6. html基础之select ,datalist与details的异同
  7. linux内存源码分析 - 伙伴系统(释放页框)
  8. 张磊:极少有人真正理解时间的价值
  9. 双网卡电脑同时访问内外网设置静态路由表
  10. win10无法修改mac地址_Oops,手机MAC地址也可以随机了
  11. 新卡插手机显示无服务器,手机插卡无服务怎么回事
  12. Python数据分析与挖掘实战学习12
  13. SVM中对偶、凸优化与KTT条件问题
  14. elementUI——form表单
  15. 【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析
  16. ExtentReports生成自动化测试报告
  17. 电信管理局:2011推进三网融合走向深入
  18. Flutter开发(1)—— Dart vs Swift
  19. XTR111AIDGQR德州TI XTR111是一款精密的电压-电流转换器 封装MSOP10
  20. 《程序是怎么样跑起来的》学习记录

热门文章

  1. 判断程序是否处于调试状态
  2. Kaldi内存泄漏问题排查
  3. 带你了解什么样的信息是陷阱或为勒索病毒在诱骗
  4. android R文件丢失
  5. bash读取txt文件, 并在浏览器中以表格形式输出
  6. BFS求无权图的单源最短路径-邻接矩阵存储
  7. 116. 飞行员兄弟【二进制枚举】
  8. MySQL中如何关闭事务的自动提交
  9. Mybatis的insert方法
  10. jQuery的Ajax方法