备份
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.