停服Oracle 偶数日停服提醒(oracle偶数)

在使用数据库的时候,随着日常工作的发展,有时候需要做停服的处理,这会对系统造成一定的影响。考虑到Oracle的停服过程比较麻烦,特别是一些比较重大的停服更是需要更有建设意义的通知。这就需要我们给出一些措施来减少停服带来的影响。

既要减少影响,又要便于操作,我们需要一些比较实用的脚本。针对每隔偶数日停服的功能,我们可以使用shell脚本来实现:

# vim even_date.sh
#!/bin/bash
day=$(date +%e)
if [ $(expr ${day} % 2) -eq 0 ]
then
echo "Today is even number. Stop Oracle service."
else
echo "Today is odd number. No need to stop Oracle service."
fi
# Run Shell
$ sh even_date.sh

除此之外,可以编写SQL脚本来实现每隔偶数日发邮件提醒功能:

-- 1. Define a function to send email
CREATE OR REPLACE FUNCTION send_mail(p_to VARCHAR2, p_sub VARCHAR2, p_msg VARCHAR2)
RETURN BOOLEAN
AS LANGUAGE JAVA
NAME 'SendMail.sendMail(java.lang.String,java.lang.String,java.lang.String) return java.lang.Boolean';

-- 2. Use the function
BEGIN
send_mail('@.com',
'Oracle-Service-Stop-Alert',
'Today is even number. Please change Oracle service.');
END;
/

最后一步,可以建立一个调度任务,来自动执行SQL脚本,每隔偶数日发邮件:

-- 1. Create job
begin
dbms_scheduler.create_job (
job_name => 'stop_alert_job',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN
send_mail(''@.com'',
''Oracle-Service-Stop-Alert'',
''Today is even number. Please change Oracle service.'');
END;',
repeat_interval => 'FREQ=DAILY; byhour=9; byminute=0; bysecond=0; interval=14',
start_date => SYSTIMESTAMP,
enabled => TRUE,
comments => 'send alert email every two day');
end;
/

通过以上脚本就可以实现每隔偶数日停服提醒的功能,以此来减少Oracle停服带来的不便。


数据运维技术 » 停服Oracle 偶数日停服提醒(oracle偶数)