了解一下目录数据库:
•默认情况下,RMAN将备份的元信息保存在控制文件中;
•使用目录数据库替代控制文件,来保存备份的元信息,可以:
–存储更多的历史信息
–可以使用存储RMAN的脚本
–可为所有已注册的目标数据库创建报告
目录数据库和目标数据库的关系
目录数据库创建步骤:
使用oracle图形工具VNC工具 中的dbca 创建数据库:
1.
2.
3.
4.
5.
6.
7.
8.
9
配置数据库:
- 1.创建表空间:
create tablespace rcat_tbs datafile '/home/oracle/rcat_tbs01.dbf' size 50M; - 2.创建用户,能够使用rcat_tbs表空间
create user rcat_owner identified by password; - 3修改用户的默认表空间
alter user rcat_owner default tablespace rcat_tbs; - 4.赋予配额无限制权限
alter user rcat_owner quota unlimited on rcat_tbs - 5.赋予管理权限:
grant recovery_catalog_owner to rcat_owner; - 6.使用rcat_owner登录(RMAN) :
rman catalog rcat_owner/password@rcat - 7.创建catalog(目录):
RMAN>create catalog; - 8.将目标数据库注册到目录数据库中
rman target / catalog rcat_owner@rcat
register database;
备份表空间:
oracle@oracle ~]$ rman target / catalog rcat_owner/password@rcat
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Aug 7 21:45:52 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: RCAT (DBID=755716143) //注册表的ID是一致的
connected to recovery catalog database
RMAN> backup tablespace users;
Starting backup at 07-AUG-18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 08/07/2018 21:46:09
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode //报错是日志模式是非归档模式
解决方案:刚开始我以为是目标数据库的日志模式,查看目标数库的日志模式;
SQL> show user
USER is "SYS"
SQL> archive log list;
SP2-0718: illegal ARCHIVE LOG option
SQL> host clear
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 5
Next log sequence to archive 7
Current log sequence 7
SQL>
备份再次报错;
查看catalog 日志模式:
[oracle@oracle ~]$ . oraenv
ORACLE_SID = [orcl] ? rcat
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle
[oracle@oracle ~]$
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Aug 7 22:06:55 2018
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> archive log list;
Database log mode No Archive Mode //非归档模式
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Current log sequence 4
SQL> shutdown immediate; //关机
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount; //进入mount模式 修改日志为归档模式
ORACLE instance started.
Total System Global Area 535662592 bytes
Fixed Size 1337720 bytes
Variable Size 180356744 bytes
Database Buffers 348127232 bytes
Redo Buffers 5840896 bytes
Database mounted.
SQL> alter database archivelog; //修改指令
Database altered.
SQL> alter database open; //开启数据库
Database altered.
SQL> archive log list;
Database log mode Archive Mode // 日志模式成功次改为归档模式
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 2
Next log sequence to archive 4
Current log sequence 4
再次执行备份:backup tablespace users;
[oracle@oracle ~]$ rman target / catalog rcat_owner/password@rcat
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Aug 7 22:09:36 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: RCAT (DBID=755716143)
connected to recovery catalog database
RMAN> backup tablespace users;
Starting backup at 07-AUG-18
starting full resync of recovery catalog
full resync complete
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=46 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/rcat/users01.dbf
channel ORA_DISK_1: starting piece 1 at 07-AUG-18
channel ORA_DISK_1: finished piece 1 at 07-AUG-18
piece handle=/u01/app/oracle/flash_recovery_area/RCAT/backupset/2018_08_07/o1_mf_nnndf_TAG20180807T220957_fpmb1olp_.bkp tag=TAG20180807T220957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 07-AUG-18 //备份成功
非目录数据库的备份模式则是利用控制文件,进而备份数据文件;
[oracle@oracle ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Aug 7 21:44:04 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1511056695)
RMAN> backup tablespace users;
Starting backup at 07-AUG-18
using target database control file instead of recovery catalog //使用控制文件
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel ORA_DISK_1: starting piece 1 at 07-AUG-18
channel ORA_DISK_1: finished piece 1 at 07-AUG-18
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2018_08_07/o1_mf_nnndf_TAG20180807T214416_fpm8kjls_.bkp tag=TAG20180807T214416 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 07-AUG-18
原因:就是目录数据库的日志模式必须是归档模式,这样操作日志才不会被覆盖。当数据库文件发生丢失断电,即便是内存中脏数据尚未写入dbf文件中,也可以通过操作日志进行恢复,可以完全恢复数据文件,就必须要求目录数据库的日志模式是归档模式;