返回列表 发帖
修改数据库的sid
我已经成功的改好了.希望对大家有用
os :windowns xp



举例说明,我的数据库的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 ,就可以用了
试试看把.



如果是9i,有個叫nid的命令行工具就可以方便地實琭

tip of the week
tip for week of october 27, 2002

using nid to change db name

this tip comes from darl kuhn, dba at sun microsystems, in broomfield, co.


description: prior to oracle9i database release 2, you were required to rebuild the controlfile to rename your database.

now with oracle9i database release 2, you can use the "nid" utility automates this task. for example, if you want to change

your database name to brdstn here are the steps:

1. shutdown database
2. startup mount
3. $ nid target=/ dbname=brdstn
4. shutdown database
5. change init.ora/spfile name, i.e.: initbrdstn.ora
6. change db_name parameter in init.ora/spfile, i.e.: db_name='brdstn'
7. change oracle_sid to point to new database name
8. startup mount
9. alter database open resetlogs
10. take a backup
欢迎光临:逐梦论坛

返回列表

Powered by Discuz! 7.2   论坛QQ群:逐梦论坛群

© 2001-2021 Comsenz Inc. 鲁公网安备 37120302000001号