目录
导出
导入
用户方式导入
表空间方式导入
注意
完完,下篇根据rman迁移复制
通过上次创建的数据库进行数据迁移,因为涉及跨平台,普通数据泵导出导入很费劲,但是比较保守。
本次第一种方法先试试普通数据泵操作。后续通过rman Duplicate Database进行备份。
查看源端数据库路径
select * from dba_directories;
测试导出大小
expdp 账号/密码 schemas=用户 estimate_only=y estimate=statistics
全量导出
expdp grxm_agcloud/grxm_agcloud@orcl dumpfile =full20200612.dmp full=y logfile=full.log directory=DATA_PUMP_DIR job_name=my_job
因为涉及跨平台,先根据用户或表空间导入。注意需要创建用户和表空间,可以查询源数据库创建的语句。
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name) FROM DBA_TABLESPACES TS;
查看用户对应表空间
select username,default_tablespace from dba_users;
上面查询出来的为创建表空间的语句,开始创建表空间(注意修改路径)
CREATE TABLESPACE "GRXM_AGCLOUD" DATAFILE
'/home/oracle/app/oracle/oradata/orcl/GRXM_AGCLOUD.ORA' SIZE 5242880
AUTOEXTEND ON NEXT 10485760 MAXSIZE 32767M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT
NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
ALTER DATABASE DATAFILE
'/home/oracle/app/oracle/oradata/orcl/GRXM_AGCLOUD.ORA' RESIZE 12367953920;
创建用户并赋权(给了dba权限,后期收回)
CREATE USER GRXM_AGCLOUD IDENTIFIED BY GRXM_AGCLOUD DEFAULT TABLESPACE GRXM_AGCLOUD;
grant connect,resource to GRXM_AGCLOUD;
grant unlimited tablespace to GRXM_AGCLOUD;
grant create database link to GRXM_AGCLOUD;
grant select any sequence,create materialized view to GRXM_AGCLOUD;
grant dba to GRXM_AGCLOUD;
开始导入
impdp GRXM_AGCLOUD/GRXM_AGCLOUD schemas=GRXM_AGCLOUD directory=DATA_PUMP_DIR dumpfile=FULL20200612.DMP logfile=FULL20200612_GRXM_AGCLOUD.DMP.log table_exists_action=truncate remap_schema=GRXM_AGCLOUD:GRXM_AGCLOUD
部分数据其实没有对应用户,可以查看
select username,default_tablespace from dba_users;
创建表空间后直接导入即可。
impdp GRXM_AGCLOUD_BAK/GRXM_AGCLOUD_BAK directory=DATA_PUMP_DIR dumpfile=FULL20200612.DMP tablespaces=GRXM_AGCLOUD_MONITOR_GLF_HIS_I:GRXM_AGCLOUD_MONITOR_GLF_HIS_I
如果是新库,数据量大有可能导致redo写满,卡住。通过查看redo目录是否写满,满了就添加redo日志
先查看redolog信息
select group#,members,bytes/1024/1024,status from v$log;
新建,(我导入数据又100g,创建14g日志9个)
alter database add logfile group 4('/home/oracle/app/oracle/oradata/orcl/redo04.log') size 14366M;
alter database add logfile group 5('/home/oracle/app/oracle/oradata/orcl/redo05.log') size 14366M;
alter database add logfile group 6('/home/oracle/app/oracle/oradata/orcl/redo06.log') size 14366M;
等待没使用的redo日志删除重建,因为默认才50m
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
物理位置也需要删除
rm /home/oracle/app/oracle/oradata/orcl/redo01.log
rm /home/oracle/app/oracle/oradata/orcl/redo02.log
rm /home/oracle/app/oracle/oradata/orcl/redo03.log
发现部分索引导入失败,因为创建索引要分页更新数据,每页都要进行排序,所以把临时表空间沾满了。
alter tablespace TEMP add tempfile '/home/oracle/app/oracle/oradata/orcl/temp03.dbf' size 10240m autoextend on next 1024m maxsize 30G;
发现部分表有问题,更新部分表,并更新最大连接数
alter system set processes=370 scope=spfile;
alter system set sessions=370 scope=spfile;
impdp GRXM_AGCLOUD_MONITOR/GRXM_AGCLOUD_MONITOR directory=DATA_PUMP_DIR dumpfile=FULL20200612.DMP logfile=FULL20200612_GRXM_AGCLOUD_MONITOR.DMP.log TABLES=GRXM_AGCLOUD_MONITOR.GR_GLF_MONITOR_DAY,GRXM_AGCLOUD_MONITOR.GR_RDC_MONITOR_DAY,GRXM_AGCLOUD_MONITOR.GR_STATION_MONITOR_DAY table_exists_action=replace
会参考:https://www.linuxidc.com/Linux/2017-02/140532.htm