oracle exp/imp数据导入导出

1. 数据导入导出

1.1exp/imp 模式

exp/imp有四种模式,即:full(全库导出), owner(用户导出), table(表导出), tablespace(表空间导出).

(1)full( 全库导出):

导出除ordsys,mdsys,ctxsys,ordplugins,lbacsys 这些系统用户之外的所有用户的数据.需要用户具备exp_full_database

(2)owner( 用户导出):

导出某个或某些用户的所有权限和数据.

(3)tables( 表导出):

导出某些表(可以是不同用户的)的结构和数据.

(4)tablespace( 表空间导出):

表空间导出数据.

1.2exp/imp 参数

(1)exp 参数

exp help=y

●userid:用户名/口令

●full:导出整个文件(n),这个用于导出整个数据库,在rows=n一起使用时,可以导出整个数据库的结构

●buffer:数据缓冲区大小,每次得到缓存的数据;buffer用于指定提取行数据时的缓冲区尺寸。通过设置该参数,可以确定导出数组的提取尺寸。可以按照公式rows_in_array*maximun_row_size确定buffer的设置,即表中行的最大值乘以总的行数。buffer默认为4k,并非buffer的值越大越好,buffer定义了每一次读取导出文件的数据量,设的越大,就越减少export进程读取数据的次数,从而提高导入效率。buffer的大小取决于系统应用、数据库规模,通常来说,设为百兆就足够了。

●owner:所有者用户名列表

●file:输出文件(expdat.dmp)

●tables:表名称列表

●compress:导入到一个区(n),导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。

●recordlength:定义了Export I/O缓冲的大小,作用类似于常规路径导出使用的BUFFER参数,默认为buffer选项值。建议设置RECORDLENGTH参数为最大I/O缓冲,即65535(64kb)。

●grants:导出权限(y)

●indexes:导出索引(y)

●direct:直接路径(n),即常规导出,常规导出不能使用recordlength参数。当为Y时会采用直接导出方式,直接导出不能使用query子查询和buffer参数。

●triggers:导出触发器(y)

●log:屏幕输出的日志文件

●statistics:分析对象(estimate),默认是estimate,表示导入时采用analyze table estimate语句生成统计信息;当设定为compute,表示导入时使用analyze table compute生成统计信息;还可以设定为none表示导入时不生成统计信息。

●rows:导出数据行(y)

●parfile:参数文件名

●consistent:交叉表一致性,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。但这个过程不能太长,以免回滚段和联机日志消耗完

●constraints:导出约束条件(y)

●feedback:每x行显示进度(0)

●filesize:每个转储文件的最大大小

●flashback_scn:用于回调会话快照的scn

●flashback_time:用来获得最接近于指定时间的scn的时间

●query:用来导出表的子集的选择子句

●resumable:遇到与空格有关的错误时挂起(n)

●resumable_name:用来标识可恢复语句的文本字符串

●resumable_timeout:resumable的等待时间

●tts_full_check:对tts执行完全或部分相关性检查

●tablespaces:要导出的表空间列表

●transport_tablespace:导出可传输的表空间元数据(n)

●template:调用ias模式导出的模板名称

(2)imp 参数

●userid:用户名/口令

●full:导入整个文件(n)

●buffer:数据缓冲区大小

●fromuser:所有人用户名列表

●file:输入文件(expdat.dmp)

●touser:用户名列表

●show:只列出文件内容(n)

●tables:表名列表

●ignore:忽略创建错误(n)

●recordlength:io记录的长度

●grants:导入权限(y)

●indexes:导入索引(y)

●commit:提交数组插入(n)

●rows:导入数据行(y)

●parfile:参数文件名

●log:屏幕输出的日志文件

●constraints:导入限制(y)

●destroy:覆盖表空间数据文件(n)

●indexfile:将表/索引信息写入指定的文件

●skip_unusable_indexes:跳过不可用索引的维护(n)

●feedback:每x行显示进度(0)

●toid_novalidate:跳过指定类型id的验证

●filesize:每个转储文件的最大大小

●statistics:始终导入预计算的统计信息

●resumable:遇到与空格有关的错误时挂起(n)

●resumable_name:用来标识可恢复语句的文本字符串

●resumable_timeout:resumable的等待时间

●compile:编译过程,程序包和函数(y)

下列关键字仅用于可传输的表空间

●transport_tablespace:导入可传输的表空间元数据(n)

●tablespaces:将要传输到数据库的表空间

●datafiles:将要传输到数据库的数据文件

●tts_owners:拥有可传输表空间集中数据的用户

1.3exp/imp 应用举例

(1) 导出全库,需有exp_full_database权限

