查看: 3990|回复: 8

哪位有 standby数据库 定期删除已经apply的archive的shell脚本?

[复制链接]
招聘 : 技术支持/维护
论坛徽章:
6
数据库板块每日发贴之星
日期:2007-07-04 01:02:06数据库板块每日发贴之星
日期:2007-08-22 01:03:12数据库板块每日发贴之星
日期:2007-08-23 01:03:28会员2007贡献徽章
日期:2007-09-26 18:42:102009新春纪念徽章
日期:2009-01-04 14:52:28林肯
日期:2013-07-30 12:28:37
发表于 2008-1-18 18:36 | 显示全部楼层 |阅读模式
急用!

以前的丢了的。


email:

mikle_tian@126.com

万分感谢!!
招聘 : 技术支持/维护
论坛徽章:
6
数据库板块每日发贴之星
日期:2007-07-04 01:02:06数据库板块每日发贴之星
日期:2007-08-22 01:03:12数据库板块每日发贴之星
日期:2007-08-23 01:03:28会员2007贡献徽章
日期:2007-09-26 18:42:102009新春纪念徽章
日期:2009-01-04 14:52:28林肯
日期:2013-07-30 12:28:37
 楼主| 发表于 2008-1-18 18:43 | 显示全部楼层
比如,定期删除满足以下两个条件的归档日志:


1、已经在standby库apply的;
2、2天以上的

同时满足上述两个条件的话,即删除。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
14
授权会员
日期:2005-10-30 17:05:33马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-27 06:00:12阿斯顿马丁
日期:2013-10-08 16:15:36咸鸭蛋
日期:2013-05-07 13:52:40蜘蛛蛋
日期:2013-05-02 13:41:16蛋疼蛋
日期:2013-04-24 14:22:58咸鸭蛋
日期:2013-03-13 09:33:472013年新春福章
日期:2013-02-25 14:51:24
发表于 2008-1-18 23:49 | 显示全部楼层
写个OCCI程序,10分钟搞定

使用道具 举报

回复
论坛徽章:
2
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
发表于 2008-1-19 01:53 | 显示全部楼层
定期删除DG归档日志的脚本·
作者 小荷||【转载时请务必以超链接形式标明文章原始出处和作者信息】
永久链接: http://www.oracleblog.cn/useful- ... elete-standby-arch/ ·


--------------------------------------------------------------------------------

Dataguard的维护稍微麻烦点,不能删除尚未applied的归档日志,但是每次手工去核对就比较麻烦了,今天在pub上看到这样一个要求:“哪位有 standby数据库 定期删除已经apply的archive的shell脚本?”于是就写了个脚本,基本可以满足题目的要求:

1、已经在standby库apply的;

2、2天以上的

脚本如下(具体的脚本和初始化路径可见文章最后的下载tar包,在这里对这个脚本的内容进行下说明):
OS:

[oracle@standby1 etc]$ cat redhat-release
Enterprise Linux Enterprise Linux AS release 4 (October Update 4)
DB:

BANNER
----------------------------------------------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
PL/SQL Release 9.2.0.4.0 - Production
CORE    9.2.0.3.0       Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
脚本部署路径为:/oracle/del_appl_arc/bin
脚本生成的日志路径:/oracle/del_appl_arc/log

#!/bin/sh
#########################################################################
#         This shell is for primary and standby database                #
#         to rm applied archivelog that before some day ago.            #
#                                                                       #
#       You can define "some day" in variables ${day_before}            #
#            This shell can be put in crontab for auto run              #
#                                                                       #
#            2008-01-18   writen by www.oracleblog.cn                   #
#########################################################################

## load profile file
. /oracle/.bash_profile

## Path Define
main_path=/oracle/del_appl_arc      <----------------部署的主路径
bin_path=${main_path}/bin      <--------------------脚本所在路径
log_path=${main_path}/log      <---------------------脚本日志所在路径
arc_path=/oracle/arch      <-------------------------归档日志所在路径

cd ${bin_path}

## Initial script
touch app_arc_name.sh
chmod +x app_arc_name.sh

## rm applied archivelog that before ${day_before} day ago
day_before=1      <-------------------------------------假设删除1天前已经规定的日志,这个变量设置为1,你可以设置成其他。  

## Db info
dbuser=test
dbpwd=test
dbsid=primary

