ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 52428800 bytes disk space from 1073741824 limit
错误是由于Flash Recovery Area 空间不足引起的,
在sql*plus中查看recovery参数
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:/oracle/product/10.2.0/flash
_recovery_area/sun
db_recovery_file_dest_size big integer 1G
recovery_parallelism integer 0
恢复目录大小是1G,剩余空间不够用于备份,所以先修改空间大小
SQL> alter system set db_recovery_file_dest_size=2g scope=both ;
System altered.
更改成功。
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string D:/oracle/product/10.2.0/flash
_recovery_area/sun
db_recovery_file_dest_size big integer 2G
recovery_parallelism integer 0
运行cmd进入命令提示符
进入RMAN
C:/>rman
连接目标数据库
rman> connect target sys/password@sun
连接Recovery Catalog Database, the user who owns the Recovery Catalog schema
rman> connect catalog sys/password@orcl
进行备份
rman> backup database
...
查看备份信息
rman> list backupsets
退出RMAN
rman> exit
/*
或者直接连接目标数据库
C:/rman target sys/password@sun catalog sys/pasword@orcl
*/
设置channel类型,disk,sbt_tape
rman> configure default device type to disk | sbt_tape;
设置并行度
rman> configure device type disk parallelism 4;
设置maxpiecesize 备份集大小,%s和%p会根据back up set number 和 the piece number with the set生成唯一的输出文件名
rman> configure channel device type disk | sbt_tape maxpiecesize 5g format 'ocp10g:%s:%p.bkp‘;
备份数据库, RMAN 默认以备份集方式备份数据库,不会备份空数据块,所以比image copy备份节省空间
rman> backup as compressed backupset database;
设置控制文件controlfile自动备份,备份在Flash Recovery Area以防丢失repository 后,无法找到备份位置
rman> configure controlfile autobackup on;
设置备份优化 the BACKUP command skips backing up files when the identical file has already been backed up to the specified device type.
rman> configure backup optimization on;
查看备份优化设置
rman> show backup optimization;
设置保留策略,每个datafile,archive log, controlfile 都只保留一个副本
rman> configure retention policy redundancy 1;
保留策略,保留 30天以内的备份
rman> configure retention policy to recovery window of 30 days;
回复默认保留策略
rman> configure retention policy clear;
删除过期的备份,obsolete
rman> delete obsolete;
LIST显示已经完成的备份,REPORT显示需要备份的信息。
Command List |
Function |
RMAN>list backup; |
List all your backup set. |
RMAN>list copy; |
List all your image copies. |
RMAN>list backup of database; |
List all whole database backup sets, whether full or incremental. |
RMAN>list backup of datafile 1; RMAN>list backup of tablespace users; |
List the backup sets that include datafile 1 and the backups that include the USERS tablespace. |
RMAN>list backup of archivelog all; |
|
RMAN>list copy of archivelog from time=’sysdate – 7’; |
List all image copies of archive logs generated in the last 7 days. |
RMAN>list backup of archivelog from sequence 1000 until sequence 1050; |
List all backup sets containing archive logs of log switch sequence numbers 1000-1050. |
Command Report |
Function |
RMAN> report schema; |
List the datafiles only(but not the controlfile or archived logs) that make up the database. |
RMAN> report need backup; |
Apply the configured retention policy and list all the datafiles and archive log files that need at least one backup to conform to the policy. |
RMAN> report need backup days 3; |
List all objects that haven’t been backed up for three days. Use this command or the next to ignore the configured retention policy. |
RMAN> report need backup redundancy 3; |
List all files of which there are not at least three bakups. |
RMAN> report schema;
Report of database schema
List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 490 SYSTEM *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
SUN/DATAFILE/O1_MF_SYSTEM_6Z1VFNST_.DBF
2 345 UNDOTBS1 *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
SUN/DATAFILE/O1_MF_UNDOTBS1_6Z1VGFVG_.DBF
3 280 SYSAUX *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
SUN/DATAFILE/O1_MF_SYSAUX_6Z1VG8CK_.DBF
4 5 USERS *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
SUN/DATAFILE/O1_MF_USERS_6Z1VGH49_.DBF
5 100 EXAMPLE *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
SUN/DATAFILE/O1_MF_EXAMPLE_6Z1VLCKW_.DBF
6 10 ORACLE8_DATA *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
ORACLE8/ORACLE8_DATA.DBF
7 150 ORACLE8_DATA *** D:/ORACLE/PRODUCT/10.2.0/ORADATA/SUN/
ORACLE8/ORACLE8_DATA1.DBF
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1 29 TEMP 32767 D:/ORACLE/PRODUCT/10.2.0/ORADATA/
SUN/SUN/DATAFILE/O1_MF_TEMP_6Z1VKQ71_.TMP
2 10 ORACLE8_TEMP 10 D:/ORACLE/PRODUCT/10.2.0/ORADATA/
SUN/ORACLE8/ORACLE8_TEMP.DBF
---------------------------------------------------------------
某个文件的备份
datafile
RMAN>run{
backup as compressed backupset
format 'D:/oracle/product/10.2.0/flash_recovery_area/sun/backupset/file5.bus'
datafile 5;}
tablespace
RMAN>run{
backup as compressed backupset
format 'D:/oracle/product/10.2.0/flash_recovery_area/sun/backupset/%U.dbf'
tablespace users;}
current controlfile
RMAN> run{
backup as compressed bakupset
format 'D:/oracle/product/10.2.0/flash_recovery_area/sun/backupset/%U.ctl'
current controlfile;}
--------------------------------------------------image copies
RMAN>backup as copy database;
RMAN> backup as copy archivelog all delete all input;
----------------------------tags for backup sets and image copies
// a tag is a logical name used to reference a backup set or a set of image copies. Whenever a backup set or image copy is made ,it is assigned a tag. you can use LIST BACKUPSET command to see it.
run {
backup as compressed backupset
tablespace system tag=dd_backup;}
生成的备份文件名是自动生成的,使用List backupset命令查看备份信息,可以看到刚刚生成的备份的tag是DD_BACKUP
run{
backup as compressed backupset
format 'D:/oracle/product/10.2.0/flash_recovery_area/sun/sun/backupset/'%U.dbf'
tablespace system tag=dd_backup;}
格式化输出文件
删除标记
RMAN> delete backupset tag=dd_backup;
run{
delete backupset tag monthly;
backup as backupset
database tag=monthly;}
----------------------------incremental backup
incremental backups apply only to datafile backups. --backupset
RMAN> backup incremental level 0 database;
RMAN> backup incremental level 1 database; ---default differential backup, backup the blocks
RMAN>backup incremental level 1 cumulative database; --cumulate the change since last level 0 backup
----------------------------combining incremental backups and image copies
RMAN> backup as copy incremental level 0
database tag db_whole_copy;
run{
backup incremental level 1
for recover of copy with tag db_whole_copy
database tag db_copy_upd;
recover copy of database with tag db_whole_copy;
delete backupset tag db_copy_upd;}
??????????????