介绍
某一天突然接到通知,要将一台正常运行的数据库迁移到另一台服务器中,数据库可以停机,遂写下了这篇文章,记录本次的迁移过程。
前置条件
- 数据库允许停机
- 两台服务器必须是相同的操作系统
案例
环境说明
本案例使用vmware虚拟化两台服务器,操作流程跟生产环境完全一致。
迁移前 | 迁移后 | |
操作系统 | CentOS 7.9 | CentOS 7.9 |
IP地址 | 192.168.3.85 | 192.168.3.113 |
实例名 | orcl | orcl |
验证数据方法
由于本地模拟环境没有生产环境的数据,我这里手动在192.168.3.85的数据库上新增了一个表TEST1,并插入了一条数据,待我们迁移完后再次验证该表即可。
1、停止原数据库
使用oracle用户连接上ssh远程后,以sysdba的权限进入到sqlplus命令窗口停止数据库。
SQL> shutdown immediate
2、新服务器安装数据库软件和监听
在192.168.3.113上安装Oracle软件和监听程序,这一步就不再写了,如果有不会或者忘记怎么安装的,可以参考我之前的文档,下面是两个文档的地址。
图形界面安装Oracle 11G
静默安装Oracle 11G
注意,只需要安装Oracle软件和监听,不需要安装数据库(实例)。
3、拷贝数据库文件至新服务器
在安装完数据库后,我们需要将Oracle的一些文件拷贝到新的服务器中。我这里通过scp去拷贝这些文件。
注意,我这里不拷贝diag文件,如果你有需要,可以拷贝它。
3.1、拷贝admin目录=
此目录主要包括审计目录、数据泵目录和pfile目录。
[oracle@localhost ~]$ scp -r admin oracle@192.168.3.113:/home/oracle
3.2、拷贝快速闪回区目录
快速闪回区包括备份的控制文件,以及是默认的归档日志存储目录。
[oracle@localhost ~]$ scp -r fast_recovery_area/ oracle@192.168.3.113:/home/oracle
3.3、拷贝oradata目录
oradata目录主要是由数据文件和控制文件。
[oracle@localhost ~]$ scp -r oradata/ oracle@192.168.3.113:/home/oracle
3.4 拷贝口令文件和spfile文件
[oracle@localhost ~]$ cd $ORACLE_HOME/dbs
[oracle@localhost dbs]$ scp -r orapworcl spfileorcl.ora oracle@192.168.3.113:/home/oracle/app/oracle/product/11.2.0/dbhome_1/dbs
4、启动新服务器的数据库
使用oracle用户连接到新的服务器,还是以sysdba权限进入到sqlplus命令窗口。
SQL> startup
5、验证数据
在此步骤验证数据是否还在,如果我刚刚新增的记录还在,就说明数据库完整迁移过来了。我们使用PL/SQL Developer连上数据库查询。
从上图看到数据还在,说明成功将数据库迁移至192.168.3.113服务器了。
评论区