快速轻松搞定Oracle B备份脚本(oracle b备份脚本)
快速轻松搞定Oracle B备份脚本
在Oracle数据库中备份是非常重要的,因为它可以为公司的业务运营提供数据恢复保障,并提供备份数据用于测试等用途。对于Oracle数据库管理员而言,备份数据是尤为关键的一个问题,但是备份数据却是一项很繁琐且耗时的工作。因此,编写一个高效的Oracle B备份脚本显得尤为重要。
本文将着重介绍如何编写一个快速轻松搞定Oracle B备份脚本。
1. 编写备份脚本
通过命令行工具或者Oracle SQL Developer等工具连接Oracle数据库,并通过PL/SQL脚本语言编写备份脚本。备份脚本包含备份的类型、备份的目标位置、备份的文件格式、备份的时间等信息。下面是一个备份脚本的示例:
“`sql
— 数据库backup脚本
–设置输入参数
DEFINE dirPath =’D:\backup’ –备份的目标位置
DEFINE hms = TO_CHAR(SYSDATE, ‘hh24miss’) –备份时间 当前时间hh24mmss格式
— 开始备份
SPOOL &dirPath\backup_&hms..log; –设置log日志
SQLPLUS -S scott/tiger
set echo off
set feedback off
set heading off
set pagesize 0
set termout off
column username new_value v_username;
column instance_name new_value v_instance_name;
column v_sid01 new_value v_sid01;
column v_sid02 new_value v_sid02;
select (select username from v\$session where sid=(select sid from v\$mystat where rownum=1)) username,
(select instance_name from v\$instance) instance_name,
(select SID from v\$mystat where rownum=1 and rownum = 1) v_sid01,
(select lpad(to_number(sid),3) from v\$mystat where rownum=1 and rownum = 1) || ‘_’ v_sid02
from dual;
— 自动寻找数据库需要备份的文件,如datafile, controlfile, spfile,archivelog
column sid new_value v_sid;
column uuid new_value v_uuid;
column fname new_value v_fname;
column type new_value v_type;
column start_time new_value v_start_time;
column end_time new_value v_end_time;
column size new_value v_size;
set lines 200
SELECT inst_id SID, s.UUID, p.member fname, DECODE(p.type, ‘DATAFILE’,’datafile’,’ONLINE LOG’,’online log’,’CONTROLFILE’,’controlfile’,’SPFILE’,’spfile’, p.TYPE) type, sysdate v_start_time,
LEAD(sysdate) OVER(ORDER BY s.thread, p.recid) v_end_time,
(p.blocks * s.block_size / 1024 / 1024) size
FROM gv\$datafile p, gv\$session s
WHERE s.program LIKE ‘%ora_dbbackup.pl%’
AND p.inst_id = s.inst_id
UNION ALL
SELECT inst_id, s.UUID, l.member, ‘ONLINE LOG’, sysdate, LEAD(sysdate) OVER(ORDER BY s.thread, l.recid),
blocks * s.block_size / 1024 / 1024
FROM gv\$log l, gv\$session s
WHERE s.program LIKE ‘%ora_dbbackup.pl%’
AND l.inst_id = s.inst_id
UNION ALL
SELECT inst_id, s.UUID, c.member, ‘CONTROLFILE’, sysdate, LEAD(sysdate) OVER(ORDER BY s.thread),
bytes / 1024 / 1024
FROM gv\$controlfile c, gv\$session s
WHERE s.program LIKE ‘%ora_dbbackup.pl%’
AND c.inst_id = s.inst_id
UNION ALL
SELECT inst_id, s.UUID, sp.name, ‘SPFILE’, sysdate, LEAD(sysdate) OVER(ORDER BY s.thread),
length(sp.value) / 1024 / 1024
FROM gv\$parameter sp, gv\$session s
WHERE s.program LIKE ‘%ora_dbbackup.pl%’
AND sp.inst_id = s.inst_id
AND sp.name IN (‘SPFILE’, ‘UNDO_MANAGEMENT’)
ORDER BY 1,2,4; 进行备份
spool off;
–将备份结果输出到.log文件中
SPOOL &dirPath\backup_&hms..log
select ‘******* backup cmd ******’ from dual;
select ‘backup database plus archivelog delete input;’ from dual;
select ‘**************************’ from dual;
select ‘******* backup items ******’ from dual;
select ‘Database: ‘|| v_instance_name from dual;
select ‘File name, type, start time, end time, size:’;
select v_sid01 || v_sid02, ‘Datafile:’ || v_fname ||’.bkp’, v_start_time, v_end_time, v_size from ?;
select CONCAT(‘Controlfile:’, (select name from v\$database ||'(AUTOBACKUP)’), v_start_time, v_end_time, v_size) from dual;
select ‘***************************’ from dual;
SPOOL OFF;
2. 自动化处理备份
在备份脚本编写完成后,可以为备份脚本增加自动化处理程序。例如,可以编写一个简单的python程序,使用系统的定时任务(如windows的任务计划器),来定期执行备份脚本。下面是一个定时任务的示例:
```pythonimport os
import datetime
current_time = datetime.datetime.now()time_format = "%Y%m%d_%H%M%S"
backup_dir = 'backup_path'backup_file = '{}.bkp'.format(current_time.strftime(time_format))
log_file = 'backup_{}.log'.format(current_time.strftime(time_format))
backup_cmd = 'sqlplus -silent -l user/pass@sid @backup.sql'
# 执行备份命令os.system(backup_cmd)
# 创建备份目录if not os.path.exists(backup_dir):
os.mkdir(backup_dir)
# 将备份文件移动到备份目录os.rename(backup_file, os.path.join(backup_dir, backup_file))
# 将日志文件移动到备份目录os.rename(log_file, os.path.join(backup_dir, log_file))
以上示例使用Python编写了一个简单的自动备份程序。每次执行备份脚本时,将备份文件和日志文件保存到指定的备份目录中。用户可以通过修改Python程序,并配置Windows任务计划器,在每天固定时间自动执行备份程序。
通过完成以上两个步骤,用户就可以轻松编写Oracle B备份脚本,并实现自动化备份。在编写后可以用Oracle RMAN(Recovery Manager) 也可以使用第三方备份软件像DataGrip等程序进行备份。