SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

1,使用全备份之后的还原不需要建立表空间。

2,归档日志备份之后,使用delete all input,在backup database plus achivelog之后,会在完成备份之后自动删除归档目录中已备份的归档日志。

归档之后,查看已备份归档日志片段

 

4,问何涛我们的list backup of database

5,问何涛oracle的备份保留策略  report obsolete

2014-11-14 9:06

大动作:删除n年积累的归档日志

以下参考

http://blog.csdn.net/linlzk/article/details/5269186

使用list archivelog all 查询,不知道为什么只有939-994 56个归档

 2014-11-18 14:38

查看归档日志占用总空间百分比;

select * from V$FLASH_RECOVERY_AREA_USAGE;

归档的默认路径被修改,这样可以不用担心归档日志占满

参考:http://www.cnblogs.com/sumsen/archive/2013/01/13/2858914.html

SYS@ncbeta>alter system set log_archive_dest_1='location=D:\xs\JSCEarlog'; --目录,不用加scope,改了之后立即生效

修改之后归档日志就产生在上述log_archive_dest_1='location=D:\xs\JSCEarlog,db_recovery_file_dest 就不再产生。

SYS@ncbeta>alter system set log_archive_format='JSCE_%s_%t_%r.ARC' scope=spfile; --格式,10g里面需要增加scope=spfile

%s: 日志序列号,%S: 日志序列号(带有前导0),%t: 重做线程编号,%T: 重做线程编号(带有前导0),%a: 活动ID号,%d: 数据库ID号,%r RESETLOGS的ID值.

 看看archiv log所在位置

SQL> show parameter log_archive_dest;

一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence

参考:http://blog.chinaunix.net/uid-17240229-id-306718.html

之后(以下来自上面的参考)

转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件(比如360以后的)

注意:
在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。

9. 检查一些无用的archivelog
RMAN> crosscheck archivelog all;

10. 删除过期的归档
RMAN> delete expired archivelog all;

delete archivelog until time 'sysdate-1' ; 删除截止到前一天的所有archivelog

扩展:

两个概念

delete expired删除的是那些本来RMAN以为存在但是实际上在磁盘或者磁带上已经被删除了的信息,删除的只是RMAN资料库中的记录;

delete obsolete则删除旧于备份保留策略定义的备份数据同时也更新RMAN资料库以及控制文件。

那么再形象一点儿解释的话,就是“在不在”和“要不要”的区别。expired是不在了,obsolete是不要了。

 RETENTION POLICY TO REDUNDANCY 3 对归档日志文件的备份集是有效的。过程如下:
1> 进行备份策略设置:
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/wyd/backup/%F';
2> 进行备份操作(总共备份5次,即重复执行以下命令5次,根据先前设置的3次,所以report obsolete会提示前2次是可以被废弃删除的):
backup database format '/wyd/backup/fulbak_%d_%T_%U' plus archivelog delete all input format '/wyd/backup/arcbak_%d_%T_%U';

 

目前正式环境的rman配置

 每个参数的说明:http://blog.chinaunix.net/uid-7509213-id-2050766.html

1.configure retention policy to redundancy 1: 
是用来决定那些备份不再需要了,它一共有三种可选项,分别是
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;
第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。

第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。

第三种不需要保持策略,clear将恢复回默认的保持策略。

一般最安全的方法是采用第二种保持策略。

2.CONFIGURE BACKUP OPTIMIZATION OFF
默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。
3.Configure default device type to disk:
是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘
磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;

4.CONFIGURE CONTROLFILE AUTOBACKUP OFF
强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。

5.CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'
是配置控制文件的备份路径和备份格式

6.CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
是配置数据库设备类型的并行度。

7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。

8.CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1
是设置数据库的归档日志的存放设备类型

9.CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE… SNCFTEST.ORA'
是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。

10.CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
是配置备份文件的备份路径和备份格式

CONFIGURE CHANNEL DISK CLEAR; 用于清除上面的信道配置

