【发布时间】:2010-09-29 11:37:38
【问题描述】:
我需要更改 Oracle XE 数据库的 SID(不是服务名称)以匹配生产数据库。
当我尝试在线搜索时,大部分页面都在描述通过 tnsnames.ora 更改或添加服务名称;这不是我需要做的。
【问题讨论】:
标签: oracle oracle-xe sid service-name
我需要更改 Oracle XE 数据库的 SID(不是服务名称)以匹配生产数据库。
当我尝试在线搜索时,大部分页面都在描述通过 tnsnames.ora 更改或添加服务名称;这不是我需要做的。
【问题讨论】:
标签: oracle oracle-xe sid service-name
asktom 文章有答案,但格式和冗长让人难以理解,所以这里总结一下:
[XE_HOME] 表示 Oracle XE 的安装位置。通常是C:\oraclexe\app\oracle\product\10.2.0\server。
确保您具有管理员权限,否则该过程将失败。
copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.oracopy [XE_HOME]\database\initXE.ora [XE_HOME]\database\initNEW_SID_NAME.ora[XE_HOME]\database\initNEW_SID_NAME.ora:它应该包含这样的一行:SPFILE='[XE_HOME]\server\dbs/spfileNEW_SID_NAME.ora'
sqlplus / as sysdba 并执行 shutdown
lsnrctl stoporadim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.oraoradim -delete -sid XElsnrctl startsqlplus / as sysdba 并执行 alter system register;
您可以通过执行以下查询来验证 SID 是否已更改:select instance_name from v$instance;
【讨论】:
我对 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。
希望对你有帮助
【讨论】:
在 11g 版本中,以前的所有解决方案都不起作用...尝试执行 sqlplus / as sysdba 时总是出现以下错误:
错误:ORA-12560:TNS:协议适配器错误
幸运的是,我在 [XE_HOME]\config\scripts 下找到了一个脚本来执行我想做的事情。该脚本名为 XE.bat,它将从头开始实例化一个新数据库,并在整个过程中询问您的 sysPassword。所以我所做的是:
oradim -delete -sid XE
如下编辑脚本副本:
执行脚本...它会多次提示您输入 SYSTEM 密码
输入 1 的值:
或
输入 2 的值:
就是这样,带有您的 NEW_SID_NAME 的新数据库已启动并正在运行!
【讨论】: