本次数据库移植有以下几个步骤,每个步骤有分解,详细如下
1. 从41机器上导出数据 10-15分钟
2. 从41机器上把导出的数据ftp到15机器的/fs2/dump目录下 15-20分钟左右
3. 从把41导出的数据导入到15机器上 2:30左右
-------1. 从41机器上导出数据
1.1 如果是要正式的数据库移植,需要确定41数据库没有其他的用户连接,并且没有其他的事务进行。
-- 切断41机器和外界网络的连接
1.2 用expdp命令进行导出数据.expdp命令只能用在服务端执行,并且只能是10g以上的版本,命令如下:
--在41机器上执行的expdp导出命令
--expbp导出用户全部对象多个文件, 每个文件4G, 导出的文件为后面带日期,该导出过程需要10-15分钟
--该命令需要在/tmp/dump目录下执行,执行之后应该能看到6个相关文件,5个dmp文件 1个exp.log文件,注意检查
expdp gmm_zzrq/gmm_zzrq directory=dump_dir dumpfile=gmmdb_`date +"%Y%m%d%H%M%S"`_01.dmp,gmmdb_`date +"%Y%m%d%H%M%S"`_02.dmp,gmmdb_`date +"%Y%m%d%H%M%S"`_03.dmp,gmmdb_`date +"%Y%m%d%H%M%S"`_04.dmp,gmmdb_`date +"%Y%m%d%H%M%S"`_05.dmp logfile=gmmdb_`date +"%Y%m%d%H%M%S"`_exp.log job_name=CASES_EXPORT parallel=2 FILESIZE=4G EXCLUDE=DB_LINK
-------2. 从41机器上把导出的数据ftp到15机器的/fs2/dump目录下
2.1 确认15机器上有/fs2/dump目录,如果没有说明15机器重新启动过,/fs2文件系统是另外挂接的一个设备,需要挂接。在/home/oracle目录下有个挂接脚本,用root用户执行下面的命令,即可挂接该设备,并能找到/fs2/dump文件夹,文件夹下面目前有些文件,可以删除以dmp后缀的文件,/fs2的空间是50G,空出一定的空间大小(35G以上), 空间查看命令:df -g 查看
--挂接/fs2目录设备。root用户-------
# sh /home/oracle/mountfs.sh
--空间查看命令:
# df -g
2.2 从41节点ftp到15上, 命令如下:
在41机器的/tmp/dump目录下,注意ftp传输的时候一定要转成2进制的方式
####41机器
# ftp 192.168.5.15
user:oracle
password:oracle
ftp> cd /fs2/dump
ftp> bi
ftp> prompt off
ftp> mput gmmdb_<导出的日期>_*
传输完毕,查询15机器上/fs2/dump文件夹下的文件是否和41机器的大小一样。该ftp传输时间在15-20分钟左右
-------3. 从把41导出的数据导入到15机器上
--以下所有命令在15机器上执行
3.1 查看rac的节点运行状态, 如果racdb2运行,需要关闭racdb2节点,执行命令3.2步骤,执行之后,继续使用该命令查看状态.
--查看节点运行
srvctl status database -d racdb
-- 显示如下: 说明racdb2已经停止
Instance racdb1 is running on node db01
Instance racdb2 is not running on node db02
也可以用命令:crs_stat -t 查看
3.2 停掉racdb2节点的实例
--如果racdb2节点仍然在运行,用以下命令停止racdb2的实例
--停止节点2命令
srvctl stop instance -d racdb -i racdb2
3.3 查看15现在的rac数据库是否存在用户gmm_zzrq以及gmm_zzrq的所有对象
--查看是否能用gmm_zzrq登录,如果能登陆说明gmm_zzrq存在, 如果gmm_zzrq存在执行3.4命令
sqlplus gmm_zzrq/gmm_zzrq
3.4 删除15机器数据库中的gmm_zzrq用户和该用户下的所有对象
----级联删除用户gmm_zzrq及其该用户下的所有对象
sqlplus system/oracle
drop user gmm_zzrq cascade;
3.5 执行导入
3.5.1 编辑脚本 impdp_file.sh
--注意dmp文件的时间修改一下
impdp system/oracle directory=dump_dir15 dumpfile= gmmdb_20100702201351_01.dmp, gmmdb_20100702201351_02.dmp, gmmdb_20100702201351_03.dmp, gmmdb_20100702201351_04.dmp, gmmdb_20100702201351_05.dmp LOGFILE=gmmdb_`date +"%Y%m%d%H%M%S"`_imp.log parallel=2 SCHEMAS=gmm_zzrq job_name=CASES_IMPORT
3.5.2 把编辑好的脚本impdp_file.sh ftp到15机器的/fs2/dump文件夹下
3.5.3 查看15机器的/fs2/dump文件夹下,是否有nohup.out文件,如果有的话,删除
# rm /fs2/dump/nohup.out
3.5.4 在15机器的/fs2/dump文件夹下执行脚本 impdp_file.sh,开始数据导入,该导入时间 在2:30左右
nohup sh impdp_file.sh
--在导入的过程中,可以用以下命令查看导入的状态
cat nohup.out
3.6 数据导入完全后,查看导入的log文件,检查是否导入有问题。根据以往的经验,应该最后有12个error,这个没有问题,只是过程和包的警告性错误。如果没有其他的错误,说明导入是成功的。
3.7 检查导入成功之后,再手工导入原有的41机器上的db_link
4 补充: 检查2个数据库库表数据的行数一致
文件《数据量统计》
过程: sp_static_tab
表: tb_static_tab
该过程和表,在41数据库已经建立,在15机器上导入数据库之后,用gmm_zzrq建立以上表和过程。
在41和15机器执行过程 sp_static_tab
然后在15机器上查询数据,rows_diff=0说明2个数据库表行数一致
select a.table_name,
a.table_rows rows_15,
b.table_rows rows_41,
b.table_rows - a.table_rows rows_diff
from tb_static_tab a, tb_static_tab@dmp_link b
where a.table_name = b.table_name
order by rows_diff;
数据移植完毕!
lucky!
------下面是常用的命令和脚步,在15机器上执行
--查看crs状态
crs_stat -t
--查看节点运行
srvctl status database -d racdb
--停止节点2
srvctl stop instance -d racdb -i racdb2
--停止节点1
srvctl stop instance -d racdb -i racdb1
--启动节点2
srvctl start instance -d racdb -i racdb2
--启动节点1
srvctl start instance -d racdb -i racdb1
--sql操作
sqlplus system/oracle
--查看是否有表CASES_IMPORT,如果有删除
select count(1) from CASES_IMPORT;
drop table CASES_IMPORT;
--级联删除用户gmm_zzrq
drop user gmm_zzrq cascade;
--有哪些用户连接
--1.1
select program, username,sid,serial# from v$session;
--1.2
select program, username,sid,serial# from v$session
where upper(username) ='GMM_ZZRQ';
--杀掉进程
alter system kill session sid,serial#;
--查询段空间
select segment_name, segment_type, bytes/1024/1024 size_mb from user_segments a
--问题1:执行drop user gmm_zzrq cascade;操作出现如下问题:
ORA-01940: cannot drop a user that is currently connected
解决:用SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='GMM_ZZRQ';查询
然后alter system kill session sid,serial#; 就ok了,但是要注意如果是集群RAC
的话,就要多个节点都看看,否则会找不到相应的seesion.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3090/viewspace-668063/ ,如需转载,请注明出处,否则将追究法律责任。