我有一个正在运行的数据库,只有一个 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。