更改Oracle数据库的SID

 
转载自  james_yulei
最终编辑  james_yulei
概念:

    SID : 数据库实例名

    SQL> show parameter instance

    DB_NAME: 数据库名。可以用DBNEWID (nid)命令更改DB_NAME.

    SQL> show parameter db_name

    DBID: 数据库建立时创建的内部数字,用于区分不同数据库。RMAN会用该数字来区分数据库。当数据库都是正常创建时,DBID是不一样的。如果用复制的方法复制数据库,它们的DBID就会一样。可以用DBNEWID (nid)命令更改DBID.

    SQL> select dbid from v$database;

    下面开始更改SID.本例中,原SID名为oldsid,更改为newsid

    1. 关闭数据库

SQL > create pfile from spfile;     生成initoldsid.ora 文件,后续操作需要用到

SQL > shutdown immediate;

    2. 编辑环境变量

vi /home/oracle/.bash_profile

将其中的

export ORACLE_SID=oldsid   更改为

export ORACLE_SID=newsid

    为使环境变量生效,以oracle用户重新登录。

    3. 重命名参数文件

cd $ORACLE_HOME/dbs

# mv initoldsid.ora initnewsid.ora

    参数文件内容无需更改。如果本数据库是从另一台oracle服务器复制过来的,那需要将参数文件中的路径和内存等配置进行修改,这不属于本次任务。

    4. 创建口令文件

orapwd file=$ORACLE_HOME/dbs/orapwnewsid password=oracle

    至此,SID已经更改完成,数据库可以正常启动。以下操作是额外部分:

    5. 更改其他相关配置

    更改listener.ora:

    vi $ORACLE_HOME/network/admin/listener.ora,若其中配置了SID_NAME=OLDSID,则需要更改为NEWSID.然后重启监听:# lsnctl restart.

    更改tnsnames.ora:

    所有需要连接到本数据库的其他主机,都需要更改tnsnames.ora.将SERVICE_NAME = OLDSID更改为SERVICE_NAME = NEWSID.这样才能连接到本数据库。