########## Main shell start here ##########
## load exisit archlog list to db      <------------------------从此处开始利用sqlldr将arch文件列表load到数据库中。
sqlplus ${dbuser}/${dbpwd}@${dbsid}<<EOF >/dev/null
drop table ${dbuser}.arc_log_list;
CREATE TABLE ${dbuser}.arc_log_list (arc_name VARCHAR2(2000));
exit;
EOF

ls -l ${arc_path}|awk '{print $9}' |grep arc >arc_log_list.tmp

echo "load data">>arc_log.ctl
echo "infile 'arc_log_list.tmp'">>arc_log.ctl
echo "replace into table arc_log_list">>arc_log.ctl
echo "fields terminated by X'09'">>arc_log.ctl
echo "(arc_name)">>arc_log.ctl

sqlldr ${dbuser}/${dbpwd}@${dbsid} control=arc_log.ctl log=sqlldr_run.log bad=sqlldr_badfile.bad

### Create shell for rm applied archive that before some day ago
sqlplus -s ${dbuser}/${dbpwd}@${dbsid}<<EOF>/dev/null      <-------------利用load数据库中的arch列表和
set feedback off                                     <-------------数据库中v$archived_log,找出符合条件可以删除的arch,同时生成删除脚本。
set pages 0
set head off
set timing off
set echo off
spool app_arc_name.tmp
select 'rm -f '||'${arc_path}/'||arc_name from test.arc_log_list
intersect
select 'rm -f '||name from v\$archived_log
where DEST_ID=1 and name like '%.arc'
and SEQUENCE#<(select max(SEQUENCE#) from v\$archived_log where applied='YES')
and COMPLETION_TIME<=sysdate-${day_before};
spool
exit
EOF

## Exec the shell in background mode
cat app_arc_name.tmp |grep -v spooling>app_arc_name.sh
./app_arc_name.sh
mv app_arc_name.sh rm_appl_arc_`date +"%Y%m%d%H%M"`.log

mv rm_appl_arc*.log ${log_path}
rm app_arc_name.tmp arc_log.ctl sqlldr_run.log arc_log_list.tmp
完成脚本后,你可以把脚本放入crontab中定期运行,以达到自动删除n天以前且已经applied的归档日志。


下载tar包请到原文处:http://www.oracleblog.cn/useful- ... elete-standby-arch/

[ 本帖最后由 jimmyhe1981 于 2008-1-19 02:33 编辑 ]

使用道具 举报

回复
论坛徽章:
2
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
发表于 2008-1-19 02:38 | 显示全部楼层
同一个脚本primary和standby都可以用,不过注意在部署crontab的时候要将时间错开,如果同时进行,会对arc_log_list表有争用。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
生肖徽章2007版:龙
日期:2008-05-06 11:07:48咸鸭蛋
日期:2011-10-19 10:09:12ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-01-04 11:49:542013年新春福章
日期:2013-02-25 14:51:24
发表于 2008-1-19 21:25 | 显示全部楼层
关注

使用道具 举报

回复
招聘 : 技术支持/维护
论坛徽章:
6
数据库板块每日发贴之星
日期:2007-07-04 01:02:06数据库板块每日发贴之星
日期:2007-08-22 01:03:12数据库板块每日发贴之星
日期:2007-08-23 01:03:28会员2007贡献徽章
日期:2007-09-26 18:42:102009新春纪念徽章
日期:2009-01-04 14:52:28林肯
日期:2013-07-30 12:28:37
 楼主| 发表于 2008-1-20 10:10 | 显示全部楼层
收藏,多谢

使用道具 举报

回复
论坛徽章:
98
2009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:05:012010年世界杯参赛球队:美国
日期:2010-05-02 21:32:232010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23ITPUB季度 技术新星
日期:2010-05-17 15:53:17数据库板块每日发贴之星
日期:2010-05-24 01:01:072010年世界杯参赛球队:意大利
日期:2010-05-31 20:55:432010年世界杯参赛球队:巴拉圭
日期:2010-07-03 13:06:582010世博会纪念徽章
日期:2010-08-18 23:53:44ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51
发表于 2008-1-20 18:18 | 显示全部楼层
我也收藏了。感谢分享!

使用道具 举报

回复
论坛徽章:
31
授权会员
日期:2007-06-28 08:52:11ITPUB元老
日期:2010-05-21 14:36:22ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-01-04 10:24:022011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
发表于 2008-6-24 16:39 | 显示全部楼层
真不错,赞一个!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表