2009-01-04 80 views
11

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

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

回答

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. 部队甲骨文注册听着呃
    • sqlplus/as sysdba和执行alter system register;

您可以验证SID被执行下面的查询更改:select instance_name from v$instance;

+0

谢谢,我不喜欢接受我自己的答案的想法。你的回答更清晰, – 2010-08-07 19:02:09

4

Asktom有the answer,我不得不经过很多google-fu才能找到它。

2

我遇到了一些问题发表约翰内斯的解决方案,因此我不得不做一些额外的步骤。 当试图通过执行SQLPLUS /作为SYSDBA连接到oracle(步骤4)我得到:

ERROR: ORA-12560: TNS:protocol adapter error 

此溶液执行下面的行:

oradim -start -sid NEW_SID_NAME 

然后与连接/工作正常,但尝试连接到系统或人力资源的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;也。

完成这两步后,我可以通过系统和人力资源连接到NEW_SID_NAME。

希望它有帮助

+0

对不起,我忘了,我用来解决这个问题的链接http://mdvreddy.blogspot.com.ar/2011/12/how-to-solve-ora-12560-tnsprotocol。 html和https://forums.oracle.com/forums/thread.jspa?messageID=10201664 – nMoncho 2012-12-05 13:58:23