ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 修改数据库的SID

修改数据库的SID

原创 Linux操作系统 作者:mugen 时间:2019-02-27 11:51:04 0 删除 编辑

举例说明,我的数据库的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 = testdb
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:oracleora81)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = testdb)
      (ORACLE_HOME = E:oracleora81)
      (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:Oracleadmintestpfileinittest.ora
oradim -NEW -SRVC OracleServicetest -STARTMODE manual -PFILE "D:Oracleadmintestpfileinittest.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 homedatabase下面
而且密码文件的名字一定要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/9408/viewspace-102136/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 单机安装Oracle RAC
下一篇: 等咋有了钱
请登录后发表评论 登录
全部评论

注册时间:2002-04-05

  • 博文量
    464
  • 访问量
    355586