主机名改变后需要更改改下面的文件
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,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
idle> select instance from v$thread; |
虽然已经修改过了实例名(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
sys@ORCL> alter system archive log current; |
sys@ORCL> alter database backup controlfile to trace resetlogs; |
3. 关闭数据库,需要干净关闭,不能shutdownabort
sys@ORCL> shutdown immediate 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
[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*
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 |