修改数据库的SID

修改数据库的SID  

举例说明 , 我的数据库的 SID testdb, 现在要改成 oral. 更改 ORACLE 数据库的 sid, 涉及到的用东西比较多 , 但是大概来说就以下六步 .

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 安装的不同
包括数据库的服务 , 监听器等等 .

2
、修改 initSID.ora 文件,修改 instance_name 为新的 SID

找到你的初始化参数文件 , 里面有下面的一下参数 .
db_name = "testdb"
instance_name = testdbl
service_names = testdb

改成
db_name = "testdb"
instance_name = oral
service_names = oral

注意 ,db_name 不要改 , 因为我们的数据库还是叫 testdb, 但是它的服务也就是 sid, 改成 oral, 否则会报错 . 修改之后 , 保存好这个文件

3
、修改注册表的 ORACLE_SID

在注册表的 local machine 下面的 software 下面 , 找到 oracle hom0 主键 , 下面有个参数 , 叫做 ORACLE_SID, 改成 oral 记住 , 只改这一个 . 其他的不用改了 , 比方说服务 . 等等 , 否则会报错 .

4
、修改 listener.ora 中的 SID_NAME

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = E:\oracle\ora81)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = testdb)
(ORACLE_HOME = E:\oracle\ora81)
(SID_NAME = oral)
)
)

把里面的 SID_NAME 给成 oral, 如上面的例子所表示 .

5
oradim 删除原来 SID 的服务,添加新 SID 的服务

这步比较复杂 , 涉及到 oradim 命令的用法 . 下面我简单的介绍一下它 的用法

创建例程:
-NEW -SID sid | -SRVC
服务 [-INTPWD 口令 ] [-MAXUSERS 数量 ] [-STARTMODE a|m] [-PFILE 文件 ] [-TIMEOUT ]
编辑例程:
-EDIT -SID sid [-NEWSID sid] [-INTPWD
口令 ] [-STARTMODE auto|manual] [-PFILE 文件名 ] [-SHUTMODE a|i|n]
[-SHUTTYPE srvc|inst|srvc,inst] [-TIMEOUT
]
删除例程:
-DELETE -SID sid | -SRVC
服务名称
启动服务和例程:
-STARTUP -SID sid [-USRPWD
口令 ] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE 文件名 ]
关闭服务和例程:
-SHUTDOWN -SID sid [-USRPWD
口令 ] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE a | i | n]
查询帮助:
-? | -h | -help
-SID sid
指定要启动的实例名称
-SRVC
服务
指定要启动的服务名称
-USRPWD
口令
指定内部用户的口令,如果作为 NT 管理员登录,不用此参数
-PFILE
文件名
为实例指明初始化参数文件,如果参数文件在 Oracle 的默认位置,则不需要此命令
-STARTTYPE srvc|inst|srvc,inst
表示要启动什么
srvc————
只启动服务
inst————
启动实例,服务必须已经启动并开始工作了
srvc,inst —
服务和实例都启动

-SHUTTYPE srvc|inst|srvc,inst
表示要终止什么,参数选项同上
-STARTMODE a|m
表示启动实例所使用的模式
a————auto
方式(自动)
m————manual
方式(手动)
-SHUTMODE a|i|n
表示终止实例所使用的关闭模式
a————abort
方式
i————immediate
方式
n————normal
方式
例子:
在服务里生成一个新的实例管理服务,启动方式为手工
oradim -NEW -SID test -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.ora
oradim -NEW -SRVC OracleServicetest -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.ora
注:有效的服务名为 “OracleService” 后跟 “ SID”
-SID test
-SRVC OracleServicetest 等价
删除此实例或服务
oradim -DELETE -SID test
oradim -DELETE -SRVC OracleServicetest
编辑此实例,启动方式改为手动
oradim -EDIT -SID test -STARTMODE manual
编辑此实例,启动方式改为自动
oradim -EDIT -SID test -STARTMODE auto
启动 test
oradim -STARTUP -SID test
oradim -STARTUP -SID test -STARTTYPE srvc,inst
只启动 test 服务
oradim -STARTUP -SID test -STARTTYPE srvc
只启动 test 实例
oradim -STARTUP -SID test -STARTTYPE inst
关闭 test
oradim -SHUTDOWN -SID test
oradim -SHUTDOWN -SID test -SHUTTYPE srvc,inst


testdb
我们使用
oradim –DELETE –SID testdb
删除了 testdb 实例
然后
oradim –NEW –SID oral
添加新的实例
注意 , 这个命令 , 可以写到控制文件和注册表的服务里面 , 我更改后 , 可以看到在服务里面 , 服务名称已经改过来了 .
但是这个时候还是不可以登录到 oracle. 提示为权限不足 .


6
orapwd 生成新 SID 的口令
具体的 orapwd, 我想大家都知道了 , 要创建一个密码文件就要用它 , 至于为什么我们需要重新创建密码文件 , 我还不是很清楚 , 等我弄清楚了之后 , 我会把更新我的文档 .

需要注意的是 , 生成的密码文件 , 一定要保存到 orale home\database 下面
而且密码文件的名字一定要 PWDsid.ora
具体的为什么我还不是很清楚 .

好了 . 现在你可以通知你的客户端 , 把他们的 tnsname.ora 中的
SZ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.47.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = oral)
)
)
service_name
都改成 oral , 就可以用了

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12330444/viewspace-710164/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12330444/viewspace-710164/

你可能感兴趣的:(修改数据库的SID)