centos7.2 oracle10g 如何修改sid实例名

来源:互联网 发布:linux 对外开放端口 编辑:程序博客网 时间:2024/05/16 16:24

主机名改变后需要更改改下面的文件

1.  监听里的host需要更改如下:

/u01/app/oracle/product/10.2.0/db_1/network/admin

修改如下文件主机名

 sed –i 's/ora10/oracle10/g'/u01/app/oracle/product/10.2.0/db_1/network/admin/ listener.ora

 

[oracle@host-192-168-246-161 admin]$ cat listener.ora

# listener.ora Network Configuration File:/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME =PLSExtProc)

      (ORACLE_HOME =/u01/app/oracle/product/10.2.0/db_1)

      (PROGRAM = extproc)

    )

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS =(PROTOCOL = TCP)(HOST = oracle10)(PORT= 1521))

      (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC0))

    )

  )

2.  修改主机名

hostnamectl set-hostnameoracle

vi /etc/hosts

192.168.246.161oracle10

修改实例名sid

1.  检查原来数据库名

[oracle@oracle admin]$ echo $ORACLE_SID

ora10

[oracle@oracle admin]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Sep 8 11:04:152017

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

SQL> select instance from v$thread;

INSTANCE

--------------------------------

ora10

2.  修改Oracle用户的ORACLE_SID环境变量,如由orc10修改为oracle10

[oracle@oracle admin]$ cat ~/.bash_profile | grep -i sid

export ORACLE_SID=ora10

[oracle@oracle admin]$ sed -i 's/ora10/oracle10/g' ~/.bash_profile

[oracle@oracle admin]$ cat ~/.bash_profile | grep -i sid

export ORACLE_SID=oracle10

3.  使新修改的ORACLE_SID环境变量生效

[oracle@oracle dbs]$ source ~/.bash_profile

[oracle@oracle dbs]$ echo $ORACLE_SID

oracle10

4.  修改/etc/oratab文件,将sid名由旧的修改为新的,如从orc10修改为oracle10

[oracle@oracle admin]$ vi /etc/oratab

oracle10:/u01/app/oracle/product/10.2.0/db_1:Y

 [oracle@oracle admin]$cd $ORACLE_HOME/dbs

[oracle@oracle dbs]$ pwd

/u01/app/oracle/product/10.2.0/db_1/dbs

 

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

hc_orc10.dat->hc_oracl10.dat

lkORCL->lkORACLE10

orapworcl->orapworacle10

snapcf_orcl.f->snapcf_oracle10.f

spfileorcl.ora->spfileoracle10.ora

mv hc_orc10.dat hc_oracl10.dat      

mv lkORCL lkORACLE10                

mv orapworcl orapworacle10          

mv snapcf_orcl.f snapcf_oracle10.f  

mv spfileorcl.ora spfileoracle10.ora

[oracle@oracle dbs]$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5force=y

[oracle@oracle dbs]$ ls -lrt orapw*

-rw-r----- 1 oracle oinstall 2048 Sep  8 11:36 orapworacle10

[oracle@oracle ora10]$ cp$ORACLE_BASE/admin/ora10/pfile/init.ora.852017173323 /u01/app/oracle/product/10.2.0/db_1/dbs/initoracle10.ora

[oracle@oracle dbs]$ sqlplus / as  sysdba

 

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Sep 8 11:44:592017

 

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

 

Connected to an idle instance.

 

SQL> startup

ORACLE instance started.

 

Total System Global Area 4966055936 bytes

Fixed Size                 2027544 bytes

Variable Size            889196520 bytes

Database Buffers        4060086272 bytes

Redo Buffers              14745600 bytes

Database mounted.

Database opened.

SQL>

检查数据库实例名

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

idle> select instance from v$thread;

INSTANCE
--------------------------------------------------------------------------------
oracle10

2.  修改数据库名(dbname)

 

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

dle> conn / as sysdba
Connected.
SQL> show parameter name

 

NAME                                 TYPE        VALUE

------------------------------------ -----------------------------------------

db_file_name_convert                string

db_name                              string      ora10

db_unique_name                       string      ora10

global_names                         boolean     FALSE

instance_name                        string      oracle10

