0

我有一个正在运行的数据库,只有一个 dba(即除了 sys、system)“abc”。在这个 oracle 用户下,我有表、视图、序列、过程、函数等。现在我必须将数据和模式复制到另一台机器上的另一个数据库,该机器已经运行了十几个模式(每个单独的 dba 下一个)。我有以下顾虑:

(1) 在移动到新机器之前,我必须将旧机器上的模式从“abc”重命名为“pqr”。

(2) 在我的程序和函数中,我使用的是AUTHID CURRENT_USER,因此必须使用“abc”。表、视图、序列、过程、函数名称前的限定符。更改模式名称时,是否也有一些自动更改限定符的方法。

(3)为了复制数据,我只知道一种方法,就是只备份一个用户“abc”的数据库(即不备份sys、system)。然后将其还原到新数据库。无论如何,这是否会破坏其他模式或其数据。

(4) 在我的模式中,我正在使用过程创建具有有限权限的 oracle 用户。新用户名存储在用户表中。我还在创建数据库角色并将用户与角色相关联。角色名称存储在角色表中。在迁移到新机器时,我必须确保为我的用户和角色添加一些独特的前缀,这样我就不会打扰由其他模式创建的 oracle 用户。

(5) 我知道在新数据库中,必须有一个新的 dba 用户,名为“pqr”。我是否还必须拥有 sysdba 权限。我不对新机器上的整个数据库负责,我只对我的模式负责。作为一个 sysdba,我无论如何都可以伤害其他 dbas(比如删除它们,或者改变它们的模式)。如果我没有 sysdba 权限,我会受到什么限制。我正在使用 OracleText,所以必须使用一些内置包。我还必须在 Windows 的文件系统上创建物理目录。当使用“pqr”连接到数据库时,我还必须通过存储过程创建、更改(更改密码)、删除角色和用户。

新旧数据库都在不同的专用机器上运行。它的 windows server 2003 带有 oracle 10gr1。

4

1 回答 1

1

最简单的选择是使用Oracle 导出实用程序(经典或 DataPump)对abc第一个数据库中的模式进行逻辑备份,然后使用Oracle 导入实用程序将备份导入新数据库。如果您使用的是经典版本,您将使用FROMUSERTOUSER参数来指定您想要将数据导入到不同的架构中。如果您使用的是 DataPump 版本,您将使用该REMAP_SCHEMA参数。如果数据量比较大,DataPump 版本会更高效。

但不幸的是,没有办法更改显式模式限定符。在导入代码或从源代码控制系统中提取代码后,您需要对其进行编辑,编辑代码并将其部署到新数据库。

于 2012-05-06T18:19:58.563 回答