我可以更改 Oracle 数据库的 SID 吗?

ber*_*d_k 20 oracle oracle-11g linux

服务器为 Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit

是否有一种简单快捷的方法来更改服务器上测试数据库的 SID?

删除和重新创建数据库对我来说是一个选择。但我正在寻找需要更少时间的东西。

在客户端 tnsnames.ora 中分配名称的另一个选项容易出错,因为它们不是集中管理的。

与在 SQL-Server 上删除和创建数据库的时间相比,创建新的 Oracle 数据库所需的时间要多得多。进一步在 SQL-Server 上,您可以重命名 SQL-Server 实例。[通常您重命名运行 SQL-Server 的服务器并且在重命名服务器之前会遇到一些问题]。

Bri*_*ton 17

您需要重新创建控制文件

Kaunain Ahmed 的这篇文章描述了必要的步骤:

  1. do:alter database backup controlfile to trace;
  2. 从 background-dump-destination 跟踪文件中提取“创建控制文件”命令。
  3. 关闭数据库。
  4. 更改 init.ora 中的 DB-Name 并更改 init.ora
  5. 更改 /etc/oratab 或 /var/opt/oracle/oratab 中的 SID
  6. 在您的环境中更改 SID 并获取它
  7. 启动数据库挂载-status启动挂载
  8. 使用位置 2 的语句重新创建控制文件。
  9. 做一个alter database rename global_name to 10.Change the TNS-Configuration相应$ORACLE_HOME/network/admin/*.ora 寻找SID和GLOBAL_NAME

线程中引用了其他工具。

这是AskTom的一篇文章,其中更详细地引用了该过程。虽然它是 10g,但它应该仍然有效。

  • Windows 用户需要注意的是,您还需要使用“oradim”实用程序来设置新服务。 (5认同)

小智 14

由于 9i dbnewid 实用程序 (nid) 可用于更改数据库名称(如果需要,还可以更改 DBID)。如果仅更改数据库名称,则不需要 resetlogs:


ik_*_*elf 10

是的,你可以,而且也很容易。

在 Oracle 中,ORACLE_SID 只是 Oracle 实例的名称,与 DBNAME 没有太大关系。可以使用具有任何有效名称的实例来提供名为 PROD 的数据库。SID 和 DBNAME 之间没有直接联系。此连接是使用参数进行的。

参数文件标识为init${ORACLE_SID}.ora 或spfile${ORACLE_SID}.ora 参数文件中是参数db_name。这是 Oracle 实例和数据库之间建立连接的地方。

因此,您不需要重新创建控制文件,也不需要使用 nid,只需确保您的参数文件具有正确的名称,在设置 ORACLE_SID 后关闭旧的 Oracle 实例并启动新的 Oracle 实例到新的 Oracle 实例名称。参数文件和密码文件都是使用 ${ORACLE_SID} 作为其名称的一部分找到的。

仅当 DBNAME 必须更改时才需要重新创建控制文件。在需要更改 DBID 的克隆操作之后需要 nid,以防止可能损害源数据库备份的事故。