您的位置:首页 > 数据库 > Oracle

oracleRMAN备份与恢复笔记

2011-04-28 09:22 549 查看
备份

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: