EXP/IMP迁移数据

迁移数据

注意事项:

Log= 加这个是为了看有没有导入成功。这个导入导出是会100%丢失数据的。这个只能当迁移,不能做为备份。

Buffer=把这个放大,一般10M,这个是为了提速的

Rows=n 不导数据

字体集NLS 这个是必须要设置的。

数据坏了显示方式:??列宽度不够,这个是立刻报错的。我就知道迁移失败了

Select * from v$nls_database_parameters;

Exp  system/sys  file=/oracle/qyl.dmp  owner=qyl  log=/tmp/qyl.log

空间的问题

在导出时最好先将表挪动到其它表空间然后再进行导出导入。再导出数据要确定导入的表空间是不是和导出的是一样的

异构平台迁移:问的一些问题

1.平台是不是一样

2.版本是什么样的了 9i 10g  11g 可以知道用什么软件

3.数据量     3T

4.停机时间   比如5天

往目标机导入数据:先建表空间再建用户  然后再导入数据

使用参数文件进行导出

只能导出表这些

1.用命令先查出大表

1---20个大表,一个一个写

2.编写脚本

第21个脚本,剩下的小表一次导完      Director=y 直接导出,提速的

大表一个一个导,最后剩下的全部

第22个脚本最后运行

3.空用户导出

导入

导出按用户,导入可以单独按用户导入。可以只导入一个表

EXP 导出 IMP 导入

注意事项:

File 放到哪  from 用户A

加提交=y 确保提交成功

Undo表空间

源端是普通表,目标端是分区表,那么我们要用:忽略=Y,先建分区,导入数据然后建索引

索引记录是要排序的

导入一个大表的话,一定要先导入数据,然后再建索引

建立索引,加一个并发。根据CPU个数。少于几个就行

然后就是加LOG,这个是一定要的

ORACLE最耗资源就是回滚

11g导出到导入目标,会出现不能用。有个段的新特性延迟分配

11G 密码过期是半年,在pfile中加admin。  审计关掉没有。占用空间。把表空间TRUNCK.

使用db_link会报错:无效SCN错误,

数据泵导入导出

并发可以5—10个

文件一般是50—200G之间

导出文件个数控制在100个之内。不能超过99个。开并发

Oradim –new –sid test 添加实例删除实例

平台版本不一样,高的打开低的,一定要用升级的方式打开。

关闭审计

Select count(*) from aud$

Truncate table aud$;

 

高版本挂低本的库,一定要用upgrade升级模式打开。然后运行@?/rdbms/admin/catupgrd.sql

如果这个时候报错ORA—00904:‘TZ_VERSION错误,那是因为里面有一个文件少了一行,我们可以加上,错误如下图所示:

1) If the registry$database table does not get created by the Pre-Upgrade Script,then it may be created using the below SQL statement:

SQL> ‘CREATE TABLE registry$database(
platform_id NUMBER,
platform_name VARCHAR2(101),
edition VARCHAR2(30),
tz_version NUMBER
)‘;

2) Then manually insert the Platform DST
Patch information using the below SQL statement:

SQL> ‘INSERT into registry$database
(platform_id, platform_name, edition, tz_version)
VALUES ((select platform_id from v$database),
(select platform_name from v$database),
NULL,
(select version from v$timezone_file))‘;

 

1.1  实验:

1.1.1数据库导出

先编写一个脚本如下:


userid=system/oracle

buffer=10000

file=i:\bk\full.dmp

log=i:\bk\full.log

feedback=1000

full=y

然后exp parfile=参数文件名

1.1.2表空间导出

有些受保护的表是不能导出的,会出错误警告。可能是因为是逻辑导出,所以加了指定导出路径方式


userid=system/oracle

buffer=10000

file=1.dmp

log=1.log

feedback=100

tablespaces=users

direct=y 

1.1.3传输表空间

使用生产用户建表

1.用户创建


create user yzpp identified by yzpp;

grant resource,connect,unlimited tablespace to yzpp;

conn yzpp/yzpp

2.表空间创建


create table t1_tb1 tablespace tb1 as
select object_id,object_name from user_objects;

create table t2_tb2 tablespace tb2 as select object_id,object_name
from user_objects where 1=2;

alter table t1_tb1 add constraint pk_t1 primary key(object_id);

alter table t2_tb2 add constraint fk_t2 foreign key(object_id)
references t1_tb1(object_id);

3.执行主键约束性检查,自包含情况


execute
dbms_tts.transport_set_check(‘tb2‘,incl_constraints=>true);

