主机名改变后需要更改改下面的文件
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的如我对如下文件修改为其后对应的文件
@H_404_142@hc_orc10.dat->hc_oracl10.dat @H_404_142@lkORCL->lkORACLE10 @H_404_142@orapworcl->orapworacle10 @H_404_142@snapcf_orcl.f->snapcf_oracle10.f @H_404_142@spfileorcl.ora->spfileoracle10.oramv 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,Oracle. All rights reserved.
Connected to an idle instance.
sql> startup
ORACLE instance started.
Total System Global Area 4966055936 bytes
Fixed Size2027544 bytes
Variable Size889196520 bytes
Database Buffers4060086272 bytes
Redo Buffers14745600 bytes
Database mounted.
Database opened.
sql>
检查数据库实例名
1. 通过如下语句检查数据库实例名,发现实例名已经由orcl变成oracle10
@H_404_142@idle> select instance from v$thread; INSTANCE -------------------------------------------------------------------------------- oracle10 |
虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)
dle> conn / as sysdba
Connected.
sql> show parameter name
NAME TYPE VALUE
------------------------------------ -----------------------------------------
db_file_name_convertstring
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
1. 首先切换一下在线日志,使数据库做checkpoint
@H_404_142@sys@ORCL> alter system archive log current; System altered. |
@H_404_142@sys@ORCL> alter database backup controlfile to trace resetlogs; Database altered. |
3. 关闭数据库,需要干净关闭,不能shutdownabort
@H_404_142@sys@ORCL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. @H_404_142@sql> exit @H_404_142@Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production @H_404_142@With the Partitioning,OLAP and Data Mining options |
4.进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本
cd/u01/app/oracle/admin/ora10/udump
@H_404_142@[oracle@oracle udump]$ cp oracle10_ora_2768.trc ccf.sql |
查找STARTUPNOMOUNT语句,将这一行上面的所有行都删除
查找所有以--开始的行,把这些行删除
查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM
找到CREATE CONTROLFILEREUSE DATABASE...语句,将其中的REUSE修改为SET
找到RECOVER DATABASE USINGBACKUP CONTROLFILE语句,将其用双横线(--)注释掉
[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
rm -rf /u01/app/oracle/oradata/oracle10/control*
@H_404_142@isql> @/u01/app/oracle/admin/oracle10/udump/ccf.sql @H_404_142@ORACLE instance started. @H_404_142@ @H_404_142@Total System Global Area 4966055936 bytes @H_404_142@Fixed Size 2027544 bytes @H_404_142@Variable Size 889196520 bytes @H_404_142@Database Buffers 4060086272 bytes @H_404_142@Redo Buffers 14745600 bytes @H_404_142@ @H_404_142@Control file created. @H_404_142@ @H_404_142@ @H_404_142@Database altered. @H_404_142@ @H_404_142@ @H_404_142@Tablespace altered. |
10. 检查数据库状态
@H_404_142@sql> conn / as sysdba @H_404_142@Connected. @H_404_142@sql> select open_mode from v$database; @H_404_142@ @H_404_142@OPEN_MODE @H_404_142@---------- @H_404_142@READ WRITE @H_404_142@ @H_404_142@sql> show parameter name @H_404_142@ @H_404_142@NAME TYPE VALUE @H_404_142@------------------------------------ ----------- ------------------------------ @H_404_142@db_file_name_convert string @H_404_142@db_name string oracle10 @H_404_142@db_unique_name string oracle10 @H_404_142@global_names boolean FALSE @H_404_142@instance_name string oracle10 @H_404_142@lock_name_space string @H_404_142@log_file_name_convert string @H_404_142@service_names string oracle10 |