如何更改Oracle XE实例的SID

时间:2009-01-04 13:04:16

标签: oracle oracle-xe sid service-name

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

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

4 个答案:

答案 0 :(得分:12)

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;
  5. 您可以通过执行以下查询来验证SID是否已更改:select instance_name from v$instance;

答案 1 :(得分:4)

Asktom有the answer,我不得不通过很多google-fu来实现它。

答案 2 :(得分: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上执行followind语句:

alter system set service_names='NEW_SID_NAME';

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

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

希望有所帮助

答案 3 :(得分:0)

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

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

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

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

    oradim -delete -sid XE

    1. 停止听众
    2. 按照Johannes
    3. 的说明配置SPFILE
    4. 制作脚本XE.bat的副本,您可以随意命名
    5. 编辑脚本副本,如下所示:

      1. 将“设置ORACLE_SID = XE”更改为“设置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步无效但我还是喜欢这样做,以防万一...)
    6. 执行脚本......它会提示您输入几次SYSTEM密码

    7.   

      输入1的值:

        

      输入2的值:

      就是这样,你的NEW_SID_NAME的新数据库正常运行!!