CONFIGURE EXCLUDE FOR TABLESPACE <tablespace> [CLEAR]; 此命令用于将指定的表空间不备份到备份集中, 此命令对只读表空间是非常有用的。
--------------
1.将备份文件存储到指定路径,如 e:\backupb
   configure channel device type disk format 'e:\backupb\%d_db_%u';
后面的%d_db_%u是存储格式
2.我们也可以单独指定control file 存储在另一个路径:如 e:\backupcontrol
configure controlfile autobackup format for device type disk to 'e:\backupcontrol\%F';
后面的%F是存储格式
================
RMAN中常用configure命令2007-06-21 15:37
1 显示当前的配置信息
===========================
1.01 RMAN> show all;
1.02 查询RMAN设置中非默认值:
    SQL> select name,value from v$rman_configure;
2. 常用的configure选项
===========================
2.01 保存策略 (retention policy)
   configure retention policy to recovery window of 3 days;
   configure retention policy to redundancy 3;
   configure retention policy clear;
2.02 备份优化 backup optimization
   configure backup optimization on;
   configure backup optimization off;
   configure backup optimization clear;
2.03 默认设备 default device type
   configure default device type to disk;
   configure default device type to stb;
   configure default device type clear;
2.04 控制文件 controlfile
   configure controlfile autobackup on;
   configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf_%F';
   configure controlfile autobackup clear;
   configrue controlfile autobackup format for device type disk clear;
   configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';
   configrue snapshot controlfile name clear;
2.05 并行数(通道数) device type disk|stb pallelism n;
   configure device type disk|stb parallelism 2;
   configure device type disk|stb clear;
       configure channel device type disk format 'e/:rmanback_%U';
       configure channel device type disk maxpiecesize 100m
   configure channel device type disk rate 1200K
        configure channel 1 device type disk format 'e/:rmanback_%U';
        configure channel 2 device type disk format 'e/:rmanback_%U';
        configure channel 1 device type disk maxpiecesize 100m
2.06 生成备份副本 datafile|archivelog backup copies
   configure datafile backup copies for device type disk|stb to 3;
   configure archivelog backup copies for device type disk|stb to 3;
   configure datafile|archivelog backup copies for device type disk|stb clear
   BACKUP DEVICE TYPE DISK DATABASE
    FORMAT '/disk1/backup/%U', '/disk2/backup/%U', '/disk3/backup/%U';
2.07 排除选项 exclude
   configure exclude for tablespace 'users';
   configrue exclude clear;
2.08 备份集大小 maxsetsize
   configure maxsetsize to 1G|1000M|1000000K|unlimited;
   configure maxsetsize clear;
2.09 其它选项 auxiliary
   CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
   CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
   CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
   CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
   -
   CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR; 
---------------------------
Rman的format格式中的%
%c 备份片的拷贝数 
%d 数据库名称 
%D 位于该月中的第几天 (DD) 
%M 位于该年中的第几月 (MM) 
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为
日期,QQ是一个1-256的序列 
%n 数据库名称,向右填补到最大八个字符 
%u 一个八个字符的名称代表备份集与创建时间 
%p 该备份集中的备份片号,从1开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c 
%s 备份集的号 
%t 备份集时间戳 
%T 年月日格式(YYYYMMDD)

 18:12 更新

测试账套测试

1,更改归档模式

2,更改归档日志文件存放目录

SYS@nctest>alter system set log_archive_dest_1='location=D:\oratestd';

和格式

SYS@nctest>alter system set log_archive_format='nctest_%s_%t_%r.ARC' scope=spfile;

 2014-11-19 10:48 更新

执行SYS@nctest>alter system archive log current; 

手工切换归档,最后一条

不明白为什么昨天晚上十点多的0001文件怎么搞的

》更改rman的控制文件自动更新

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
已成功存储新的 RMAN 配置参数

 

更改备份的保留策略