select * from transport_set_violations;


execute dbms_tts.transport_set_check(‘tb2‘,incl_constraints=>false);

改为FALSE后没有错误出现


execute
dbms_tts.transport_set_check(‘tb1,tb2‘,incl_constraints=>true);

select * from transport_set_violations;

错误提示:Constraint FK_T2 between table YZPP.T1_TB1 in tablespace TB1 and
table YZPP.T2_TB2 in tablespace TB2

同时检查tb1和tb2时候,发现两个表空间之间的冲突没有了,但是主键索引冲突又来了。Tb1和users之间的主键索引冲突又出现了。

4.连接conn
yzpp/yzpp


create index idx_t1_tb1 on
t2_tb2(object_id) tablespace tb1;

因此对于自包含问题,有两种解决方法

|--删除索引或者外键,让表空间自包含

|--表空间同时传输

5.解决完成自包含以后,将表空间设置成只读状态


conn /as sysdba

创建一个表空间

create tablespace tb3 datafile
‘/oradata2/xg/tb3,dbf‘ size 5M;

切换用户

conn yzpp/yzpp

创建一个表

create table t3_tb3 tablespace tb3 as
select * from user_objects;

切换用户

create table t4_tb3 tablespace tb3 as
select * from user_objects;

切换系统用户状态

conn / as sysdba

把表空间TB3修改为只读状态

alter tablespace tb3 read only;

现在进行传输表空间模式的导出,必须以sysdba权限登陆数据库

6.导出

如果是unix或者linux,需要进行转义


exp 
\‘/ as sysdba\‘ file=tb3.dmp transport_tablespace=y tablespaces=tb3

LIUNX参数脚本编写如下:


vi tb3.txt

userid=\‘/ as sysdba\‘

buffer=10000

log=tablespace.log

file=tb3.dmp

transport_tablespace=y

tablespaces=tb3

feedback=50

如果是在不同的平台进行表空间传输,那么还要这两个平台进行查询,看它们的edian是不是一样的,如果不一样,是要转换才能进行导入。建议在目标端进行转换,这样可以节约源端表空间下线时间还有系统性能

==>能够进行转换的平台查询<==


set
pages 100

col
platform_name for a35

select
platform_name,endian_format from v$transportable_platform order by 2,1;

PLATFORM_NAME                       ENDIAN_FO

-----------------------------------
---------

AIX-Based Systems (64-bit)          Big

Apple Mac OS                        Big

HP-UX (64-bit)                      Big

HP-UX IA (64-bit)                   Big

IBM Power Based Linux               Big

IBM zSeries Based Linux             Big

Solaris[tm] OE (32-bit)             Big

Solaris[tm] OE (64-bit)             Big

Apple Mac OS (x86-64)               Little

HP IA Open VMS                      Little

HP Open VMS                         Little

HP Tru64 UNIX                       Little

Linux IA (32-bit)                   Little

Linux IA (64-bit)                   Little

Linux x86 64-bit                    Little

Microsoft Windows IA (32-bit)       Little

Microsoft Windows IA (64-bit)       Little

Microsoft Windows x86 64-bit        Little

Solaris Operating System (x86)      Little

Solaris Operating System (x86-64)   Little

==>当前数据库所在平台查询<==


select a.platform_name,b.endian_format
from v$database a,v$transportable_platform b where
a.platform_name=b.platform_name;

在进行转换之前,我们必须确保满足以下的条件

1、源数据库和目标数据库的初始化参数compatible必须设置为10.0.0或以上

2、数据文件头部必须是平台认知(platform-aware)的

进行数据文件平台转换工作时,按照下面的步骤完成

1、把要传输的表空间设置为只读状态

2、以传输表空间模式(transport_tablespace=y)将表空间的元数据导出到转储文件

3、判断源数据库和目标数据库所在的平台是否是相同的endian,如果相同,直接将导出和数据文件一起发送到目标平台上,如果不同,需要进行endian的转换。

4、转换数据文件格式(既可以在源数据库上完成,也可以在目标数据库上完成)

例如我们需要将users表空间从aix平台转换到windows平台

1、在源数据库完成

启动rman,与源数据库建立连接

RMAN>convert tablespace users to
platform ‘Microsoft Windows IA (64-bit)’

format
‘/u01/trans/%N_%f’;

执行完成该命令以后,RMAN会将users表空间里所有的数据文件转换为windows平台的little-endian格式并将这些文件放在/u01/trans目录下,然后我们就可以将这些数据文件、转储文件一起发送到目标平台。

