假设192.168.0.57机器安装的oracle数据库,此机器由于系统库文件损坏导致系统无法启动,但是oracle的目录文件是完整的,将oracle目录迁移到其他机器,再改机器IP会192.168.0.57恢复数据库访问(现实遇到此情况,略做记录)。
拷贝文件到另一台机器(这里模拟,实际遇到的情况是oracle在物理存储设备的磁盘上,磁盘挂载在虚拟机上,将磁盘挂载到其他机器)
scp -r /u01/app oracle@192.168.0.58:/u01/
在192.168.0.58配置环境变量(根据需要配置在系统级别或者用户级别的环境变量中,这里配置在系统级别)
[root@oracle58 ~]# vim /etc/profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=oracle57 #主机名
export ORACLE_UNQNAME=orcl_p
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1
export ORACLE_SID=orcl
export PATH=/usr/sbin:$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
在0.58机器配置监听,主要修改监听的HOST=指向的ip或者主机名称,
[oracle@oracle58 ~]$ cd /u01/app/oracle/product/12.2.0.1/db_1/network/admin/
[oracle@oracle58 admin]$ vim listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/12.2.0.1/db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle58 )(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracle
根据需要修改tns文件,这里没改
[oracle@oracle58 admin]$ vim tnsnames.ora
启动监听
[oracle@oracle58 admin]$ lsnrctl start
[oracle@oracle58 admin]$ lsnrctl status
启动数据库
[oracle@oracle58 admin]$ sqlplus / as sysdba
SQL> startup
到这里数据库可以访问了。但是实际上还有几个文件遗漏了,下面三个文件同样从老机器拷贝到对应的目录
[root@oracle57 ~]# ls /etc/oratab
[root@oracle57 ~]# ls /usr/local/bin/
coraenv dbhome oraenv