【第二种redundancy 是为了保持可以恢复的最新的2份数据库备份,任何超过最新2份的备份都将被标记为redundancy。它的默认值是1份。】

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

新的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
已成功存储新的 RMAN 配置参数

更改备份路径


说明:这个参数不是在show all中,需要手工填写

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\oratestd\rmand\%D%U%T';

新的 RMAN 配置参数:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:\oratestd\rmand\%D%U%T';
已成功存储新的 RMAN 配置参数

更改控制文件的存储路径(直接抄写show all的)

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\oratestd\rmanc\%F';

新的 RMAN 配置参数:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'D:\oratestd\rmanc\%F';
已成功存储新的 RMAN 配置参数

更改之后

下面重点对rman备份数据库时并同时归档日志的操作

RMAN> backup database plus archivelog delete all input;

当你使用delete all input参数之后,就会删除备份的归档日志。
好神奇的东西,在rman备份的时候我看归档日志目录,归档已经删除

已经成功

 为了测试保留策略(冗余2)继续做 backup database plus archivelog delete all input;

第二次完成

再做一次

 

插入:这个时候问digoes,他让我设置策略

做第三次rman全备完成

备份文件

可以看到最早的一个备份文件过期,其余是最早的4个数据文件过期(11:35之前产生)

 
 删除过期的备份文件
RMAN> delete obsolete;
 
13:51更新
digoes网友告诉我的:
 delete noprompt archivelog all completed before 'sysdate-7';
注:
 noprompt  不用确认 
就是 手动输入yes & no
暂无下文(digoes忙)
网上的:
考虑到备份全部归档会浪费大量磁盘空间,也没有这个必要,我们可以在RMAN备份前,先删除一部分归档,使归档备份集可以小一点,在磁盘空间比较紧张的情况下尤为需要注意,删除归档,可以使用以下的命令:
--删除7天前归档 RMAN> delete noprompt archivelog all completed before 'sysdate-7'; 或 RMAN> delete noprompt archivelog until time 'sysdate-7';
删除完以后,记得crosscheck一下,再把失效的归档日志记录从控制文件中去掉
RMAN> crosscheck archivelog all; RMAN> delete noprompt expired archivelog all;
上面的文字待验证
 考虑到下面的文章:
 今天在CU上看到有人问一个问题:rman备份后为什么要同时备份归档日志呢,既然rman是物理备份,所有数据已经都备份,再次备份归档日志何用?
    思考了一下,认为有必要记录一下为什么要备份归档日志:
    其实rman备份开始之前的归档是没有用的,可以删除,但是不能在rman备份之前就删除,因为rman有可能备份失败,可以在rman备份成功之后删除之。
    rman备份是一种物理的备份,它直接去读取数据块,因此rman是块级别的备份。从备份的那个时间点开始rman将锁定此刻的数据文件信息,也就是说只是备份数据文件到此刻的信息为之。
    但是rman并不锁定数据文件的使用,也就是说rman的备份,不是数据库一致性状态的备份,由于rman备份是块级别的,它只备份控制文件中已经存在的数据块,同时数据库还在运行之中,那么就有可能会出现某些已经提交的操作,但是dbwn还没有写入数据文件,或者已经被rman备份过的数据块,又重新被修改,等等,
    这些信息rman备份都不会记录,也是rman无法记录的。但是记录这些信息的是redo file,所以在rman完毕建议马上执行日志切换,然后备份归档日志,因为在rman恢复过程中,rman本身备份的数据是不一直的,要靠这些已经归档的redo file信息恢复和保持数据库的一直状态。

    当然备份的归档日志中,可能包含有rman开始之前的归档,这些是没用的,
    其实这些归档文件中真正有用的是从rman备份开始到rman备份结束时刻系统产生的归档日志。
    同时rman在恢复的时候,restore database完毕后,会依次利用归档日志和联机日志进行完全恢复。此时利用的这些归档就是从rman备份开始到rman备份结束产生的归档日志。
    因此备份归档日志是很必要的,当然联机日志也是必须的,这些日志保证了rman能够完全的恢复数据库。
 
 问:下如果执行 backup database plus archivelog delete all input;
