一:Rman的搭建
二:Rman的备份
三:Rman的恢复
四:Rman的级别
五:Rman备份的删除
=========================================================================================================================
一:Rman的搭建
=========================================================================================================================
========================================
les 09 oracle recover manager ---rman
========================================
1:物理备份
2:只备份有数据的部分,不备份没有分配的exents ----而如果用操作系统命令备份会将整个段(包括段里所有的区)都备份
3:可以增量备份
4:并行
5:可以检查块(如果有坏块能检测出来)
6:打包
7:支持磁带(带库) (如果不用rman,想把数据备份到磁带上,需要先备份到磁盘上,然后在通过tar命令把磁盘上的数据导到磁带上)
8:可以不用知道结构和备份信息(如果用操作系统命令备份,需要知道结构和备份信息)
为什么有这么多优点?
rman备份是block级别的备份(rman是oracle生产的工具,所以oracle公司知道oracle数据库的block结构)
rman备份是服务器的备份,用oracle server进程可以知道block的格式
Rman在oracle8.0就已经存在;
Rman
|
|
|
目标DB(装数据)------------------------------> 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data | :app_data在/u01/app/oracle/oradata/db02
|
|
|
磁盘(磁带)(装备份信息)
不建议将目标DB和恢复目录DB放在同一个数据库里,同一个机器里;
可以将放在另一个库里
可以放在目标数据库的控制文件里(省钱),目标数据库只要能mount就能查看恢复目录信息;
数据在控制文件中保存的时间由参数 control_file_record_keep_time
SQL> show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ----------- ----------
control_file_record_keep_time integer 7 ----------------只能保存7天;
一周做一次全备
每天备一次增量备份
如果某一天数据库损坏了,需要用一周前的全备和一周以后每一天的增量备份;
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
11g Enterprise Edition ------企业版oracle默认有Rman
连接:
Rman 连接目标数据库时数据库必须是启动的,因为是用oracle server进程连接的;控制文件必须是打开的
rman target sys/oracle nocatalog -------------目标数据库的控制文件作为恢复目录数据库;
RMAN>list backup;
RMAN>report schema; --------结构信息
filesperset 5 ---每5个文件打成一个包
run(要成功一起成功,要失败都失败,相当与一个事务)
恢复目录DB:结构信息
备份信息
管道:手工分配(8.0,8i) allocate channel 1 type disk[会启动一个server进程,配多个管道会多个进程共同完成,并行]
自动分配(9i以后) configure channel device type disk format '/db01/backup/%u';
恢复目录DB位置:1 目标数据库的控制文件里
2 另一个数据库
=======================
1 目标数据库的控制文件里
=======================
RMAN> show all
2> ;
RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters are successfully stored
RMAN> show all;
RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2; ------------冗余的改为两份
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default
==================================================
les 17 Recovery Catalog Creation and Maintenance
==================================================
=========================
2 恢复目录数据库为另一个数据库
=========================
恢复目录数据库存储的文件
1 备份信息:数据文件和归档重做日志的备份
2 结构 :目标数据库的结构信息
3 常用的脚本
一个恢复目录数据库可以管多个数据库
目标数据库和恢复目录数据库可以互相做
Rman
|
DB1 ------ |
| |
目标DB(装数据)------------------------------> 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data | | :app_data在/u01/app/oracle/oradata/db02
DB3 ------ |
|
|
磁盘(磁带)(装备份信息)
1:创建数据库 orcl(恢复目录数据库)
2:创建表空间Rmantbs
3:创建用户Rman
4:对用户授权
5:用Rman连接 RMAN>
6:创建表(存储目标数据库的信息)
7:注册
8:维护
2:Create tablespace rmantbs datafile '/u01/oracle/oradata/orcl/rmantbs01.dbf' size 200M;
3:create user rman identified by rman
default tablespace rmantbs
temporary tablespace temp;
4:grant connect,resource to rman;
grant recovery_catalog_owner to rman;
5:lsnrctl status
sqlplus
scott/tiger@orcl
6:
export ORACLE_HOME=db02
rman target sys/oracle catalog rman/rman@orcl
RMAN>create catalog tablespace "RMANTBS";
=====
orcl
=====
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
LX_CHEN
RMANTBS ------------创建成功
8 rows selected.
7:
RMAN>register database; --------将目标数据库的信息注册到catalog数据库里
catalog 数据库
select * from rc_database;
=============
具体步骤
=============
目标数据库:db02
catalog数据库:orcl
如何启动第二个数据库?
[oracle@chen oradata]$ cd $ORACLE_HOME/dbs
[oracle@chen dbs]$ vim initorcl.ora
#*.memory_target=771751936
*.memory_target=371751936
[oracle@chen dbs]$ export ORACLE_SID=orcl
[oracle@chen dbs]$ rlwrap sqlplus
SQL> select name from v$database;
NAME
---------
ORCL
[oracle@chen ~]$ lsnrctl
LSNRCTL> status
Services Summary...
Service "db02" has 1 instance(s).
Instance "db02", status READY, has 1 handler(s) for this service...
Service "db02XDB" has 1 instance(s).
Instance "db02", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
=====
1:orcl
=====
2:
SQL> create tablespace rmantbs datafile '/u01/app/oracle/oradata/orcl/rmantbs01.dbf' size 100M;
Tablespace created.
3:
SQL> create user rman identified by rman
2 default tablespace rmantbs
3 temporary tablespace temp;
User created.
4:
SQL> grant connect,resource to rman;
Grant succeeded.
SQL> grant RECOVERY_CATALOG_OWNER to rman;
Grant succeeded.
5:[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 08:49:14 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database
RMAN>
6:
RMAN> create catalog tablespace "RMANTBS";
recovery catalog created
7:
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
=====
orcl
=====
SQL> conn rman/rman
SQL> select * from tab;
.....
142 rows selected.
=====
db02
=====
create script Level0Backup {
backup
incremental level 0
format ‘/u01/db01/backup/%d_%s_%p’
filesperset 5
(database include current controlfile);
sql ‘alter system archive log current’;
=====
orcl
=====
conn rman/man
SQL> select * from rc_stored_script;
=========================================================================================================================
二:less 11 RMAN Backups
=========================================================================================================================
1:Image copy
2:Backup set ---可以直接写入磁盘或磁带
---数据文件可以增量备份,也可以全备
---不备份没有使用的块
Backup Piece:
A backup piece is a file in a backup set.
A backup piece can contain blocks from more than one datafile.
Backup Piece Size
Backup piece size can be limited as follows:
==============
1:Image copy
==============
备份:1 备份数据文件
2 备份归档日志
3 备份控制文件
https://localhost:1158/em
======
db02
======
SQL> set linesize 100
SQL> col file_name for a50
SQL> select file_name,file_id from dba_data_files;
FILE_NAME FILE_ID
-------------------------------------------------- ----------
/u01/app/oracle/oradata/db02/users01.dbf 4
/u01/app/oracle/oradata/db02/undotbs01.dbf 3
/u01/app/oracle/oradata/db02/sysaux01.dbf 2
/u01/app/oracle/oradata/db02/system01.dbf 1
/u01/app/oracle/oradata/db02/lx_db02.dbf 5
一:备份数据文件
[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk; -------在磁盘上创建一个管道
3> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_dd01.dbf';
4> }
RMAN> list copy;
specification does not match any control file copy in the repository
specification does not match any archived log in the repository
List of Datafile Copies
=======================
Key File S Completion Time Ckp SCN Ckp Time
------- ---- - --------------- ---------- ---------------
2 5 A 23-JUN-14 1020184 23-JUN-14
Name: /u01/app/oracle/oradata/bak/lx_dd01.dbf
Tag: TAG20140623T174948
[oracle@chen bak]$ ls
db_32_1.bus01 db_35_1.bus01 db_37_1.bus01
db_33_1.bus01 db_36_1.bus01 lx_dd01.dbf
RMAN>report schema;
二:备份归档文件
run{
allocate channel d1 type disk; -------在磁盘上创建一个管道
copy archivelog '/u01/oracle/oradata/db02/archive2/app/db02_111.arc' to '/u01/....../bak/...arc';
RMAN> run
2> {
3> allocate channel d1 type disk;
4> copy archivelog '/home/oracle/db02_archive1/db02_1851001130_11.arc' to '/u01/app/oracle/oradata/db_archive01.arc';
5> }
三:备份控制文件
RMAN> run{
2> allocate channel d1 type disk;
3> copy current controlfile to '/u01/app/oracle/oradata/bak/control01.ctl';
4> }
RMAN> list copy of controlfile;
List of Control File Copies
===========================
Key S Completion Time Ckp SCN Ckp Time
------- - --------------- ---------- ---------------
3 A 23-JUN-14 1020865 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control01.ctl
Tag: TAG20140623T180435
[oracle@chen bak]$ ls
control01.ctl db_33_1.bus01 db_36_1.bus01 lx_dd01.dbf
db_32_1.bus01 db_35_1.bus01 db_37_1.bus01
三个拷贝一起执行
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
copy datafile 4 to /u01/oracle/oradata/bak/app_data01.dbf',
archivelog '/u01/oracle/oradata/db02/archive2/db02_111.arc' to '/u01/....../bak/...arc',
current controlfile to '/u01/oracle/oradata/bak/control.ctl';
RMAN> run{
2> allocate channel d1 type disk;
3> allocate channel d2 type disk;
4> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_02.dbf';
5> copy current controlfile to '/u01/app/oracle/oradata/bak/control2.ctl';
6> }
RMAN> list copy of controlfile;
List of Control File Copies
===========================
Key S Completion Time Ckp SCN Ckp Time
------- - --------------- ---------- ---------------
5 A 23-JUN-14 1021404 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control2.ctl
Tag: TAG20140623T181334
3 A 23-JUN-14 1020865 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control01.ctl
Tag: TAG20140623T180435
数据文件少时(20个文件一下)用image copy;
====================
二:backup set 备份集
====================
可以将文件打包,多个文件打包成一个文件,易于管理,操作系统备份办不到;
只备份有数据的地方,不备份没有分配的extents; ---(因为他是基于block的备份)
可以将数据备份到磁带上;
资源限制;(I/O限制)---备份时可以调节所占的I/O
备份集是一个逻辑的概念;
备份出来的数据称为备份片:piece
datafile级别的 :
tablespace级别的 :
database级别的 :
run{
allocate channel d1 type disk;
backup datafile 4 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 5 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 6 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
上一条命令可以简写:
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 4;
backup datafile 5;
backup datafile 6;
1:备份数据文件 --------只备份有数据的地方,速度快
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
3> backup datafile 5;
4> }
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
32 Full 1.07M DISK 00:00:01 23-JUN-14
BP Key: 32 Status: AVAILABLE Compressed: NO Tag: TAG20140623T184232
Piece Name: /u01/app/oracle/oradata/bak/db02_43_1.chen
List of Datafiles in backup set 32
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
5 Full 1022221 23-JUN-14 /u01/app/oracle/oradata/db02/lx_db02.dbf
备份表空间
SQL> select segment_name,tablespace_name from user_segments;
SEGMENT_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT USERS
EMP USERS
SALGRADE USERS
LX_TAB LX_DB02
T1 LX_DB02
T2 LX_DB02
T3 LX_DB02
T4 LX_DB02
PK_DEPT USERS
PK_EMP USERS
10 rows selected.
run{
allocate channel d1 type disk format '/u01/oracle/oradata/bak/tbs_%s_%p.bus';
backup tablespace app_data filesperset 3; -------每三个文件形成一个文件集
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/ccc_%s_%p.cccs';
3> backup tablespace lx_db02 filesperset 3;
4> }
RMAN> list backup of datafile 4; ------查看datafile4的备份信息,相当与过滤条件where;
RMAN> list backup of tablespace app_data;
[oracle@chen admin]$ rlwrap rman target sys/oracle@orcl nocatalog ---------用目标数据库的控制文件做为目标文件的回复目录数据库
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jun 23 12:15:49 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1378775808)
using target database control file instead of recovery catalog
RMAN>
====================
备份数据库 ----全备份
====================
database 约等于 datafile
---------------备份数据文件包括当前的控制文件
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.aaa';
3> backup database include current controlfile filesperset 3;
4> }
[oracle@chen bak]$ ls
ccc_44_1.cccs db02_43_1.chen db_45_1.aaa db_46_1.aaa db_47_1.aaa
RMAN> list backup of controlfile;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
36 Full 9.33M DISK 00:00:01 23-JUN-14
BP Key: 36 Status: AVAILABLE Compressed: NO Tag: TAG20140623T185719
Piece Name: /u01/app/oracle/oradata/bak/db_47_1.aaa
Control File Included: Ckp SCN: 1022770 Ckp time: 23-JUN-14
RMAN> list backup;
rman能够备份的有:数据文件,控制文件,归档文件
============
备份控制文件:
============
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.qqq';
3> backup current controlfile;
4> }
自动备份控制文件:
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default -----默认是关闭的
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
============
归档文件的备份
============
RMAN> list copy; ---查看归档模式 只有备份以后的归档对我们才有用,备份之前的归档对我们没有用,需要删除;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
2 1 2 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_2.arc
1 1 2 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_2.arc
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.ooooo';
3> backup archivelog all;
4> }
RMAN> list backup;
=========================================================================================================================
三:Rman的恢复
=========================================================================================================================
Rman 恢复
1:完全恢复---datafile
tablespace
database
更改恢复目录
2:不完全恢复--基于时间点的恢复
--基于取消的恢复
===============================
1:完全恢复
===============================
恢复:noarchive 破坏一个文件,或者一个表空间,或者整个数据库 恢复时都需要恢复整个数据库;
archive 完全恢复 :破坏一个文件(system)
一个文件(非 system)
表空间
数据库database ---恢复database,tablespace,datafile
run{
allocate channel d1 type disk;
restore datafile 4; --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
recover datafile 4;
案例场景: datafile文件级别的恢复
1 备份 --->1200
2 update--->1300
3 破坏
4 恢复
=====
db02
=====
conn scott/tiger
update emp set sal=1300 where empno=7369;
commit;
conn sys/oracle as sysdba
shutdown immediate;
oracle@chen db02]$ rm -rf users01.dbf
startup
select * from v$recover_file;
rman target sys/oracle catalog rman/rman@orcl -------catalog数据库必须open,因为写入表空间了
RMAN>run{
allocate channel d1 type disk;
restore datafile 4; --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
recover datafile 4;
}
RMAN>alter database open;
sqlplus
scott/tiger
select empno,ename,sal from emp;
========
具体步骤
========
1:备份
SQL> select name from v$database;
NAME
---------
DB02
SQL> select * from t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
SQL> update t1 set sal=1000 where empno=7369;
1 row updated.
SQL> commit;
SQL> select segment_name,tablespace_name from user_segments;
SEGMENT_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT USERS
EMP USERS
LX_TAB LX_DB02
PK_DEPT USERS
PK_EMP USERS
SALGRADE USERS
T1 LX_DB02
7 rows selected.
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 10:15:01 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/kkk_%s_%p.chen';
3> backup database filesperset 3;
4> }
2:
SQL> conn scott/tiger
Connected.
SQL> update t1 set sal=1300 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
3:破坏
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
4:恢复
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 371617792 bytes
Fixed Size 2228504 bytes
Variable Size 251662056 bytes
Database Buffers 113246208 bytes
Redo Buffers 4481024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> restore datafile 5;
4> recover datafile 5;
5> }
RMAN> alter database open;
database opened
[oracle@chen ~]$ rlwrap sqlplus
SQL> select name from v$database;
NAME
---------
DB02
SQL> conn scott/tiger
Connected.
SQL> select * from t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
二:表空间级别的恢复
run{
allocate channel d1 type disk;
restore tablespace app_data; ----数据恢复到t1
recover tablespace app_data; ----通过归档将数据由t1推到t2
}
案例场景: datafile文件级别的恢复
1 备份 --->1200
2 update--->1300
3 破坏
4 恢复
alter tablespace app_data offline;
rm -rf app_data01.dbf
alter tablespace app_data online; --失败
RMAN>run{
allocate channel d1 type disk;
restore tablespace app_data; ----数据恢复到t1
recover tablespace app_data; ----通过归档将数据由t1推到t2
}
alter tablespace app_data online;
select empno,ename,sal from scott.emp;
==========
具体步骤
==========
1:备份
之前已经有一个全备了
2:1300
3:破坏
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
LX_DB02
6 rows selected.
SQL> alter tablespace lx_db02 offline;
Tablespace altered.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
4:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> restore tablespace lx_db02;
4> recover tablespace lx_db02;
5> }
SQL> alter tablespace lx_db02 online;
Tablespace altered.
SQL> select * from scott.t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
==================
更改恢复目录
==================
如果目标数据库的恢复目录所在的磁盘损坏,数据不能恢复到指定目录,如何解决?
将指定目录转到其他的目录下;
run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf';
restore tablespace app_data;
switch datafile 4; ----------------------------------如果有多个文件可以写成switch datafile all;
recover tablespace app_data;
alter tablespace app_data offline;
rm -rf app_data01.dbf
alter tablesapce app_data online; ---失败
rman>run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf'; ---目录tbs应该提前创建
restore tablespace app_data;
switch datafile 4;
recover tablespace app_data;
}
sql>altert tablespace app_data online;
select * from emp where empno=7369;
=========
具体步骤
=========
[oracle@chen oradata]$ mkdir tbs
[oracle@chen oradata]$ ls
bak db02 orcl tbs
1:破坏
SQL> alter tablespace lx_db02 offline;
Tablespace altered.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
2:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> set newname for datafile 5 to '/u01/app/oracle/oradata/tbs/lx_dbccc.dbf';
4> restore tablespace lx_db02;
5> switch datafile 5; --------更改控制文件的结构
6> recover tablespace lx_db02;
7> }
SQL> alter tablespace lx_db02 online;
Tablespace altered.
SQL> select * from scott.t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
==========
全部恢复
==========
所以的数据文件都坏了?
全部恢复
run{
allocate channel d1 type disk;
restore database; ---------将打包的数据分发出来
recover database; ---------利用归档改数据
}
shutdown immediate;
rm -rf *.dbf
startup
exit
rman target sys/oracle catalog rman/rman@orcl
RMAN>run{
allocate channel d1 type disk;
restore database; ---------将打包的数据分发出来
recover database; ---------利用归档改数据
}
alter database open;
select empno,ename,sal from scott.emp where empno=7369;
===============
Rman不完全恢复
===============
Rman
不完全恢复:基于时间点的恢复 (用户误操作) --------预防:1对用户做培训 2对用户权限做限制
基于取消的恢复 (归档或当前日志被破坏)
基于备份的控制文件 (相当与基于时间点的恢复)
Incomplete Recovery of a Database Using RMAN
1 Mount the database.
2 Allocate multiple channels for parallelization.
3 Restore all datafiles.
4 Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5 Open the database by using RESETLOGS.
6 Perform a whole database backup.
=============
les 15
=============
一个管道就是一个server进程,多个管道并行工作速度快
Incomplete Recovery of a Database Using RMAN
1. Mount the database.
2. Allocate multiple channels for parallelization.
3. Restore all datafiles.
4. Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5. Open the database by using RESETLOGS.
6. Perform a whole database backup.
==============
1:基于时间点
==============
1:
SQL> select sysdate from dual;
SYSDATE
-------------------
2014-06-24 11:55:03
2:误删除
SQL> conn scott/tiger
Connected.
Session altered.
SQL> drop table t1 purge;
Table dropped.
SQL> select * from t1;
select * from t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
3:恢复
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4:
SQL> startup mount
5:
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
connected to target database: DB02 (DBID=1598433958, not open)
connected to recovery catalog database
RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> set until time = '2014-06-24 11:55:03';
5> restore database;
6> recover database;
7> }
6:
SQL> alter database open resetlogs;
Database altered.
SQL> select * from scott.t1;
=======
老师案例
=======
2014-06-24:12:04:06 7369----1300
update sghr.emp set sal=1400 where empno=7369;
commit;
drop table sghr.emp purge;
shutdown immediate
备份 -----用OS命令做一个全备(保留现场)
startup mount -----用rman必须mount
RMAN>run{
allocate channel d1 type disk;
set until time = '2014-06-24:12:04:06';
restore database;
recover database;
alter database open resetlogs;
}
RMAN>reset database;
sqlplus
select * from all_users;
select empno,ename,sal from sghr.emp;
2:基于取消
RMAN> list copy;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
163 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_14.arc
164 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_14.arc
584 1 15 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc
608 1 16 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc
SQL> select * from emp001 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
SQL> alter system switch logfile;
System altered.
RMAN> list copy;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
163 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_14.arc
164 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_14.arc
584 1 15 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc
608 1 16 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc
720 1 1 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_1_9tlly347_.arc
SQL> conn scott/tiger
Connected.
Session altered.
SQL> drop table emp001 purge;
Table dropped.
SQL> select * from emp001;
select * from emp001
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@chen oradata]$ cd /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/
[oracle@chen 2014_06_24]$ rm -rf o1_mf_1_1_9tlly347_.arc
SQL> startup mount
ORACLE instance started.
Total System Global Area 371617792 bytes
Fixed Size 2228504 bytes
Variable Size 251662056 bytes
Database Buffers 113246208 bytes
Redo Buffers 4481024 bytes
Database mounted.
=========================================================================================================================
四:Rman的级别
=========================================================================================================================
备份级别:0,1,2,3,4
Making Incremental Backups:同一级别和级别比他低的增量备份;
Cumulative Incremental Backup(累计增量备份):同一级别和级别比他低的累计备份;
完全备份:所有的block都备份出来
增量备份:备份上一次改变的block
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|----->
0 2 2 2 1 2 0 0
全备 增量备份
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|-----> -----占用存储空间少,备份快,但恢复慢
0 1 1 1 1 1 1 0
全备 增量备份
每天的备份
cumulative累积 同一级别和比他级别低的累计备份
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|----->
0 1c 1c 1c 1c 1c 1c 0
例如:
一个月进行一次级别0的备份
每周进行一次级别1的备份
每天进行一次级别2的备份
每小时进行一次级别3的备份
每分钟进行一次级别4的备份
差异型的增量备份
累积型的增量备份
=======
级别零:
=======
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 0 database filesperset 3;
}
[oracle@chen bak]$ ls
db_18_1.bus db_24_1.chen db_29_1.bus01 db_s%_1.chen
db_19_1.bus db_25_1.chen db_30_1.bus01 lx_chen00.dbf
db_20_1.bus db_26_1.chen db_31_1.bus01
SQL> conn scott/tiger
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
LX_TAB TABLE
SALGRADE TABLE
SQL> update lx_tab set sal=1000 where empno=7369; ---改变一个数,看是否能增量备份
1 row updated.
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 0 database filesperset 3;
}
[oracle@chen bak]$ ll
总用量 3082264
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:35 db_31_1.bus01
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:37 db_34_1.bus01
-rw-r-----. 1 oracle oinstall 10240 6月 23 14:45 db_s%_1.chen
-rw-r-----. 1 oracle oinstall 5251072 6月 23 15:09 lx_chen00.dbf
说明级别0的并不是增量备份而是全备份;
=======
级别一:
=======
SQL> conn scott/tiger
Connected.
SQL> update lx_tab set sal=1200 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 1 database filesperset 3;
}
[oracle@chen bak]$ ll
总用量 3092328
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:35 db_31_1.bus01
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:37 db_34_1.bus01
-rw-r-----. 1 oracle oinstall 188416 6月 23 15:47 db_35_1.bus01 ---增量备份
-rw-r-----. 1 oracle oinstall 319488 6月 23 15:47 db_36_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:47 db_37_1.bus01
=========================================================================================================================
五:Rman备份的删除
=========================================================================================================================
删除 ------------image copy
===========
[oracle@chen oradata]$ ls
bak db02 db_archive01.arc orcl
[oracle@chen oradata]$ rm -rf db_archive01.arc
RMAN> crosscheck copy;
validation failed for archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388
validation succeeded for archived log
archived log file name=/home/oracle/db02_archive1/db02_1851001130_11.arc RECID=19 STAMP=851018141
RMAN> delete expired copy;
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
21 1 11 X 23-JUN-14
Name: /u01/app/oracle/oradata/db_archive01.arc
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388
Deleted 1 EXPIRED objects
=========
删除 ---------backup set
=========
[oracle@chen bak]$ ls
control01.ctl db_32_1.bus01 db_35_1.bus01 db_37_1.bus01 lx_dd01.dbf
control2.ctl db_33_1.bus01 db_36_1.bus01 lx_02.dbf
[oracle@chen bak]$ rm -rf *
RMAN> list backup;
RMAN> crosscheck backup; ---检查保留策略
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_32_1.bus01 RECID=26 STAMP=851009829
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_33_1.bus01 RECID=27 STAMP=851009844
......
RMAN> delete expired backup;
RMAN> list backup;
specification does not match any backup in the repository
删除陈旧的备份
RMAN> delete obsolete;
删除过期的(如:用操作系统命令删除的备份就会变成过期的)
RMAN> delete expired backup;
查看坏块的信息
SQL> desc v$copy_corruption 映像集
SQL> desc v$backup_corruption 备份集
二:Rman的备份
三:Rman的恢复
四:Rman的级别
五:Rman备份的删除
=========================================================================================================================
一:Rman的搭建
=========================================================================================================================
========================================
les 09 oracle recover manager ---rman
========================================
1:物理备份
2:只备份有数据的部分,不备份没有分配的exents ----而如果用操作系统命令备份会将整个段(包括段里所有的区)都备份
3:可以增量备份
4:并行
5:可以检查块(如果有坏块能检测出来)
6:打包
7:支持磁带(带库) (如果不用rman,想把数据备份到磁带上,需要先备份到磁盘上,然后在通过tar命令把磁盘上的数据导到磁带上)
8:可以不用知道结构和备份信息(如果用操作系统命令备份,需要知道结构和备份信息)
为什么有这么多优点?
rman备份是block级别的备份(rman是oracle生产的工具,所以oracle公司知道oracle数据库的block结构)
rman备份是服务器的备份,用oracle server进程可以知道block的格式
Rman在oracle8.0就已经存在;
Rman
|
|
|
目标DB(装数据)------------------------------> 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data | :app_data在/u01/app/oracle/oradata/db02
|
|
|
磁盘(磁带)(装备份信息)
不建议将目标DB和恢复目录DB放在同一个数据库里,同一个机器里;
可以将放在另一个库里
可以放在目标数据库的控制文件里(省钱),目标数据库只要能mount就能查看恢复目录信息;
数据在控制文件中保存的时间由参数 control_file_record_keep_time
SQL> show parameter control_file_record_keep_time
NAME TYPE VALUE
------------------------------------ ----------- ----------
control_file_record_keep_time integer 7 ----------------只能保存7天;
一周做一次全备
每天备一次增量备份
如果某一天数据库损坏了,需要用一周前的全备和一周以后每一天的增量备份;
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
11g Enterprise Edition ------企业版oracle默认有Rman
连接:
Rman 连接目标数据库时数据库必须是启动的,因为是用oracle server进程连接的;控制文件必须是打开的
rman target sys/oracle nocatalog -------------目标数据库的控制文件作为恢复目录数据库;
RMAN>list backup;
RMAN>report schema; --------结构信息
filesperset 5 ---每5个文件打成一个包
run(要成功一起成功,要失败都失败,相当与一个事务)
恢复目录DB:结构信息
备份信息
管道:手工分配(8.0,8i) allocate channel 1 type disk[会启动一个server进程,配多个管道会多个进程共同完成,并行]
自动分配(9i以后) configure channel device type disk format '/db01/backup/%u';
恢复目录DB位置:1 目标数据库的控制文件里
2 另一个数据库
=======================
1 目标数据库的控制文件里
=======================
RMAN> show all
2> ;
RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters are successfully stored
RMAN> show all;
RMAN configuration parameters for database with db_unique_name DB02 are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2; ------------冗余的改为两份
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/dbs/snapcf_db02.f'; # default
==================================================
les 17 Recovery Catalog Creation and Maintenance
==================================================
=========================
2 恢复目录数据库为另一个数据库
=========================
恢复目录数据库存储的文件
1 备份信息:数据文件和归档重做日志的备份
2 结构 :目标数据库的结构信息
3 常用的脚本
一个恢复目录数据库可以管多个数据库
目标数据库和恢复目录数据库可以互相做
Rman
|
DB1 ------ |
| |
目标DB(装数据)------------------------------> 恢复目录DB(装目标DB的结构,装目标DB的备份信息)
app_data | | :app_data在/u01/app/oracle/oradata/db02
DB3 ------ |
|
|
磁盘(磁带)(装备份信息)
1:创建数据库 orcl(恢复目录数据库)
2:创建表空间Rmantbs
3:创建用户Rman
4:对用户授权
5:用Rman连接 RMAN>
6:创建表(存储目标数据库的信息)
7:注册
8:维护
2:Create tablespace rmantbs datafile '/u01/oracle/oradata/orcl/rmantbs01.dbf' size 200M;
3:create user rman identified by rman
default tablespace rmantbs
temporary tablespace temp;
4:grant connect,resource to rman;
grant recovery_catalog_owner to rman;
5:lsnrctl status
sqlplus
scott/tiger@orcl
6:
export ORACLE_HOME=db02
rman target sys/oracle catalog rman/rman@orcl
RMAN>create catalog tablespace "RMANTBS";
=====
orcl
=====
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
EXAMPLE
LX_CHEN
RMANTBS ------------创建成功
8 rows selected.
7:
RMAN>register database; --------将目标数据库的信息注册到catalog数据库里
catalog 数据库
select * from rc_database;
=============
具体步骤
=============
目标数据库:db02
catalog数据库:orcl
如何启动第二个数据库?
[oracle@chen oradata]$ cd $ORACLE_HOME/dbs
[oracle@chen dbs]$ vim initorcl.ora
#*.memory_target=771751936
*.memory_target=371751936
[oracle@chen dbs]$ export ORACLE_SID=orcl
[oracle@chen dbs]$ rlwrap sqlplus
SQL> select name from v$database;
NAME
---------
ORCL
[oracle@chen ~]$ lsnrctl
LSNRCTL> status
Services Summary...
Service "db02" has 1 instance(s).
Instance "db02", status READY, has 1 handler(s) for this service...
Service "db02XDB" has 1 instance(s).
Instance "db02", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
=====
1:orcl
=====
2:
SQL> create tablespace rmantbs datafile '/u01/app/oracle/oradata/orcl/rmantbs01.dbf' size 100M;
Tablespace created.
3:
SQL> create user rman identified by rman
2 default tablespace rmantbs
3 temporary tablespace temp;
User created.
4:
SQL> grant connect,resource to rman;
Grant succeeded.
SQL> grant RECOVERY_CATALOG_OWNER to rman;
Grant succeeded.
5:[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 08:49:14 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database
RMAN>
6:
RMAN> create catalog tablespace "RMANTBS";
recovery catalog created
7:
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
=====
orcl
=====
SQL> conn rman/rman
SQL> select * from tab;
.....
142 rows selected.
=====
db02
=====
create script Level0Backup {
backup
incremental level 0
format ‘/u01/db01/backup/%d_%s_%p’
filesperset 5
(database include current controlfile);
sql ‘alter system archive log current’;
=====
orcl
=====
conn rman/man
SQL> select * from rc_stored_script;
=========================================================================================================================
二:less 11 RMAN Backups
=========================================================================================================================
1:Image copy
2:Backup set ---可以直接写入磁盘或磁带
---数据文件可以增量备份,也可以全备
---不备份没有使用的块
Backup Piece:
A backup piece is a file in a backup set.
A backup piece can contain blocks from more than one datafile.
Backup Piece Size
Backup piece size can be limited as follows:
==============
1:Image copy
==============
备份:1 备份数据文件
2 备份归档日志
3 备份控制文件
https://localhost:1158/em
======
db02
======
SQL> set linesize 100
SQL> col file_name for a50
SQL> select file_name,file_id from dba_data_files;
FILE_NAME FILE_ID
-------------------------------------------------- ----------
/u01/app/oracle/oradata/db02/users01.dbf 4
/u01/app/oracle/oradata/db02/undotbs01.dbf 3
/u01/app/oracle/oradata/db02/sysaux01.dbf 2
/u01/app/oracle/oradata/db02/system01.dbf 1
/u01/app/oracle/oradata/db02/lx_db02.dbf 5
一:备份数据文件
[oracle@chen ~]$ rman target sys/oracle@db02 catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk; -------在磁盘上创建一个管道
3> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_dd01.dbf';
4> }
RMAN> list copy;
specification does not match any control file copy in the repository
specification does not match any archived log in the repository
List of Datafile Copies
=======================
Key File S Completion Time Ckp SCN Ckp Time
------- ---- - --------------- ---------- ---------------
2 5 A 23-JUN-14 1020184 23-JUN-14
Name: /u01/app/oracle/oradata/bak/lx_dd01.dbf
Tag: TAG20140623T174948
[oracle@chen bak]$ ls
db_32_1.bus01 db_35_1.bus01 db_37_1.bus01
db_33_1.bus01 db_36_1.bus01 lx_dd01.dbf
RMAN>report schema;
二:备份归档文件
run{
allocate channel d1 type disk; -------在磁盘上创建一个管道
copy archivelog '/u01/oracle/oradata/db02/archive2/app/db02_111.arc' to '/u01/....../bak/...arc';
RMAN> run
2> {
3> allocate channel d1 type disk;
4> copy archivelog '/home/oracle/db02_archive1/db02_1851001130_11.arc' to '/u01/app/oracle/oradata/db_archive01.arc';
5> }
三:备份控制文件
RMAN> run{
2> allocate channel d1 type disk;
3> copy current controlfile to '/u01/app/oracle/oradata/bak/control01.ctl';
4> }
RMAN> list copy of controlfile;
List of Control File Copies
===========================
Key S Completion Time Ckp SCN Ckp Time
------- - --------------- ---------- ---------------
3 A 23-JUN-14 1020865 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control01.ctl
Tag: TAG20140623T180435
[oracle@chen bak]$ ls
control01.ctl db_33_1.bus01 db_36_1.bus01 lx_dd01.dbf
db_32_1.bus01 db_35_1.bus01 db_37_1.bus01
三个拷贝一起执行
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
copy datafile 4 to /u01/oracle/oradata/bak/app_data01.dbf',
archivelog '/u01/oracle/oradata/db02/archive2/db02_111.arc' to '/u01/....../bak/...arc',
current controlfile to '/u01/oracle/oradata/bak/control.ctl';
RMAN> run{
2> allocate channel d1 type disk;
3> allocate channel d2 type disk;
4> copy datafile 5 to '/u01/app/oracle/oradata/bak/lx_02.dbf';
5> copy current controlfile to '/u01/app/oracle/oradata/bak/control2.ctl';
6> }
RMAN> list copy of controlfile;
List of Control File Copies
===========================
Key S Completion Time Ckp SCN Ckp Time
------- - --------------- ---------- ---------------
5 A 23-JUN-14 1021404 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control2.ctl
Tag: TAG20140623T181334
3 A 23-JUN-14 1020865 23-JUN-14
Name: /u01/app/oracle/oradata/bak/control01.ctl
Tag: TAG20140623T180435
数据文件少时(20个文件一下)用image copy;
====================
二:backup set 备份集
====================
可以将文件打包,多个文件打包成一个文件,易于管理,操作系统备份办不到;
只备份有数据的地方,不备份没有分配的extents; ---(因为他是基于block的备份)
可以将数据备份到磁带上;
资源限制;(I/O限制)---备份时可以调节所占的I/O
备份集是一个逻辑的概念;
备份出来的数据称为备份片:piece
datafile级别的 :
tablespace级别的 :
database级别的 :
run{
allocate channel d1 type disk;
backup datafile 4 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 5 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 6 format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
上一条命令可以简写:
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
backup datafile 4;
backup datafile 5;
backup datafile 6;
1:备份数据文件 --------只备份有数据的地方,速度快
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db02_%s_%p.chen';
3> backup datafile 5;
4> }
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
32 Full 1.07M DISK 00:00:01 23-JUN-14
BP Key: 32 Status: AVAILABLE Compressed: NO Tag: TAG20140623T184232
Piece Name: /u01/app/oracle/oradata/bak/db02_43_1.chen
List of Datafiles in backup set 32
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
5 Full 1022221 23-JUN-14 /u01/app/oracle/oradata/db02/lx_db02.dbf
备份表空间
SQL> select segment_name,tablespace_name from user_segments;
SEGMENT_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT USERS
EMP USERS
SALGRADE USERS
LX_TAB LX_DB02
T1 LX_DB02
T2 LX_DB02
T3 LX_DB02
T4 LX_DB02
PK_DEPT USERS
PK_EMP USERS
10 rows selected.
run{
allocate channel d1 type disk format '/u01/oracle/oradata/bak/tbs_%s_%p.bus';
backup tablespace app_data filesperset 3; -------每三个文件形成一个文件集
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/ccc_%s_%p.cccs';
3> backup tablespace lx_db02 filesperset 3;
4> }
RMAN> list backup of datafile 4; ------查看datafile4的备份信息,相当与过滤条件where;
RMAN> list backup of tablespace app_data;
[oracle@chen admin]$ rlwrap rman target sys/oracle@orcl nocatalog ---------用目标数据库的控制文件做为目标文件的回复目录数据库
Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jun 23 12:15:49 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1378775808)
using target database control file instead of recovery catalog
RMAN>
====================
备份数据库 ----全备份
====================
database 约等于 datafile
---------------备份数据文件包括当前的控制文件
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.aaa';
3> backup database include current controlfile filesperset 3;
4> }
[oracle@chen bak]$ ls
ccc_44_1.cccs db02_43_1.chen db_45_1.aaa db_46_1.aaa db_47_1.aaa
RMAN> list backup of controlfile;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
36 Full 9.33M DISK 00:00:01 23-JUN-14
BP Key: 36 Status: AVAILABLE Compressed: NO Tag: TAG20140623T185719
Piece Name: /u01/app/oracle/oradata/bak/db_47_1.aaa
Control File Included: Ckp SCN: 1022770 Ckp time: 23-JUN-14
RMAN> list backup;
rman能够备份的有:数据文件,控制文件,归档文件
============
备份控制文件:
============
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.qqq';
3> backup current controlfile;
4> }
自动备份控制文件:
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default -----默认是关闭的
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
============
归档文件的备份
============
RMAN> list copy; ---查看归档模式 只有备份以后的归档对我们才有用,备份之前的归档对我们没有用,需要删除;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
2 1 2 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_2.arc
1 1 2 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_2.arc
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.ooooo';
3> backup archivelog all;
4> }
RMAN> list backup;
=========================================================================================================================
三:Rman的恢复
=========================================================================================================================
Rman 恢复
1:完全恢复---datafile
tablespace
database
更改恢复目录
2:不完全恢复--基于时间点的恢复
--基于取消的恢复
===============================
1:完全恢复
===============================
恢复:noarchive 破坏一个文件,或者一个表空间,或者整个数据库 恢复时都需要恢复整个数据库;
archive 完全恢复 :破坏一个文件(system)
一个文件(非 system)
表空间
数据库database ---恢复database,tablespace,datafile
run{
allocate channel d1 type disk;
restore datafile 4; --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
recover datafile 4;
案例场景: datafile文件级别的恢复
1 备份 --->1200
2 update--->1300
3 破坏
4 恢复
=====
db02
=====
conn scott/tiger
update emp set sal=1300 where empno=7369;
commit;
conn sys/oracle as sysdba
shutdown immediate;
oracle@chen db02]$ rm -rf users01.dbf
startup
select * from v$recover_file;
rman target sys/oracle catalog rman/rman@orcl -------catalog数据库必须open,因为写入表空间了
RMAN>run{
allocate channel d1 type disk;
restore datafile 4; --------相当与解压文件集,数据到T1时刻,其他文件在T2时刻,需要由归档或日志补齐
recover datafile 4;
}
RMAN>alter database open;
sqlplus
scott/tiger
select empno,ename,sal from emp;
========
具体步骤
========
1:备份
SQL> select name from v$database;
NAME
---------
DB02
SQL> select * from t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
SQL> update t1 set sal=1000 where empno=7369;
1 row updated.
SQL> commit;
SQL> select segment_name,tablespace_name from user_segments;
SEGMENT_NAME TABLESPACE_NAME
-------------------------------------------------- ------------------------------
DEPT USERS
EMP USERS
LX_TAB LX_DB02
PK_DEPT USERS
PK_EMP USERS
SALGRADE USERS
T1 LX_DB02
7 rows selected.
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
Recovery Manager: Release 11.2.0.3.0 - Production on Tue Jun 24 10:15:01 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB02 (DBID=1598433958)
connected to recovery catalog database
RMAN> run{
2> allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/kkk_%s_%p.chen';
3> backup database filesperset 3;
4> }
2:
SQL> conn scott/tiger
Connected.
SQL> update t1 set sal=1300 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
3:破坏
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
4:恢复
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.
Total System Global Area 371617792 bytes
Fixed Size 2228504 bytes
Variable Size 251662056 bytes
Database Buffers 113246208 bytes
Redo Buffers 4481024 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> restore datafile 5;
4> recover datafile 5;
5> }
RMAN> alter database open;
database opened
[oracle@chen ~]$ rlwrap sqlplus
SQL> select name from v$database;
NAME
---------
DB02
SQL> conn scott/tiger
Connected.
SQL> select * from t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
二:表空间级别的恢复
run{
allocate channel d1 type disk;
restore tablespace app_data; ----数据恢复到t1
recover tablespace app_data; ----通过归档将数据由t1推到t2
}
案例场景: datafile文件级别的恢复
1 备份 --->1200
2 update--->1300
3 破坏
4 恢复
alter tablespace app_data offline;
rm -rf app_data01.dbf
alter tablespace app_data online; --失败
RMAN>run{
allocate channel d1 type disk;
restore tablespace app_data; ----数据恢复到t1
recover tablespace app_data; ----通过归档将数据由t1推到t2
}
alter tablespace app_data online;
select empno,ename,sal from scott.emp;
==========
具体步骤
==========
1:备份
之前已经有一个全备了
2:1300
3:破坏
SQL> select name from v$tablespace;
NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
USERS
TEMP
LX_DB02
6 rows selected.
SQL> alter tablespace lx_db02 offline;
Tablespace altered.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
4:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> restore tablespace lx_db02;
4> recover tablespace lx_db02;
5> }
SQL> alter tablespace lx_db02 online;
Tablespace altered.
SQL> select * from scott.t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
==================
更改恢复目录
==================
如果目标数据库的恢复目录所在的磁盘损坏,数据不能恢复到指定目录,如何解决?
将指定目录转到其他的目录下;
run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf';
restore tablespace app_data;
switch datafile 4; ----------------------------------如果有多个文件可以写成switch datafile all;
recover tablespace app_data;
alter tablespace app_data offline;
rm -rf app_data01.dbf
alter tablesapce app_data online; ---失败
rman>run{
allocate channel d1 type disk;
set newname for datafile 4 to '/u01/oracle/oradata/db02/tbs/app_data01.dbf'; ---目录tbs应该提前创建
restore tablespace app_data;
switch datafile 4;
recover tablespace app_data;
}
sql>altert tablespace app_data online;
select * from emp where empno=7369;
=========
具体步骤
=========
[oracle@chen oradata]$ mkdir tbs
[oracle@chen oradata]$ ls
bak db02 orcl tbs
1:破坏
SQL> alter tablespace lx_db02 offline;
Tablespace altered.
[oracle@chen db02]$ mv lx_db02.dbf lx_db02.dbf.bak
SQL> alter tablespace lx_db02 online;
alter tablespace lx_db02 online
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/u01/app/oracle/oradata/db02/lx_db02.dbf'
2:恢复
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
RMAN> run{
2> allocate channel d1 type disk;
3> set newname for datafile 5 to '/u01/app/oracle/oradata/tbs/lx_dbccc.dbf';
4> restore tablespace lx_db02;
5> switch datafile 5; --------更改控制文件的结构
6> recover tablespace lx_db02;
7> }
SQL> alter tablespace lx_db02 online;
Tablespace altered.
SQL> select * from scott.t1 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 1300
==========
全部恢复
==========
所以的数据文件都坏了?
全部恢复
run{
allocate channel d1 type disk;
restore database; ---------将打包的数据分发出来
recover database; ---------利用归档改数据
}
shutdown immediate;
rm -rf *.dbf
startup
exit
rman target sys/oracle catalog rman/rman@orcl
RMAN>run{
allocate channel d1 type disk;
restore database; ---------将打包的数据分发出来
recover database; ---------利用归档改数据
}
alter database open;
select empno,ename,sal from scott.emp where empno=7369;
===============
Rman不完全恢复
===============
Rman
不完全恢复:基于时间点的恢复 (用户误操作) --------预防:1对用户做培训 2对用户权限做限制
基于取消的恢复 (归档或当前日志被破坏)
基于备份的控制文件 (相当与基于时间点的恢复)
Incomplete Recovery of a Database Using RMAN
1 Mount the database.
2 Allocate multiple channels for parallelization.
3 Restore all datafiles.
4 Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5 Open the database by using RESETLOGS.
6 Perform a whole database backup.
=============
les 15
=============
一个管道就是一个server进程,多个管道并行工作速度快
Incomplete Recovery of a Database Using RMAN
1. Mount the database.
2. Allocate multiple channels for parallelization.
3. Restore all datafiles.
4. Recover the database by using UNTIL TIME, UNTIL SEQUENCE, or UNTIL SCN.
5. Open the database by using RESETLOGS.
6. Perform a whole database backup.
==============
1:基于时间点
==============
1:
SQL> select sysdate from dual;
SYSDATE
-------------------
2014-06-24 11:55:03
2:误删除
SQL> conn scott/tiger
Connected.
Session altered.
SQL> drop table t1 purge;
Table dropped.
SQL> select * from t1;
select * from t1
*
ERROR at line 1:
ORA-00942: table or view does not exist
3:恢复
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
4:
SQL> startup mount
5:
[oracle@chen ~]$ rlwrap rman target sys/oracle catalog rman/rman@orcl
connected to target database: DB02 (DBID=1598433958, not open)
connected to recovery catalog database
RMAN> run{
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> set until time = '2014-06-24 11:55:03';
5> restore database;
6> recover database;
7> }
6:
SQL> alter database open resetlogs;
Database altered.
SQL> select * from scott.t1;
=======
老师案例
=======
2014-06-24:12:04:06 7369----1300
update sghr.emp set sal=1400 where empno=7369;
commit;
drop table sghr.emp purge;
shutdown immediate
备份 -----用OS命令做一个全备(保留现场)
startup mount -----用rman必须mount
RMAN>run{
allocate channel d1 type disk;
set until time = '2014-06-24:12:04:06';
restore database;
recover database;
alter database open resetlogs;
}
RMAN>reset database;
sqlplus
select * from all_users;
select empno,ename,sal from sghr.emp;
2:基于取消
RMAN> list copy;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
163 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_14.arc
164 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_14.arc
584 1 15 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc
608 1 16 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc
SQL> select * from emp001 where empno=7369;
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
SQL> alter system switch logfile;
System altered.
RMAN> list copy;
specification does not match any datafile copy in the repository
specification does not match any control file copy in the repository
List of Archived Log Copies for database with db_unique_name DB02
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
163 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive1/db02_1851001130_14.arc
164 1 14 A 23-JUN-14
Name: /home/oracle/db02_archive2/db02_1851001130_14.arc
584 1 15 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_15_9tlfr2rg_.arc
608 1 16 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_16_9tlk3cvg_.arc
720 1 1 A 24-JUN-14
Name: /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/o1_mf_1_1_9tlly347_.arc
SQL> conn scott/tiger
Connected.
Session altered.
SQL> drop table emp001 purge;
Table dropped.
SQL> select * from emp001;
select * from emp001
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
[oracle@chen oradata]$ cd /u01/app/oracle/fast_recovery_area/DB02/archivelog/2014_06_24/
[oracle@chen 2014_06_24]$ rm -rf o1_mf_1_1_9tlly347_.arc
SQL> startup mount
ORACLE instance started.
Total System Global Area 371617792 bytes
Fixed Size 2228504 bytes
Variable Size 251662056 bytes
Database Buffers 113246208 bytes
Redo Buffers 4481024 bytes
Database mounted.
=========================================================================================================================
四:Rman的级别
=========================================================================================================================
备份级别:0,1,2,3,4
Making Incremental Backups:同一级别和级别比他低的增量备份;
Cumulative Incremental Backup(累计增量备份):同一级别和级别比他低的累计备份;
完全备份:所有的block都备份出来
增量备份:备份上一次改变的block
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|----->
0 2 2 2 1 2 0 0
全备 增量备份
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|-----> -----占用存储空间少,备份快,但恢复慢
0 1 1 1 1 1 1 0
全备 增量备份
每天的备份
cumulative累积 同一级别和比他级别低的累计备份
t0 t1 t2 t3 t4 t5 t6 t7
-----|------|--------|------|------|------|------|--------|----->
0 1c 1c 1c 1c 1c 1c 0
例如:
一个月进行一次级别0的备份
每周进行一次级别1的备份
每天进行一次级别2的备份
每小时进行一次级别3的备份
每分钟进行一次级别4的备份
差异型的增量备份
累积型的增量备份
=======
级别零:
=======
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 0 database filesperset 3;
}
[oracle@chen bak]$ ls
db_18_1.bus db_24_1.chen db_29_1.bus01 db_s%_1.chen
db_19_1.bus db_25_1.chen db_30_1.bus01 lx_chen00.dbf
db_20_1.bus db_26_1.chen db_31_1.bus01
SQL> conn scott/tiger
Connected.
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
EMP TABLE
LX_TAB TABLE
SALGRADE TABLE
SQL> update lx_tab set sal=1000 where empno=7369; ---改变一个数,看是否能增量备份
1 row updated.
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 0 database filesperset 3;
}
[oracle@chen bak]$ ll
总用量 3082264
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:35 db_31_1.bus01
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:37 db_34_1.bus01
-rw-r-----. 1 oracle oinstall 10240 6月 23 14:45 db_s%_1.chen
-rw-r-----. 1 oracle oinstall 5251072 6月 23 15:09 lx_chen00.dbf
说明级别0的并不是增量备份而是全备份;
=======
级别一:
=======
SQL> conn scott/tiger
Connected.
SQL> update lx_tab set sal=1200 where empno=7369;
1 row updated.
SQL> commit;
Commit complete.
run{
allocate channel d1 type disk format '/u01/app/oracle/oradata/bak/db_%s_%p.bus01';
backup incremental level 1 database filesperset 3;
}
[oracle@chen bak]$ ll
总用量 3092328
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:34 db_29_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:34 db_30_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:35 db_31_1.bus01
-rw-r-----. 1 oracle oinstall 626016256 6月 23 15:37 db_32_1.bus01
-rw-r-----. 1 oracle oinstall 394330112 6月 23 15:37 db_33_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:37 db_34_1.bus01
-rw-r-----. 1 oracle oinstall 188416 6月 23 15:47 db_35_1.bus01 ---增量备份
-rw-r-----. 1 oracle oinstall 319488 6月 23 15:47 db_36_1.bus01
-rw-r-----. 1 oracle oinstall 9797632 6月 23 15:47 db_37_1.bus01
=========================================================================================================================
五:Rman备份的删除
=========================================================================================================================
删除 ------------image copy
===========
[oracle@chen oradata]$ ls
bak db02 db_archive01.arc orcl
[oracle@chen oradata]$ rm -rf db_archive01.arc
RMAN> crosscheck copy;
validation failed for archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388
validation succeeded for archived log
archived log file name=/home/oracle/db02_archive1/db02_1851001130_11.arc RECID=19 STAMP=851018141
RMAN> delete expired copy;
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
21 1 11 X 23-JUN-14
Name: /u01/app/oracle/oradata/db_archive01.arc
Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/u01/app/oracle/oradata/db_archive01.arc RECID=21 STAMP=851018388
Deleted 1 EXPIRED objects
=========
删除 ---------backup set
=========
[oracle@chen bak]$ ls
control01.ctl db_32_1.bus01 db_35_1.bus01 db_37_1.bus01 lx_dd01.dbf
control2.ctl db_33_1.bus01 db_36_1.bus01 lx_02.dbf
[oracle@chen bak]$ rm -rf *
RMAN> list backup;
RMAN> crosscheck backup; ---检查保留策略
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_32_1.bus01 RECID=26 STAMP=851009829
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/u01/app/oracle/oradata/bak/db_33_1.bus01 RECID=27 STAMP=851009844
......
RMAN> delete expired backup;
RMAN> list backup;
specification does not match any backup in the repository
删除陈旧的备份
RMAN> delete obsolete;
删除过期的(如:用操作系统命令删除的备份就会变成过期的)
RMAN> delete expired backup;
查看坏块的信息
SQL> desc v$copy_corruption 映像集
SQL> desc v$backup_corruption 备份集
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29785807/viewspace-1259964/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29785807/viewspace-1259964/