lock_name_space                      string

log_file_name_convert                string

service_names                        string      ora10

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

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

sys@ORCL> alter system archive log current;

System altered.

 

2.   生成重建控制文件的脚本

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

Database altered.

 

3.   关闭数据库,需要干净关闭,不能shutdownabort

sys@ORCL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> exit

Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

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

cd/u01/app/oracle/admin/ora10/udump

 

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

[oracle@oracle udump]$ cp oracle10_ora_2768.trc ccf.sql

 

 

 

 

查找STARTUPNOMOUNT语句,将这一行上面的所有行都删除
查找所有以--开始的行,把这些行删除
查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM
找到CREATE CONTROLFILEREUSE DATABASE...语句,将其中的REUSE修改为SET
找到RECOVER DATABASE USINGBACKUP CONTROLFILE语句,将其用双横线(--)注释掉

6.  修改实例名称和目录

[oracle@oracle ~]$ sed -i 's/ora10/oracle10/g'/u01/app/oracle/admin/ora10/udump/ccf.sql

[oracle@oracle ~]$ sed -i 's/ORA10/ORACLE10/g'/u01/app/oracle/admin/ora10/udump/ccf.sql

[oracle@oracle ~]$ mv /u01/app/oracle/oradata/ora10/u01/app/oracle/oradata/oracle10

[oracle@oracle ~]$ vi/u01/app/oracle/admin/oracle10/udump/ccf.sql

 

STARTUP NOMOUNT

CREATE CONTROLFILE SET DATABASE "ORACLE10"RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'/u01/app/oracle/oradata/oracle10/redo01.log'  SIZE 50M,

  GROUP 2'/u01/app/oracle/oradata/oracle10/redo02.log'  SIZE 50M,

  GROUP 3'/u01/app/oracle/oradata/oracle10/redo03.log'  SIZE 50M

DATAFILE

  '/u01/app/oracle/oradata/oracle10/system01.dbf',

 '/u01/app/oracle/oradata/oracle10/undotbs01.dbf',

 '/u01/app/oracle/oradata/oracle10/sysaux01.dbf',

 '/u01/app/oracle/oradata/oracle10/users01.dbf',

 '/u01/app/oracle/oradata/oracle10/example01.dbf'

CHARACTER SET ZHS16GBK

;

--RECOVER DATABASE USINGBACKUP CONTROLFILE

ALTER DATABASE OPEN RESETLOGS;

ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/oracle10/temp01.dbf'

     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

7.  如果归档日志目录名中包含sid,那么修改归档目录名

归档目录使用的是flash_recovery_area,所以需要将这个目录中的ORCL目录重命名为ORACLE10

[oracle@oracle ~]$ mv /u01/app/oracle/admin/ora10/u01/app/oracle/admin/oracle10

mv /u01/app/oracle/flash_recovery_area/ORA10 /u01/app/oracle/flash_recovery_area/ORACLE10

 

[oracle@oracle dbs]$ sed -i 's/ora10/oracle10/g'/u01/app/oracle/product/10.2.0/db_1/dbs/initoracle10.ora

8.  删除之前的控制文件

rm -rf /u01/app/oracle/oradata/oracle10/control*

9.   加载修改好的ccf.sql

iSQL> @/u01/app/oracle/admin/oracle10/udump/ccf.sql

ORACLE instance started.

 

Total System Global Area 4966055936 bytes

Fixed Size                  2027544 bytes

Variable Size             889196520 bytes

Database Buffers         4060086272 bytes

Redo Buffers               14745600 bytes

 

Control file created.

 

 

Database altered.

 

 

Tablespace altered.

10.  检查数据库状态

SQL> conn / as sysdba

Connected.

SQL> select open_mode from v$database;

 

OPEN_MODE

----------

READ WRITE

 

SQL>  show parameter name

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_file_name_convert                 string

db_name                              string      oracle10

db_unique_name                       string      oracle10

global_names                         boolean     FALSE

instance_name                        string      oracle10

lock_name_space                      string

log_file_name_convert                string

service_names                        string      oracle10

发现数据库名(db_name)已经修改为oracle10

阅读全文
0 0
原创粉丝点击