Oracle - 将存储过程复制到远程数据库

时间:2014-06-08 09:40:39

标签: sql database oracle stored-procedures plsql

我作为pl / sql研究的一部分要求我创建一个远程数据库连接并从本地复制我的所有表格,然后复制我引用数据的其他对象,这样我的视图和触发器等

这个想法是,在远程端,视图等应该引用本地数据库在线的本地表,如果不是,那么它们应该引用存储在远程数据库中的表。

所以我创建了一个连接,以及一个在远程端创建表的脚本。

我还创建了一个pl / sql块来创建远程端的所有视图和触发器,从而对本地数据库运行一个简单的选择查询来检查它是否在线,如果它在线则一系列执行立即语句通过引用table_name @ local创建视图等,如果它不在线,则块跳转到异常部分,其中类似的一系列执行立即语句创建相同的视图但引用远程表。

好的,这就是我不确定的地方。 我有一个包含一些程序和功能的包,我不确定在远程端创建它的最佳方法是什么,以便它在选择的位置方面表现得相似它的参考表来自。

是否只是将整个包创建块封装在“立即执行”中,就像我对视图一样,或者我应该创建两个不同的包并称之为某些东西像pack1和pack1_remote?

或者我怀疑是否有更有效的方法来实现目标?

喝彩!

1 个答案:

答案 0 :(得分:1)

这绝对不是现实世界中任何理性的人设计系统的方式。在最好的情况下,建议像我在现实世界中建议的那样,会让你笑出房间。

我能想到的最简单的方法是拥有两种不同的模式。架构1将拥有这些表。架构2将拥有该代码。在安装时,为架构2需要引用的每个对象创建同义词。如果在安装代码时远程数据库可用,请创建引用远程数据库中对象的同义词。否则,创建引用本地数据库中对象的同义词。这使您可以通过在代码和表之间创建额外的间接层来创建一组对象,而无需使用动态SQL。