exp system/admin@//10.138.1.100:1521/rac file=(C:\dmp\full_database01.dmp,C:\dmp\full_database02.dmp) log=C:\dmp\full_database01.log

buffer=10485760

compress=y

consistent=y

feedback=1000

filesize=300M

full=y

(2) 导出schema

exp system/admin@//10.138.1.100:1521/pdb

file=(C:\dmp\owner01.dmp,C:\dmp\owner02.dmp)

owner=(user1,user2)

flashback_scn=2535623

log=C:\dmp\owner.log

direct=y

rows=y

compress=y

feedback=1000

recordlength=10485760

filesize=100m

statistics=estimate

exp c##ogg/admin@//10.138.2.100:1521/rac file=exp.dmp log=exp.log tables=c##ogg.t1,c##ogg.t2 compress=y buffer=100000000 filesize=1g feedback=1000000 consistent=y indexes=y constraints=y triggers=y recordlength=65535 query=\'where v1 like \'\'u\%\'\'\'

(3) 导出表

exp user1/admin@//10.138.1.100:1521/pdb

file=(C:\dmp\table01.dmp,C:\dmp\table02.dmp)

log=C:\dmp\table.log tables=(aa_obejct,aa_table)

query='where owner=''SYS'''

compress=yes

buffer=10485760

indexes=no

grants=yes

rows=yes

statistics=estimate

constraints=yes

feedback=10000

filesize=300M

imp c##ogg/admin file=/home/oracle/exp1.dmp log=/home/oracle/imp.log tables=t1 fromuser=c##rman touser=c##ogg indexes=n constraints=n grants=n buffer=100000000 recordlength=65535 feedback=10000000 commit=y ignore=y rows=y

(4) 可传输表空间

自包含: 表示用于传输的内部表空间集没有引用指向外部的表空间集

自包含又分为两种:一种自包含表空间集 第二为:完全(严格)自包含表空间集

常见的一下情况是违反自包含原则的

**●**索引在内部表空间集,而表在外部表空间集(相反的,如果表在内部表空间集,而索引在外部表空间集,则不违反自包含原则)

**●**分区表一部分区在内部表空间集,一部份在外部表空间集(对于分区表,要么全部包含在内部表空间集中,要么全不包含)

**●**如果在传输表空间同事传输约束,则对于用完整性约束,约束指向的表在外部表空间集,则违反自包含约束,如果不传输约束,则与约束指向无关。

**●**表在内部表空间集,而lob列在外部表空间集,则违反自包含约束。

检查自包含

SQL> exec dbms_tts.transport_set_check('TB1',true); #自包含检查

SQL> exec dbms_tts.transport_set_check('TB1', true, true); #严格自包含检查

此时发现index在users表空间,可两张表一起检查;

SQL> exec dbms_tts.transport_set_check('TB1,USERS',true,true);

sql> select * from transport_set_violations;

这个视图没数据,表示是自包含;

②导出导入表空间

**●**将表空间置为只读;

SQL> alter tablespace users read only;

SQL> alter tablespace tb1 read only;

exp 'sys/admin@//10.138.1.100:1521/rac as sysdba'

file=c:\dmp\tablespace.dmp

tablespaces=(tb1,users)

transport_tablespace=y

●导出表空间

exp 'sys/admin@//10.138.1.100:1521/pdb as sysdba' file=c:\dmp\tablespace.dmp tablespaces=(tb1,users) transport_tablespace=y

●转移需要数据

将导出的dmp文件传输到目标数据库上,执行导入;

●导入数据

imp 'sys/admin@//10.138.1.100:1521/pdb as sysdba' file=c:\dmp\tablespace.dmp tablespaces=(tb1,users) transport_tablespace=y datafiles=('+FF/tb1.dbf','+FF/users.dbf')

相关推荐
RainbowSea1 小时前
9-1. MySQL 性能分析工具的使用——last\_query\_cost,慢查询日志
数据库·sql·mysql
Sui_Network1 小时前
Sui 如何支持各种类型的 Web3 游戏
大数据·数据库·人工智能·游戏·web3·区块链
ZKNOW甄知科技2 小时前
IT服务运营管理体系的常用方法论与实践指南(上)
大数据·数据库·人工智能
黄雪超3 小时前
深入HBase——核心组件
数据结构·数据库·hbase
qq_529835354 小时前
Redis作为缓存和数据库的数据一致性问题
数据库·redis·缓存
山猪打不过家猪9 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
qwy7152292581639 小时前
13-R数据重塑
服务器·数据库·r语言
Bio Coder9 小时前
R语言安装生物信息数据库包
开发语言·数据库·r语言
钊兵10 小时前
数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
数据库·mysql·postgresql·oracle·达梦·驱动