instance_name 是 oracle 数据库参数。而ORACLE_SID 是操作系统的环境变量,两者不一样,
但是ORACLE_SID 必须与 instance_name 的值一致,随意两个必须一起修改
windows:
以 ORACLE11g 为例,举例说明更改 SID 名称的过程。假如数据库的 SID 叫 orcl,现在改成 coco,有以下 6 个步骤:
1、停止所有的 Oracle 服务。
2、修改 initSID.ora 文件,修改 instance_name 为新的 SID
3、修改注册表的 ORACLE_SID
4、修改 listener.ora 中的 SID_NAME
5、oradim 删除原来 SID 的服务,添加新 SID 的服务
6、orapwd 生成新 SID 的口令 下面我详细的解释一下.
1.停止所有的 oracle 服务,oracle 的相关服务都以 oracle 为前缀,有以下几个:
OracleService<数据库名>
OrcleOraHome92TNSListener
OracleDBConsle<SID>
OracleJobScheduler<SID>
OracleOraDb10g_homeliSQL*Plus
2.修改初始化文件,将 instance_name 参数值设置为新的 SID 名称,如果没有可编辑的 PFILE 文件,可以使用 CREATE PFILE FROM SPFILE 命令创建。将初始化文件参数的以下内容:
db_name="orcl"
instance_name=orcl
修改成
db_name="orcl"
instance_name=coco(注意 db_name 不要修改,数据库还是称为 orcl,但是它的服务也就是 sid 改成 orcl.)
3.修改注册表的 Oracle_sid 的值
在注册表 HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_ORaDb10g_home1 下面将Oracle_SID键值修改为为 coco,注意,其他的不要改动。
4.修改 listener.ora 中的 SID_NAME
在目录%Oracle_home%\NETWORk\ADMIN 下找到 listener.ora,把这个文件之后一项的SID_NAME=coco
5.用 oradim 删除原来的 SID 服务,添加新 SID 的服务
oradim -DELETE -SID orcl
oradim -NEW -SID coco
添加新的实例 注意,这个命令,可以写到控制文件和注册表的服务里面,我更改后,可以看到在服务里面,服务名称已经改过来了.
但是这个时候还是不可以登录到 oracle.提示为权限不足.
6.用 orapwd 生成新的 SID 的口令
用工具 orapwd 创建新的口令文件.将文件保存到%ORACLE_HOME%\database 目录下面,
ORAPWD FILE=%ORACLE_HOME%\database\PWDcoco.ora password =admin password 设置的是 SYS 用户的口令.