【问题标题】:How can I change the SID of an Oracle XE instance如何更改 Oracle XE 实例的 SID
【发布时间】:2010-09-29 11:37:38
【问题描述】:

我需要更改 Oracle XE 数据库的 SID(不是服务名称)以匹配生产数据库。

当我尝试在线搜索时,大部分页面都在描述通过 tnsnames.ora 更改或添加服务名称;这不是我需要做的。

【问题讨论】:

    标签: oracle oracle-xe sid service-name


    【解决方案1】:

    asktom 文章有答案,但格式和冗长让人难以理解,所以这里总结一下:

    [XE_HOME] 表示 Oracle XE 的安装位置。通常是C:\oraclexe\app\oracle\product\10.2.0\server

    确保您具有管理员权限,否则该过程将失败。

    1. 配置 SPFILE(如果需要,您可以删除旧文件)
      1. copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
      2. copy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora
      3. 编辑[XE_HOME]\database\initNEW_SID_NAME.ora:它应该包含这样的一行:SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
    2. 关闭并用新服务替换旧服务:
      1. sqlplus / as sysdba 并执行 shutdown
      2. lsnrctl stop
      3. oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
      4. oradim -delete -sid XE
      5. lsnrctl start
    3. 更新 ORACLE_SID 环境属性(系统设置 > 高级 > 环境)
    4. 强制 Oracle 向侦听器注册
      • sqlplus / as sysdba 并执行 alter system register;

    您可以通过执行以下查询来验证 SID 是否已更改:select instance_name from v$instance;

    【讨论】:

    • 谢谢,我不喜欢接受自己的回答。你的答案更清楚了,
    【解决方案2】:

    我对 Johannes 发布的解决方案有一些问题,所以我不得不做一些额外的步骤。 当尝试通过执行 sqlplus / as sysdba 连接到 oracle(步骤 4)时,我得到了:

    ERROR: ORA-12560: TNS:protocol adapter error
    

    解决方案是执行以下行:

    oradim -start -sid NEW_SID_NAME
    

    然后用 / 连接工作正常,但尝试用系统或 HR 连接到 NEW_SID_NAME 给我带来了另一个问题:

    ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
    

    我通过查询 select instance_name from v$instance; 检查了侦听器是否为 NEW_SID_NAME,因此也是如此。但是在命令行中运行 lsnrctl status 或查询 select name from dba_services; 并没有将 NEW_SID_NAME 显示为侦听器。 这个问题的解决方法是在sqlplus上执行如下语句:

    alter system set service_names='NEW_SID_NAME';
    

    也许你还需要在这之后执行alter system register;

    完成这两个步骤后,我可以通过系统和 HR 连接到 NEW_SID_NAME。

    希望对你有帮助

    【讨论】:

    【解决方案3】:

    在 11g 版本中,以前的所有解决方案都不起作用...尝试执行 sqlplus / as sysdba 时总是出现以下错误:

    错误:ORA-12560:TNS:协议适配器错误

    幸运的是,我在 [XE_HOME]\config\scripts 下找到了一个脚本来执行我想做的事情。该脚本名为 XE.bat,它将从头开始实例化一个新数据库,并在整个过程中询问您的 sysPassword。所以我所做的是:

    1. 停止并删除现有服务(如果有):

    oradim -delete -sid XE

    1. 停止监听器
    2. 按照 Johannes 的说明配置 SPFILE
    3. 复制XE.bat脚本,你可以随意命名
    4. 如下编辑脚本副本:

      1. 将“set ORACLE_SID=XE”行更改为“set ORACLE_SID=NEW_SID_NAME”
      2. 将您看到的“-sid XE”更改为“-sid NEW_SID_NAME”
      3. 将调用“orapwd.exe”命令的行更新为指向名为 PWDNEW_SID_NAME.ora 而不是 PWDXE.ora 的文件
      4. 更新将 spfileXE.ora 回显到 initXE.ora 的行,以将 spfileNEW_SID_NAME.ora 回显到 initNEW_SID_NAME.ora(这部分可能会使第 3 步无用,但我还是更愿意这样做,以防万一……)
    5. 执行脚本...它会多次提示您输入 SYSTEM 密码

    输入 1 的值:

    输入 2 的值:

    就是这样,带有您的 NEW_SID_NAME 的新数据库已启动并正在运行!

    【讨论】:

      猜你喜欢
      • 2022-11-02
      • 2019-01-08
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2018-02-16
      • 2010-11-03
      • 2014-05-28
      相关资源
      最近更新 更多