13

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

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

4

3 回答 3

14

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;

于 2010-08-06T14:08:37.197 回答
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。

希望能帮助到你

于 2012-12-05T13:57:30.760 回答
1

在版本 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. 将“设置 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 无用,但我还是更愿意这样做,以防万一......)
  5. 执行脚本...它会提示您输入系统密码几次说

输入 1 的值:

或者

输入 2 的值:

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

于 2018-03-16T21:39:09.300 回答