是不是就不存在全备之后做归档的备份了?
 答:上面的语句相当于backup database;
然后
alter system archive log current;
 
 
官方描述:
Backing Up Logs with BACKUP ... PLUS ARCHIVELOG
You can add archived redo logs to a backup of other files by using the BACKUP ...
PLUS ARCHIVELOG clause.  Adding BACKUP ... PLUS ARCHIVELOG causes RMAN to do the following:
1. Runs the ALTER SYSTEM ARCHIVE LOG CURRENT command.
2. Runs BACKUP ARCHIVELOG ALL. Note that if backup optimization is enabled, then RMAN skips logs that it has already backed up to the specified device.
3. Backs up the rest of the files specified in BACKUP command.
4. Runs the ALTER SYSTEM ARCHIVE LOG CURRENT command.
5. Backs up any remaining archived logs generated during the backup.This guarantees that datafile backups taken during the command are recoverable to a consistent state.To back up archived redo logs with BACKUP ... PLUS ARCHIVELOG:
After starting RMAN, run the BACKUP ... PLUS ARCHIVELOG command at the RMAN prompt . This example backs up the database and all archived logs:
RMAN> BACKUP DEVICE TYPE sbt
  DATABASE PLUS ARCHIVELOG;

 

rman备份归档
备份所有归档日志文件
   RMAN> backup archivelog all delete input;
   RMAN> backup archivelog all;(不物理删除目前的归档)
14:23 测试
SYS@nctest>alter system archive log current;
手工产生一个归档
 
 
之后手工删除,然后执行crosscheck archivelog all; 
之后delete noprompt expired archivelog all;
 
 20:34 更新
何涛
1上面rman全备之后手工归档,是写在sql{}命令块,否则还是存在备份之后更新插入scn不一致问题(手工做切换)
2,停机之后直接copy数据文件,pfile,控制文件,表空间不用考虑(说最简单)
3,rman的保留天数,过期的不会自动删除,但是oracle不认,需要做crosscheck 和delelte
4,rac,保证一个机子宕机,另外的一个,存储搞成两份
5,rman的还原迁移
 
 正式的做
 
为什么只删除了46个,5G左右
写crosscheck archivelog all,只有10个
delete archivelog all,找不到
手工删除2014-10-10之前的所有归档
之后执行
run{
backup database ;
sql 'alter system archive log current';
backup archivelog all delete input;
backup current controlfile;
}
完成
可以查看各种备份
list backup of archivelog all;
其中倒数第二个1.5G为归档日志
 
11.20 11:47 更新
rman下report obsolete
执行 delete obsolete
 有了问题,昨天晚上全备的并且删除了过期的归档,为什么今天上午10点多生成的归档执行 crosscheck archivelog all 会认为失效?
 
不懂
 14:56 更新
手工执行alter system archive log current
生成了一个归档,然后继续crosscheck archivelog all,变成了两个(刚刚产生的也被认为无效)
执行 list  expired archivelog all,找不到,证明没有失效的archive log 
 
C:>set nls_lang=american_america.zhs16gbk
上面的文章说是“说明了那个"失败"就是rman的语言显示问题.”
事实证明不行
原来是成功了,再次登录之后
以后切换的归档校验也是成功了,难道是BUG?
更新11.21 9:03
但是jsce正式环境在更改美语nls之后交叉检验成功,退出当前对话再查就失败,需要继续核实
注:
查看oracle 数据库的NLS_LANG参数
 

SYS@nctest>SELECT USERENV ('language') FROM DUAL;

USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK

查看Windows的使用:
echo %NLS_LANG%
目前都是中文,说明上面的更改语言参数是临时的,改了就好了
posted on 2014-11-13 11:30  sumsen  阅读(412)  评论(0编辑  收藏  举报