当前位置:  数据库>oracle

修改Oracle实例名(sid)和数据库名(db_name)

    来源: 互联网  发布时间:2017-04-02

    本文导语: 有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:1、修改实例名(SID)2、修改数据库名(dbname) 下面演示将数据库sid和dbname由orcl修改为cnhtm的过程: 1...

有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:
1、修改实例名(SID)
2、修改数据库名(dbname)

下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:

1、修改实例名(sid)

1.1、检查原来的数据库实例名(sid)

Oracle@oracle[/home/oracle]> echo $ORACLE_SID
orcl
oracle@oracle[/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options


sys@ORCL> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
orcl

1.2、关闭数据库

注意不能用shutdown abort,只能是shutdown immediate或shutdown normal

sys@ORCL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ORCL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options





1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtm

oracle@oracle[/home/oracle]> cat ~/.bash_profile|grep -i sid
ORACLE_SID=cnhtm
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm

oracle@oracle[/home/oracle]> cat /etc/oratab

......

cnhtm:/oracle/app/10.1:Y
+ASM:/oracle/app/10.1:Y

1.5、进入到$ORACLE_HOME/dbs目录

将所有文件名中包含原来的sid的修改为对应的新sid的
如我对如下文件修改为其后对应的文件

hc_orcl.dat->hc_cnhtm.dat
lkORCL->lkCNHTM
orapworcl->orapwcnhtm
snapcf_orcl.f->snapcf_cnhtm.f
spfileorcl.ora->spfilecnhtm.ora



1.6、使新修改的ORACLE_SID环境变量生效

oracle@oracle[/oracle/app/10.1/dbs]> . ~/.bash_profile
oracle@oracle[/oracle/app/10.1/dbs]> echo $ORACLE_SID
cnhtm

1.7、重建口令文件

因为口令文件改名后不能在新实例中使用,所以重建

oracle@oracle[/oracle/app/10.1/dbs]> orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y
oracle@oracle[/oracle/app/10.1/dbs]> ls -lrt orapw*
-rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm

1.8、启动数据库

oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

idle> startup
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1218292 bytes
Variable Size 62916876 bytes
Database Buffers 96468992 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.





1.9、检查数据库实例名

通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtm

idle> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
cnhtm

2、修改数据库名(dbname)

虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)

idle> conn / as sysdba
Connected.
sys@ORCL> show parameter name

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string orcl
db_unique_name string orcl
global_names boolean FALSE
instance_name string cnhtm
lock_name_space string
log_file_name_convert string
service_names string orcl








可以通过如下步骤修改数据库名(dbname)

2.1、首先切换一下在线日志,使数据库做checkpoint

sys@ORCL> alter system archive log current;

System altered.

2.2、生成重建控制文件的脚本

sys@ORCL> alter database backup controlfile to trace resetlogs;

Database altered.

2.3、关闭数据库,需要干净关闭,不能shutdown abort

sys@ORCL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@ORCL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options





2.4、进入$ORACLE_BASE/admin//udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本

oracle@oracle[/oracle/admin/orcl/udump]> ls -lrt
total 2608
-rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc

......

-rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc

2.5、将找到的trc文件复制一份,并命名为ccf.sql

oracle@oracle[/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql

2.6、修改ccf.sql

查找STARTUP NOMOUNT语句,将这一行上面的所有行都删除
查找所有以--开始的行,把这些行删除
查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM
找到CREATE CONTROLFILE REUSE DATABASE...语句,将其中的REUSE修改为SET
找到RECOVER DATABASE USING BACKUP CONTROLFILE语句,将其用双横线(--)注释掉
如果有精力,可以修改这个脚本中的datafile和logfile部分使用新的文件名称,其实这部分不修改也可以,我为了测试的目的进行了修改,修改后要记得去重命名数据文件和log文件,将对应的数据文件和log文件与这里的名称相对应





    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 对数据库的查询结果resultset进行修改后,怎么将修改的信息传回给数据库
  • sql数据库多用户模式修改方法
  • 修改数据库为多用户模式
  • sql数据库如何查询修改数据库恢复模式?
  • sql 批量修改数据库表
  • 数据库修改历史记录工具 dbdeploy
  • sql数据库修改数据库用户
  • 新手:用WEB页面修改数据库中的表?
  • 修改SQL Server 2005中数据库文件存放路径的方法 iis7站长之家
  • 修改数据库文件及日志文件增量的sql语句
  • 如何修改mysql数据库的max_allowed_packet参数
  • mysql数据库修改数据表引擎的方法
  • 使用phpMyAdmin修改MySQL数据库root用户密码的方法
  • 急!!!!servlet修改数据库后如何commit
  • 修改MySQL数据库中表和表中字段的编码方式的方法
  • 请有经验的朋友给个思路,关于通过ejb修改数据库记录。100分送上!bow
  • centos mysql 修改数据库目录
  • SqlServer修改数据库文件及日志文件存放位置
  • mysql修改数据库编码(数据库字符集)和表的字符编码的方法
  • 修改SQL Server 2005中数据库文件存放路径的方法
  • 修改Windows硬盘分区名称
  • unix 下 C++实现 ftp 到另一台主机上 修改文件内容 !能不能直接在主机上修改 还是只能get下来本地修改完后 在put上去
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 高手帮帮忙!!! 在线等!!outlook的附件修改且保存后,再次打开发现是修改之前的原件
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 修改ip地址的话应该修改/ect下哪个文件里的内容?
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 原密码被人恶意修改,如何修改suse系统的超级用户密码(急)
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 有什么命令可以修改整个目录下文件的最后修改时间?
  • 通过docker commit命令保存对docker容器的修改


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3