oracle复制数据文件迁移方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、迁移背景
总局为了整合资源,需要把原有服务器130.9.1.49迁移到另外一台服务器上,IP地址不变;
由于操作系统(AIX7.0)版本、分区类型不变,数据库版本(11.2.0.3)相同,数据库处于非归档模式下,数据量也大,exp效率太低,所以决定采用数据文件进行恢复。
二、数据迁移步骤
1、查找原库物理文件位置
--查看数据文件
select name from v$datafile;
--查看临时文件
select name from v$tempfile;
--查看日志文件
select member from v$logfile;
--查看控制文件
select name from v$controlfile;
此时要分析数据文件所在的不同路径,需要在新服务器上建立相应的文件夹
2、关闭原服务器数据库,修改原服务器IP。
原服务器为临时IP(100.16.91.70),新服务器IP(130.9.1.49)
3、130.9.1.49 oracle环境配置
创建oracle用户
复制100.16.91.70配置文件/home/oracle/.profile到130.9.1.49下/home/oracle/.profile下,./.profile使其生效
4、新服务器安装oracle软件(只安装软件,不建库)
因为是只安装数据库软件,比较简单,此处省略安装方法
又因为30.9.1.49 oracle用户配置文件是复制100.16.91.70而来,所以安装后两个服务器数据库环境一样
5、复制文件(目录不存在的需要新建)
a)第一步查询出的所有物理文件复制到130.9.1.49上采用 rcp命令,此命令使用方法附在最后
b)复制100.16.91.70 oracle安装的配置目录文件
oracle目录下的admin、flash_recovery_area(我这里没这个目录),database(PWDfile、pfile 也没)、dbs(spfile)、NETWORK\ADMIN(listener.ora、tnsnames.ora
c)rcp -Rf说是复制的时候会一同复制文件的属性和所有者信息,但我发现复制过来的文件夹及文件的所有者变成root:system了
所以要修改以上两个步骤复制的所有文件夹及文件的所有者
比如:chown -Rf oracle:dba $ORACLE_HOME/admin
5、启动数据库
startup
测试数据库,测试监听情况
三、碰到的问题
由于粗心,复制原数据库数据文件时,只停了应用,没有关闭原数据库,导致在新服务器上启动数据库的时候碰到几个问题,记录如下:
启动数据库报错
Total System Global Area 7482626048 bytes
Fixed Size 2236048 bytes
Variable Size 989856112 bytes
Database Buffers 6476005376 bytes
Redo Buffers 14528512 bytes
Database mounted.
ORA-01172: recovery of thread 1 stuck at block 208 of file 3
ORA-01151: use media recovery to recover block, restore backup if needed
采取恢复此文件
recover datafile 3;
SQL> recover datafile 3;
ORA-03113: e
nd-of-file on communication channel
Process ID: 13959320
Session ID: 232 Serial number: 3
看来是复制数据文件没关数据库的问题,只好重新复制此文件
先通过语句找出文件名:
select file_name from dba_data_files where file_id='3'
重新复制文件
rcp -rp /langchaodata/O817/undotbs01.dbf rcp1:/langchaodata/O817
再恢复此文件又报错
SQL> recover datafile 3;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file 3 failed verification check
ORA-01110: data file 3: '/langchaodata/O817/undotbs01.dbf'
ORA-01207: file is more recent than control file - old control file
唉,控制文件的问题,继续处理吧
重建控制文件
SQL> alter database backup controlfile to trace as '/oracle/oradata/test.sql';
此时生成一个test.sql脚本,里边包含了各种数据库模式下重建控制问价你的方式
我选择了,保存到aa.sql里,部分内容如下
CREATE CONTROLFILE REUSE DATABASE "O817" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 1530
LOGFILE
GROUP 1 '/oracle/oradata/redo01.log' SIZE 512M BLOCKSIZE 512,
GROUP 2 '/oracle/oradata/redo02.log' SIZE 512M BLOCKSIZE 512,
GROUP 3 '/oracle/oradata/redo03.log' SIZE 512M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/langchaodata/O817/system01.dbf',
'/langchaodata/O817/sysaux01.dbf',
'/langchaodata/O817/undotbs01.dbf',
'/langchaodata/O817/users01.dbf',
。。。。。。。
'/langchaodata/O817/DATA_BS1_15.DBF',
'/langchaodata/O817/DATA_BS1_11.DBF'
CHARACTER SET ZHS16GBK
;
然后执行此脚本
SQL> recover database;
SQL> alter database open;
rcp命令配置方法:
比如要把主机A的文件复制到主机B
配置主机A:
vi /etc/hosts ,打开文件后最后边添加
主机B的IP rcp2
根目录编辑文件(没有则创建)
vi /.rhosts 添加 rcp2 root
配置主机B:
vi /etc/hosts ,打开文件后最后边添加
主机A的IP rcp1
根目录编辑文件(没有则创建)
vi /.rhosts 添加 rcp1 root
配置完成后,比如把主机A /oracle/test.sql复制到主机B /test目录
则执行
rcp /oracle/test.sql rcp2:/test