如何更改Oracle XE实例的SID
-
03-07-2019 - |
题
我需要更改 Oracle XE 数据库的 SID(不是服务名称)以匹配生产数据库。
当我尝试在线搜索时,大多数页面都在描述通过 tnsnames.ora 更改或添加服务名称;那不是我需要做的。
解决方案
这 阿克托姆 文章有答案,但格式和冗长使其难以理解,所以这里是一个总结:
[XE_HOME] 表示 Oracle XE 的安装位置。通常这是 C:\oraclexe\app\oracle\product\10.2.0\server
.
确保您具有管理员权限,否则该过程将失败。
- 配置SPFILE(如果需要,可以删除旧文件)
copy [XE_HOME]\dbs\spfileXE.ora [XE_HOME]\dbs\spfileNEW_SID_NAME.ora
copy [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 stop
oradim -new -sid NEW_SID_NAME -startmode auto -pfile [XE_HOME]\database\initNEW_SID_NAME.ora
oradim -delete -sid XE
lsnrctl start
- 更新 ORACLE_SID 环境属性(系统设置 > 高级 > 环境)
- 强制 Oracle 向监听器注册
sqlplus / as sysdba
并执行alter system register;
您可以通过执行以下查询来验证 SID 是否已更改: select instance_name from v$instance;
其他提示
Asktom已答案,我不得不通过很多google-fu来实现它。
我对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
我通过查询选择了来自v $ instance;
的instance_name,监听器将是NEW_SID_NAME,等等。但是在命令行中运行 lsnrctl status
或查询从dba_services中选择名称;
并未将NEW_SID_NAME显示为侦听器。
解决这个问题的方法是在sqlplus上执行followind语句:
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。所以我做的是:
- 停止并删除现有服务(如果有): 醇>
- 停止听众
- 按照Johannes 的说明配置SPFILE
- 制作脚本XE.bat的副本,您可以随意命名
-
编辑脚本副本,如下所示:
- 更改行“设置ORACLE_SID = XE” “设置ORACLE_SID = NEW_SID_NAME”
- 随时随地更改“-sid XE”到“-sid NEW_SID_NAME”
- 更新调用“orapwd.exe”的行。命令指向名为PWDNEW_SID_NAME.ora而不是PWDXE.ora 的文件
- 更新将spfileXE.ora回显到initXE.ora的行,将spfileNEW_SID_NAME.ora回显到initNEW_SID_NAME.ora(这部分可能会使第3步无效但我还是喜欢这样做,以防万一...)
-
执行脚本......它会提示您输入几次SYSTEM密码
醇>
oradim -delete -sid XE
输入1的值:
或
输入2的值:
就是这样,你的NEW_SID_NAME的新数据库正常运行!!