2、可以先不进行转换,而是直接将数据文件从源平台发送到目标平台上去,然后在目标平台上再进行转化


RMAN>convert datafile
‘d:\trans\users_4’

from
paltform ‘AIX-Based Systems(64-bit)’

format
‘d:\users_%f’;

5、以传输表空间模式(transport_tablespace=y)将表空间的元数据和目标平台上的数据文件导入到数据库中

6、将导入的表空间设置为读写模式

来自为知笔记(Wiz)

时间: 2024-10-11 08:27:18

EXP/IMP迁移数据的相关文章

EXP/IMP迁移案例,IMP遭遇导入表的表空间归属问题

生产环境: 源数据库:Windows Server + Oracle 11.2.0.1 目标数据库:SunOS + Oracle 11.2.0.3 1.确认迁移需求:源数据库cssf 用户所有表和数据迁移到目标数据库新建用户cssf_gt下,表空间为dbs_cssf_gt. 网络情况:数据库之间网络不通畅,不适合dblink应用场景. 数据量:小数据量级别,10G以下. 数据库字符集:两库相同. 采用方案:exp/imp一次迁移,导出的中间文件压缩后传输到目标端. 2.查看源数据库相关信息: 2

ORACLE-数据导入导出-常规exp/imp以及数据泵方式

博文说明[前言]: 本文将通过个人口吻介绍有关Oracle数据库导入导出相关知识,在目前时间点[2017年5月16号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 本文所写的导入导出是指在不使用工具的情况下,在命令行下进行的oracle数据库的导入和导出 正文: 一:常规exp/imp,导入导出方法 1.导出: 命令格式:exp user/[email protected]/SID

exp/imp 数据库数据导出/导入

一.exp数据导出 1.导出全部数据 exp 用户名/密码@服务名 file=文件存储路径/xxx.dmp log=日志存储路径/xxx.log full=y 例: [[email protected] ~]$ exp sa/[email protected] file=/data/backup/ALS.dmp log=/data/backup/ALS.log full=y 导出远程数据库全部数据 exp 用户名/密码@远程地址/服务名 file=文件存储路径/xxx.dmp log=日志存储路

ORACLE EXP/IMP的使用详解

作者:eclipse 导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳.当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议.对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具.下面说

oracle exp/imp 详解

导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理冲突等中有不小的功劳.当然,我们也可以把它作为小型数据库的物理备份后的一个逻辑辅助备份,也是不错的建议.对于越来越大的数据库,特别是TB级数据库和越来越多数据仓库的出现,EXP/IMP越来越力不从心了,这个时候,数据库的备份都转向了RMAN和第三方工具.下面说明一下EXP/IMP的

oracle exp/imp工具使用

最近在学习oraclel备份与恢复的知识,特总结了逻辑备份与恢复的使用方法: 一.逻辑备份的介绍: 所谓备份 ,就是把数据库复制到转储设备的过程.其中,转储设备是指用于放置数据库拷贝的磁带或磁盘. Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 下面咱们就来讲讲导入导入(EXP/IMP)用法. 二.EXP/IMP工具介绍: 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来

专题实验 EXP &amp; IMP

基本语法和实例: 1.EXP: 有三种主要的方式(完全.用户.表) 1.完全: exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 full=y file=exp_.dmp log=exp.log 如果要执行完全导出,必须具有特殊的权限 2.用户模式: exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedb

EXPDP/IMPDP与EXP/IMP在不同用户和表空间之间迁移数据的实现方法

1. EXPDP/IMPDP方式 SQL> create user zlm identified by zlm; User created. SQL> grant connect,resource to zlm; Grant succeeded. SQL> create tablespace ts_zlm datafile '/u01/app/oracle/oradata/ora10g/zlm01.dbf' size 100M reuse; Tablespace created. SQL

EXP/IMP 导出生产库表的指定数据到测试库一例

一般来讲,EXP/IMP是上一代导出导入程序,EXPDP/IMPDP是新一代的导出导入程序.对于大数据量的导出导入首选EXPDP/IMPDP,可以用到并行度,对表空间等操作上也更加的灵活.对于小数据量的迁移,可以使用exp/imp,操作更简单. 需求: exp 导出  A库(11.2.0.3)zjy用户的分区表t_jingyu_part部分数据,数据表空间 dbs_d_jingyu,索引表空间dbs_i_jingyu. imp 导入  B库(11.2.0.4)test用户下,test用户的默认表