免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1928 | 回复: 1
打印 上一主题 下一主题

OracleRMAN备份与恢复笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-26 19:30 |只看该作者 |倒序浏览
备份

  archive log list 查看归档状态

  desc v$log

  show parameter RECOVERY;查看恢复路径

  如何归档:

  startup mount

  alter database archivelog/noarchivelog;修改数据库为归档或非归档模式

  show parameter archive;查看归档日志路径

  alter system set log_archive_dest_1='location=/home/oracle/archive01' scope=both;修改归档日志路径

  alter system set log_archive_dest_2='location=/home/oracle/archive02' scope=both;镜像路径

  alter system set log_archive_max_processes=10;

  alter database open;

  alter system switch logfile;切换日志,生成新的归档日志

  如何备份:

  alter tablespace tbs_2k begin backup;开启备份,tbs_2k 为需要备份的表空间。

  select * from v$backup;在PL/SQL下查看备份的信息,如序列号等

  select * from dba_data_files;在PL/SQL下查看数据文件信息,如所属的表空间,序列号,大小等

  select * from v$backup s,dba_data_files t where s.FILE#=t.file_id;以上两条命令的综合结果查看。

  create table t_recover tablespace tbs_2k as select * from scott.emp;创建测试表,用于删除后恢复测试。

  cp tbs_2k.dbf /home/oracle/db_bak;将需要备份的数据文件拷贝到备份目录下,以供以后数据恢复。

  inster into t_recover select * from scott.emp;插入数据

  commit;

  alter system switch logfile;手动进行一次归档

  删除/oradata/TEST下的tbs_2k.dbf文件,然后将/home/oracle/db_bak/目录下的tbs_2k.dbf的文件拷贝到/oradata/TEST下进行人工破坏数据文件后进行恢复

  alter database datafile 5 offline;将数据文件离线。

  cp /home/oracle/db_bak/tbs_2k.dbf /oradata/TEST;把备份的文件考回到TEST目录下进行下一步的数据恢复。

  recover datafile 5;进行文件从归档日志恢复

  alter database datafile 5 online;将数据文件恢复成在线状态,此刻数据已恢复。

  alter tablespace users end backup;结束备份

  select open_mode form v$database;查看数据库状态

  select FILE_NAME from dba_data_files;查看数据文件目录

  v$datafile查看数据文件信息,如编号和文件名

  archive log list 查看归档状态

  desc v$log

  show parameter RECOVERY;查看恢复路径

  如何归档:

  startup mount

  alter database archivelog/noarchivelog;修改数据库为归档或非归档模式

  show parameter archive;查看归档日志路径

  alter system set log_archive_dest_1='location=/home/oracle/archive01' scope=both;修改归档日志路径

  alter system set log_archive_dest_2='location=/home/oracle/archive02' scope=both;镜像路径

  alter system set log_archive_max_processes=10;

  alter database open;

  alter system switch logfile;切换日志,生成新的归档日志

  如何备份:

  alter tablespace tbs_2k begin backup;开启备份,tbs_2k 为需要备份的表空间。

  select * from v$backup;在PL/SQL下查看备份的信息,如序列号等

  select * from dba_data_files;在PL/SQL下查看数据文件信息,如所属的表空间,序列号,大小等

  select * from v$backup s,dba_data_files t where s.FILE#=t.file_id;以上两条命令的综合结果查看。

  create table t_recover tablespace tbs_2k as select * from scott.emp;创建测试表,用于删除后恢复测试。

  cp tbs_2k.dbf /home/oracle/db_bak;将需要备份的数据文件拷贝到备份目录下,以供以后数据恢复。

  inster into t_recover select * from scott.emp;插入数据

  commit;

  alter system switch logfile;手动进行一次归档

  删除/oradata/TEST下的tbs_2k.dbf文件,然后将/home/oracle/db_bak/目录下的tbs_2k.dbf的文件拷贝到/oradata/TEST下进行人工破坏数据文件后进行恢复

  alter database datafile 5 offline;将数据文件离线。

  cp /home/oracle/db_bak/tbs_2k.dbf /oradata/TEST;把备份的文件考回到TEST目录下进行下一步的数据恢复。

  recover datafile 5;进行文件从归档日志恢复

  alter database datafile 5 online;将数据文件恢复成在线状态,此刻数据已恢复。

  alter tablespace users end backup;结束备份

  select open_mode form v$database;查看数据库状态

  select FILE_NAME from dba_data_files;查看数据文件目录

  v$datafile查看数据文件信息,如编号和文件名

  不完全数据库恢复

  select sysdate from dual;查看系统时间;

  desc dba_data_files;查看数据文件结构信息

  select file_name from dba_data_files;查看所有的数据文件信息

  show parameter undo

  select * from user_tab_partitions;查看分区信息

  select * from v$logfile;查看日志文件信息

  不完全数据库恢复

  丢失部分数据,数据库恢复到过去某一状态

  必须全库进行不完全恢复,恢复全部数据文件

  必须运行在归档模式下

  数据库在不完全恢复前必须进行冷备份

  数据库在恢复后必须进行备份

  不完全数据库恢复过程

  startup mount;

  alter database archivelog;

  alter database open;

  alter database begin backup;

  cp /oradata/TEST/*.dbf /home/oracle/db_bak;备份数据文件

  alter database end backup;

  (使用日志挖掘技术,确定误删除表的具体时间):

  操作系统创建存储数据字典文件目录

  mkdir -p /home/oracle/logmin;

  alter system set utl_file_dir='/home/oracle/logmin' scope=spfile;

  重启数据库

  shutdown immediate;

  startup

  创建存储数据字典的文件,存储日志文件等信息

  execute dbms_logmnr_d.build('shwdict.ora','/home/oracle/logmin');

  创建在线日志文件/归档日志文件列表到数据字典中

  execute dbms_logmnr.add_logfile('/home/oracle/archive01/1_3_720440539.dbf',dbms_logmnr.new);其中1_3_720440539.arc为数据库重启前的最新归档日志,dbms_logmnr.new为用归档日志生成的数据字典

  挖掘日志文件

  exec dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmin/shwdict.ora');

  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

  select SCN,TIMESTAMP,SQL_REDO,SQL_UNDO from V$LOGMNR_CONTENTS where SQL_REDO like '%drop%';

  记录下删除表的时间,例如(2011-03-16 04:42:57);

  shutdown immediate;关闭数据库

  startup mount;

  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

  recover database until time '2011-03-16 04:42:55';恢复时时间尽量在删除表时间的前两三秒;

  alter database open resetlogs;数据库以resetlogs的方式启动,归档日志序列号都归为0,重新开始计数,所以以前备份的东西不能再用,必须将数据库重新备份。

  RMAN备份与恢复

  list backup;列出备份的东西

  select * from user_tables;

  rman>sql "…";

  rman 元数据存在控制文件中

  large-pool增大后利于rman的备份

  show parameter pool

  rman>sql "alter system set large_pool_size=30M";

  rman>rman target / ;登录数据库

  rman>backup tablespace tablespace-name;或

  rman>backup datafile datafile-number;或

  rman>backup database;备份整个数据库

  rman>sql "alter database datafile datafile-num offline";

  rman>restore tablespace tablespace-name;

  rman>recover datafile datafile-number;

  show all;显示rman的配置信息

  alter database open resetlogs;进行此操作后数据库一定要重新备份,因为归档日志的序列号已归为1.

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2011-03-26 22:27 |只看该作者
学习学习啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP