本文介绍一种数据库对象备份的方法。其原因是因为我在开发时有两个数据库用户,他们的数据表结构相同,所开发的存储过程也相同,但是数据却是不同地方的数据。因为懒惰所以在修改过程包时只想修改一次就ok,所以想了一个半自动的办法,让数据库自动备份数据库对象,然后编写bat文件进行同步更新。
首先要明确主次,我把a数据库用户作为修改对象,b数据库用户只是同步更新。ok
步骤:
一、用dba身份登录数据库,给a数据库用户指定一个存储路径‘d:\test’,并授予读写的权限。
create or replace directory D_OUTPUT as 'D:\test';
grant read,write on directory D_OUTPUT to a;
GRANT EXECUTE ON utl_file TO a;
二、用a登录数据库,编写自动备份包的过程。
create or replace procedure save_PACKAGEtoSQL_thomas is
procedname varchar2(32);
i PLS_INTEGER := 0;
L_output utl_file.file_type;
file_dic varchar2(200) := 'D_OUTPUT'; --目录
file_name varchar2(32) := 'pro.sql'; --生成的文件
cursor proc is --得到每个业务模块中用到的存储过程名称
select x.referenced_name
from user_dependencies x
where x.referenced_type = 'PACKAGE'
group by x.referenced_name;
begin
--打开文件
L_output := utl_file.fopen(file_dic, file_name, 'a');
--循环得到每一个存储过程名称
open proc;
loop
fetch proc
into procedname;
exit when proc%notfound;
i := i + 1;
dbms_output.put_line('procedname' || i || '=' || procedname);
--得到每一个存储过程的source
for j in (select decode(t.line,
1,
'Create or replace ' || t.text,
t.text) text
from user_source t
where t.name = procedname
and t.type = 'PACKAGE'
order by line) LOOP
--写每一个存储过程包到文件
UTL_FILE.put_line(L_output, j.text, false);
END LOOP;
--在每一个存储过程后增加'/'
UTL_FILE.put_line(L_output, '/', false);
for j in (select decode(t.line,
1,
'Create or replace ' || t.text,
t.text) text
from user_source t
where t.name = procedname
and t.type = 'PACKAGE BODY'
order by line) LOOP
--写每一个存储过程包体到文件
UTL_FILE.put_line(L_output, j.text, false);
END LOOP;
--在每一个存储过程后增加'/'
UTL_FILE.put_line(L_output, '/', false);
end loop;
close proc;
UTL_FILE.fclose(L_output);
end save_PACKAGEtoSQL_thomas;
三、编写job,定时每天晚上12点执行。
VARIABLE job_busilog_addpartition NUMBER;
BEGIN
DBMS_JOB.SUBMIT(:job_busilog_addpartition,save_PACKAGEtoSQL_thomas;',trunc(sysdate)+23/24,'SYSDATE+1');
COMMIT;
END;
四、编写bat文件,内容:start sqlplus b/pwd@db @ d:\test\pro.sql 。
完成。
======================================================================
后续问题:1、上面是本地数据库思路,远程数据库需要数据库连接就可以了。
2、本来准备自动完成更新的,但是不知道怎样备份成dmp文件,也或者是在过程里怎样实现导入sql文件导入。
3、其实上面只是对包进行备份,也可以对所有用户对象进行备份。
分享到:
相关推荐
Oracle数据库对象管理及备份与恢复的知识点繁多且复杂,但掌握这些知识对于维护Oracle数据库的安全性和稳定性至关重要。通过本文的介绍,我们可以对Oracle数据库的相关操作和策略有更深入的了解。
Oracle数据库定时自动备份对于保障数据安全至关重要,尤其是在Windows环境下,通过批处理脚本可以实现这一功能。以下是一个详细的Oracle数据库定时自动备份的步骤和相关知识点: 1. **批处理脚本**: - `...
本主题将深入探讨如何使用C#编程语言来实现Oracle数据库的备份与还原过程。 首先,理解Oracle数据库的备份原理是必要的。Oracle提供多种备份方式,包括物理备份(如数据文件、控制文件的拷贝)和逻辑备份(如导出/...
综上所述,通过编写bat脚本结合Java的定时任务功能,我们可以实现Oracle数据库的自动备份,确保数据的安全性和可恢复性。这种方法既方便又高效,尤其适合那些需要定期备份大量数据的大型企业或组织。在实际应用中,...
### Windows 下 Oracle 数据库 RMAN 自动备份与恢复详解 #### 一、RMAN 工具简介 **RMAN (Recovery Manager)** 是 Oracle 数据库自带的一款强大的备份和恢复工具,它提供了完整的数据库备份和恢复解决方案。RMAN ...
在Linux环境下,远程定时备份Oracle数据库是一项至关重要...这涉及到Linux系统的操作、Oracle数据库的备份工具使用以及自动化脚本的编写,都是运维工作中不可或缺的技能。记得在实际操作中根据具体环境和需求进行调整。
"Oracle数据库自动备份工具"就是为此目的设计的一个实用程序,它简化了原本通过Oracle客户端的exp(导出)和imp(导入)命令进行的数据备份流程。 Oracle的exp和imp命令是Oracle Data Pump的一部分,它们用于将...
本文将详细介绍如何手工实现Oracle数据库的自动备份与恢复方案。 1. **数据备份类型** - **逻辑备份**:主要通过Oracle的`EXPDP`(Export Data Pump)工具,将数据库中的表、视图、存储过程等对象及其数据导出到....
2. **自动备份**:自动备份功能使得数据库管理员无需时刻关注备份进程,可设定定时任务在特定时间执行备份,降低了人为失误的风险。这在大型系统中尤其重要,因为数据的丢失可能导致严重后果。 3. **手动备份**:...
标题“Oracle数据库自动备份压缩bat”表明我们正在讨论一个用于自动化Oracle数据库备份并将其压缩成BAT(批处理)脚本的方案。Oracle数据库是企业级的关系型数据库管理系统,确保其数据的安全性和可恢复性至关重要。...
在SCO UNIX操作系统环境下,Oracle数据库的自动备份对于确保数据安全性至关重要。随着数据库技术的广泛应用,尤其是在复杂的客户/服务器环境中,数据库中的数据量快速增长,因此维护工作变得尤为重要。由于软硬件...
"Oracle数据库自动备份"指的是利用Oracle提供的工具和策略,设定定期自动执行数据库备份,以确保数据的安全性。 Oracle数据库提供了多种备份方式,包括物理备份和逻辑备份。物理备份主要是通过RMAN(恢复管理器)...
在Windows系统下,Oracle数据库定时自动备份是确保数据安全的重要环节。通过设定自动化脚本和Windows任务计划程序,可以定期执行数据库的备份操作,避免由于数据丢失或错误导致的潜在风险。以下是如何在Windows环境...
标题"Oracle数据库自动备份程序"表明这是一个旨在自动化Oracle 11g数据库备份过程的程序。自动备份可以减少人为错误,提高备份效率,并且可以在设定的时间点定期执行,确保数据的最新状态得到保护。 描述中提到...
Oracle数据库在许多业务环境中扮演着核心角色,但与SQL Server不同,它没有内置的图形化自动备份工具。然而,这并不意味着我们无法实现自动备份。本文将详细介绍如何在Oracle数据库中设置自动备份。 首先,我们需要...
《NBU对Oracle数据库的本地/异机备份及恢复操作详解》 NetBackup(NBU)是Veritas公司推出的一款专业的企业级数据备份与恢复软件,广泛应用于各种规模的组织中,尤其在处理大型数据库如Oracle时表现出强大的功能。...
"Oracle数据库容灾备份技术探讨" Oracle数据库容灾备份技术探讨是指通过各种技术手段来保护和恢复Oracle数据库,以确保数据库的高可用性和业务连续性。根据不同的灾备技术,可以将其分为三类: Oracle Data Guard...
Oracle数据库同步备份和自动压缩的实现是确保数据安全和高效管理的关键环节。在实际的IT环境中,Oracle数据库因其高度的可靠性和可扩展性而被广泛应用于各种业务系统。与之配合使用的开发工具如Delphi,能够提供高效...
Oracle Recovery Manager(RMAN)是Oracle公司提供的一种专门备份工具,能够实现数据库定制备份、自动备份等功能,简化了备份和恢复操作,降低了手工备份的复杂性和风险,提高了备份操作的可靠性和可恢复性。...