您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 我的oracle监控脚本
我的oracle监控脚本----检查磁盘空间------------------bin/shd1=`df-h|grep/home|awk'{print$5}'|awk-F%'{print$1}'`if[$d1-ge80]thenecho`date+%F%H:%M:%S`Thediskisnotenough,themessagefromip|mail-sprimary_ipdiskalertjie.du@mailfi------------检查oraclestandby服务器的状态---------------------------#!/bin/bashprimary_log=`ls-t/home/oracle/archive_log|head-n1|awk-F_'{print$2}'`standby_log=`ssh-p65508oracle@192.168.10.13ls-t/home/oracle/archive_log|head-n1|awk-F_'{print$2}'`apply_log=`ssh-p65508oracle@192.168.10.13'grepMediaRecoveryLog/home/oracle/admin/sfgame/bdump/alert_sfgame.log|tail-n1'|awk-F/'{print$5}'|awk-F_'{print$2}'`d1=`expr$primary_log-$standby_log`d2=`expr$standby_log-$apply_log`echo$primary_logecho$standby_logecho$apply_logif[$d1-ge2]thenecho------`date+%F%H:%M:%S`check_stantdby_status.logechoThearchive_logwasnotsendedcheck_stantdby_status.logechoThearchive_logwasnotsended|mail-sstandby_ipjie.du@emailif[$d2-ge2]thenecho------`date+%F%H:%M:%S`check_stantdby_status.logechoThearchived_logwasnotappliedcheck_stantdby_status.logechoThearchive_logwasnotapplied|mail-sstandby_ipalertjie.du@email--------数据库备份脚本---------rmantarget/EOFrun{allocatechannelc1typedisk;allocatechannelc2typedisk;backupfilesperset5fullformat/home/oracle/dbbackup/sfgame_full_p%p_s%s_t%t_%T.bak(databaseincludecurrentcontrolfile);}exitEOFif[$?-ge0]thenecho`date+%F%H:%M:%S`backupfaileddbbackup.logfi------日志备份脚本-------------primary_log=`ls-t/home/oracle/archive_log|head-n1|awk-F_'{print$2}'`standby_log=`ssh-p65508oracle@192.168.10.13ls-t/home/oracle/archive_log|head-n1|awk-F_'{print$2}'`d1=`expr$primary_log-$standby_log`time=`date+%H`if[$d1-le2]then#-------deletedataof5daysagoifstandbylogcannormalarchivedif[$time=00]thencd/home/oracle/oracle_maintenance$ORACLE_HOME/bin/sqlplus/nologEOFconn/assysdbasetfeedoffsetheadingoffsetheadoffsetechooffspoolremoveArch1.shselect'rm'||nameFromv$archived_logwheredest_id=1anddeleted='NO'andcompletion_timetrunc(sysdate-3)andcompletion_timetrunc(sysdate)spooloffEOFcatremoveArch1.sh|sed'1d'|sed'$d'/home/oracle/oracle_maintenance/removeArch2.shsh/home/oracle/oracle_maintenance/removeArch2.sh#-------deletedatawhichdeletedusesystemcmdrminrmanrmantarget/EOFrun{crosscheckarchivelogall;deletenopromptexpiredarchivelogall;}exitEOFfifirmantarget/EOFrun{allocatechannelc1typedisk;backupformat/home/oracle/archive_log_backup/arch_p%p_s%s_t%t_%T.arcfilesperset20archivelogall;}exitEOFduiego发表于:2007.11.3018:08::分类:(oracle数据库管理)::阅读:(40次)::评论(0)::引用(0)2007年09月13日,星期四DBMS_SCHEDULER的使用方法详解介绍:DBMS_SCHEDULER是Oracle10G中新增的一个包,与老版本的dbms_job包相比,dbms_scheduler有很多新特性,我将通过一系列的文章来介绍一下如何使用这个包.参考资料:1.OraclePLSQLPackagesandTypesReference10GRelease1(编号:B10802-01)2.Oracle10GTop20DBAFeatures说明:本文版权属于作者所有,禁止任何人,媒体未经作者许可而转载或用于商业用途.如果你对本文有任何建议或意见.请发到作者的邮箱krislee2005@gmail.com.part11.创建jobjob是什么呢?简单的说就是计划(schedule)加上任务说明.另外还有一些必须的参数.这里提到的任务可以是数据库内部的存储过程,匿名的PL/SQL块,也可以是操作系统级别的脚本.可以有两种方式来定义计划:1)使用DBMS_SCHDULER.CREATE_SCHEDULE定义一个计划;2)调用DBMS_SCHDULER.CREATE_JOBE过程直接指定(下面会详细说明)在创建一个计划时,你至少需要指定下面的属性,它们是job运行所必须的:开始时间(start_time);重复频率(repeat_interval);结束时间(end_time)另外,对于一个job而言,还有很多的附加参数:job_classjob_priorityauto_droprestartablemax_runsmax_failuresschedule_limitlogging_level下面,我以问答的形式来具体解释.Q1:怎么从数据库中查询job的属性?A1:有两种方法:1)查询(DBA|ALL|USER)_SCHEDULER_JOBS视图(提示:根据用户权限的不同,选择性的查询DBA|ALL|USER视图)2)调用DBMS_SCHEDULER包中的GET_ATTRIBUTE过程Q2:怎么设置这些属性呢?A2:也是有两种方法1)在创建job时直接指定2)调用DBMS_SCHEDULER包中的SET_ATTRIBUTE过程Q3:我需要什么权限才能创建job?A3:你至少需要create_job这个系统权限。如果用户拥有createanyjob这个权限,它可以创建属主为任何用户(SYS用户除外)的job.缺省情况下,job会被创建在当前的schema下,并且是没有激活的;如果要使job一创建就自动激活,需要显式的设置enabled属性为true,来看一个例子:begindbms_scheduler.create_job(job_name='ARC_MOVE',schedule_name='EVERY_60_MINS',job_type='EXECUTABLE',job_action='/home/dbtools/move_arcs.sh',enabled=true,comments='MoveArchivedLogstoaDifferentDirectory');end;/Q4:能不能详细地讲述一下上面这个过程用到的各个参数?A4:job_name:顾名思义,每个job都必须有一个的名称schedule_name:如果定义了计划,在这里指定计划的名称job_type:目前支持三种类型:PL/SQL块:PLSQL_BLOCK,存储过程:STORED_PROCEDURE外部程序:EXECUTABLE(外部程序可以是一个shell脚本,也可以是操作系统级别的指令).job_action:根据job_type的不同,job_action有不同的含义.如果job_type指定的是存储过程,就需要指定存储过程的名字;如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名enabled:上面已经说过了,指定job创建完毕是否自动激活comments:对于job的简单说明2.指定job的执行频率如果我们创建了一个job,并且希望它按照我们指定的日期和时间来运行,就需要定义job的重复频度了.例如每天运行,每周日的22:00运行,每周一,三,五运行,每年的最后一个星期天运行等等.(说明:10G以前的版本,与操作系统的交互方面,实现的不是很好。例如要实现一个定期的rman备份任务,就需要结合OS的命令来实现,在UNIX下可以用crontab实现,在windows下用AT命令来实现)10G在这方面有了很大的增强,因为创建job时可以直接指定操作系统的命令或者脚本,再合理的定义job的执行频率,可以很轻松地完成复杂的调度任务.10G支持两种模式的repeat_interval,一种是PL/SQL表达式,这也是dbms_job包中所使用的,例如SYSDATE+1,SYSDATE+30/24*60;另一种就是日历表达式。例如MON表示星期一,SUN表示星期天,DAY表示每天,WEEK表示每周等等.下面来看几个使用日历表达式的例子:repeat_interval='FREQ=HOURLY;INTERVAL=2'每隔2小时运行一次jobrepeat_interval='FREQ=DAILY'每天运行一次jobrepeat_interval='FREQ=WEEKLY;BYDAY=MON,WED,FRI每周的1,3,5运行jobrepeat_interval='FREQ=YEARLY;BYMONTH=MAR,JUN,SEP,DEC;BYMONTHDAY=30'每年的3,6,9,12月的30号运行job用过crontab的人应该都有种似曾相识的感觉吧,呵呵下面再说说使用日历表达式的规则:日历表达式基本分为三部分:第一部分是频率,也就是FREQ这个关键字,它是必须指定的;第二部分是时间间隔,也就是INTERVAL这个关键字,取值范围是1-999.它是可选的参数;最后一部
本文标题:我的oracle监控脚本
链接地址:https://www.777doc.com/doc-5502932 .html