数据泵简用

创建目录对象(公共步骤)

create or replace directory wcg_data_dir as ‘/home/oracle/wcg’;
目录对象创建后需要给使用用户授权:grant read,write on directory wcg_data_dir to wcg;

命令中通过directory 参数指定数据文件的目录对象

expdp wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp
expdp userid=wcg/123456@192.168.137.136:1521/orcl directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp #可以也这样

使用DATA_DUMP_DIR环境变量指定目录对象

不在命令中通过directory 参数指定数据文件的目录对象,而是通过DATA_DUMP_DIR对象,但是只有dba用户或授权用户才能使用
export DATA_DUMP_DIR wcg_data_dir;
expdp wcg/123456 dumpfile=wcg_expdp_data.dmp #导出的文件就会默认放到wcg_data_dir的目录对象中,如果同时指定则directory参数的优先级高

还有一种方式优先级最高的,也是不指定directory 参数

expdp wcg/123456 dumpfile=wcg_data_dir1:wcg_expdp_data.dmp #目标对象和文件之间使用:做分隔

调用方式:

1> 直接使用命令,把所有参数都放在命令上
例:expdp wcg/123456 directory=wcg_data_dir logfile=wcg_expdp_data.log dumpfile=wcg_expdp_data.dmp

2> 使用参数文件配置命令参数,然后调用参数文件
参数文件wcg_expdp_par.txt:
userid=wcg/123456
directory=wcg_data_dir
dumpfile=cg_expdp_data.dmp
logfile=wcg_expdp_data.log
然后执行:
expdp parfile=wcg_expdp_par.txt

导出方式

1> 全导出(整库 full export mode):命令中使用full参数,且导出用户要具有EXPORT_FULL_DATABASE角色
例:expdp wcg/123456 dumpfile=wcg_data_dir1:wcg_expdp_data.dmp reuse_dumpfiles=Y full =Y

2> 模式导出(schema mode):如果只想导出一个用户的数据和/或对象时,必须使用schames参数
例:expdp wcg/123456 dumpfile=wcg_data_dir1:wcg_expdp_data.dmp reuse_dumpfiles=Y schemas =wcg

3> 表空间方式(tablespace mode):使用TABLESPACES参数可以导出一个或者多个表空间的全部表。如果使用TRANSPORT_TABLESPACES ,则只导出一个或者多个表空间的
对象的元数据
例:expdp wcg/123456 dumpfile=wcg_data_dir1:wcg_expdp_data.dmp reuse_dumpfiles=Y tablespaces =WCG_DATA;

4> 表的方式(table mode):使用tables参数可以导出一个或者多个表,多个表之间使用逗号分隔
例:expdp wcg/123456 dumpfile=wcg_data_dir1:wcg_expdp_data.dmp reuse_dumpfiles=Y tables =WCG_TEST_DATA;

expdp文件及目录参数说明

(1) directory
directory 指向文件保存的目录对象,也就是导出时你文件所在的目录,数据泵使用的目录不能时绝对路径,要建立目录对象(主要是为了安全性和避免对本地文件误操作)

(2)dumpfile
数据文件的文件名,文件名的命令方式有:
1> 通过指定%U替换变量,可创建多个文件。替换变量将从01开始直到99。例如exp%U.dmp的说明可拓展成诸如exp01.dmp、exp02.dmp等文件名。
可以生成的文件个数和parallel数一样
例:expdp wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data_%U.dmp parallel=3

2> 使用逗号分隔多个文件(也可以单独一个文件,如果多个则用逗号分隔)
例:expdp wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data_01.dmp,wcg_expdp_data_02.dmp parallel=2
#parallel的值最好和文件生成的个数一样,这样最为合理的配置。parallel默认为1,并行度设置不应该超过CPU数的2倍

3> 对单个导出作业多次指定dumpfile参数

(3)filesize
filesize参数是可选的,它指定导出文件的大小。默认单位是字节,可以单位有字节、KB、MB和GB.如果这个参数不指定则文件没有限制大小。在限制文件大小的情况下,
如果导出的数据一直达到文件的最大大小,则会停止任务直到问题解决并重新启动它
例:expdp wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp filesize = 100M;

(4)parfile
用于指定参数文件,参数文件中可以配置导出命令的参数,而不用全都在命令行上配置
建立参数文件wcg_expdp_par.txt:
userid=wcg/123456
directory=wcg_data_dir
dumpfile=wcg_expdp_data.dmp
reuse_dumpfiles=Y
exclude=table:“in (‘WCG’,‘WCG_TEST_DATA’)”
执行:expdp parfile=wcg_expdp_par.txt

(5)LOGFILE和NOLOGFILE
指定LOGFILE参数可以为导出任务指定一个日志文件,如果不指定这个文件且没有指定NOLOGFILE的情况下,会自动生成一个’export.log’日志文件
指定NOLOGFILE的情况下。Oracle将不产生日志文件,但是屏幕上还是可以看到导出的作业进展
例:
expdp wcg/123456 directory=wcg_data_dir logfile=wcg_expdp_data.log dumpfile=wcg_expdp_data.dmp
expdp wcg/123456 directory=wcg_data_dir nologfile=Y dumpfile=wcg_expdp_data.dmp #不产生日志
expdp wcg/123456 directory=wcg_data_dir nologfile=N dumpfile=wcg_expdp_data.dmp #产生日志

(6)REUSE_DUMPFILES
用于在导出时指定是否覆盖现有数据文件。REUSE_DUMPFILES参数平时我们不指定时默认为N,在为N的情况下,如果同一个目录对象下已经有一个同一个名称的数据文件(dmp)
时就会报ORA-27038: created file already exists的错误。如果REUSE_DUMPFILES=Y则会直接覆盖原来的文件(设置这个参数为Y前一定要确定那些将被覆盖的文件是否还需要)
例:
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y dumpfile=wcg_expdp_data.dmp

(7)COMPRESSION
此参数用于在导出数据前指定压缩哪些数据,默认所有元数据在写入导出文件前都会被压缩
1> ALL : 运行对整个操作进行压缩
2> data_only:指定只有数据被压缩
3> METADATA_ONLY:只有元数据被压缩,这是默认方式(元数据就是对数据的描述信息,通俗来说就是表结构之类)
4> NONE:禁止所有的压缩
例:expdp wcg/123456 directory=wcg_data_dir compression=all dumpfile=wcg_expdp_data.dmp

expdp过滤参数说明

(1)CONTENT
1> ALL :同时导出表数据和表及其其他对象的定义,默认是这个选项
2> DATA_ONLY :只导出表
3> METADATA_ONLY :只导出元数据(表)
例:
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y CONTENT=ALL dumpfile=wcg_expdp_data.dmp
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y CONTENT=DATA_ONLY dumpfile=wcg_expdp_data.dmp
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y CONTENT=METADATA_ONLY dumpfile=wcg_expdp_data.dmp

(2)EXCLUDE
CONTENT=DATA_ONLY的情况下不能使用这个参数
EXCLUDE排查导出的对象、EXCLUDE和include不能同时出现
1> 对表的筛选,例:
注:直接使用命令如下会报ORA-39071: Value for EXCLUDE is badly formed(应该是转移符的问题):
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y exclude=table:“in (‘WCG’,‘WCG_TEST_DATA’)” dumpfile=wcg_expdp_data.dmp
上面的例子扎挣几次没搞定就直接使用参数文件(如果谁能帮忙解惑十分感谢,去百度过。但是很多答案在实际中却是不可以使用的.试过使用斜杠转义双引也不行:
expdp wcg/123456 directory=wcg_data_dir reuse_dumpfiles=Y exclude=table:"= ‘WCG_TEST_DATA’" dumpfile=wcg_expdp_data.dmp):
建立参数文件wcg_expdp_par.txt:
userid=wcg/123456
directory=wcg_data_dir
dumpfile=wcg_expdp_data.dmp
reuse_dumpfiles=Y
exclude=table:“in (‘WCG’,‘WCG_TEST_DATA’)”
执行:expdp parfile=wcg_expdp_par.txt

#同时还支持exclude=table:“like ‘WCG%’” 、exclude=table:"= ‘WCG’"
#如果是多个筛选条件一起在使用,则可参考如下:exclude=table:“like ‘WCG_TEST%’”,exclude=table:"= ‘WCG’"

2> 同时还支持对索引、存储过程、函数、用户的筛选。它们的用法和上边的table类似,只是要把关键字table改成自己的。它们的关键字分别对应
index、procedure、function、schema

(3)INCLUDE
CONTENT=DATA_ONLY的情况下不能使用这个参数
INCLUDE只允许选择的对象导出、EXCLUDE和include不能同时出现
include和exclude的用法相识,只是功能相反而已。用法参考exclude

(4)remap_data
remap_data参数允许在导出时使用一个新值来替换某一列的值。列的新值由重映射函数指定。这样的场景主要用于生产环境数据导出时,有些数据比较敏感需要处理。
例:待补全

(5)data_options
不常用,待补全

(6)query
例:表WCG_TEST_DATA中只导出 v_name ='VOTNBD2Y7ZT7FP64FQGCA2QBJVSHCNVV’的数据(使用命令行的时候一直存在转义符问题,例子就直接使用参数文件)
参数文件:
userid=wcg/123456
directory=wcg_data_dir
dumpfile=cg_expdp_data.dmp
reuse_dumpfiles=Y
query=WCG_TEST_DATA:“where v_name =‘VOTNBD2Y7ZT7FP64FQGCA2QBJVSHCNVV’”
执行:expdp parfile=wcg_expdp_par.txt
#多个表需要过滤时可以使用逗号分隔各表拼接:query=WCG_TEST_DATA:“where v_name =‘VOTNBD2Y7ZT7FP64FQGCA2QBJVSHCNVV’”,WCG:“where v_id = 3”

(7)sample
指定导出数据的百分比,50代表导出整个库的50%样本。主要体现在Total estimation using BLOCKS method:上。一般每个表都是取50%左右
如果要指定某个表取50%则需要在前面加上表名
例:
expdp userid=wcg/123456 DIRECTORY=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y sample=50
expdp userid=wcg/123456 DIRECTORY=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y sample=“WCG”:50,“WCG_TEST_DATA”:50

(8)transportable
待补全

加密参数

(1)encryption
这个参数用于指定在导出时是否对导出内容进行加密
1> all:加密所有数据和元数据
2> data_only:只加密写到转储文件中的数据
3> encrypted_columns_only:只对使用TDE特性的加密列进行加密
4> metadata_only:只对导出的元数据加密
5> none:不进行加密,在encryption_password不配置的情况下缺省为none,但是在encryption_password配置的情况下,encryption缺省为all
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y encryption_password=123456
这样导出之后,导入也必须加上密码:impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp remap_schema=wcg:wcg_impdp_test encryption_password=123456 table_exists_action=replace

(2)encryption_algorithm
这个参数在加密时支持指定加密的算法,默认是aes128,也可以指定成aes192和aes256
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y encryption_password=123456 encryption_algorithm=aes256
#导出时可以不用指定算法:impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp remap_schema=wcg:wcg_impdp_test encryption_password=123456 table_exists_action=replace

(3)encryption_mode
在导出时指定数据加密时数据库执行的安全类型dual、password、transparent

(4)encryption_password
加密时的密码
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y encryption_password=123456

估算参数

(1)estimate
此参数指出在导出时导出作业消耗空间的大小。它有blocks和statistics两个选项参数
blocks值估算数据块消耗空间大小(也是缺省选项),产生信息为:Total estimation using BLOCKS method: 15 MB
statistics是通过统计更新估算字段消耗多少,产生信息为:Total estimation using STATISTICS method: 4.805 MB
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y estimate=statistics

(2)estimate_only
估算导出任务的消耗资源,但并不实际导出。不能指定dumpfile参数。否则会报:ORA-39201: Dump files are not supported for estimate only jobs.
例:
expdp userid=wcg/123456 estimate_only=Y

网络连接参数

(1)network_link
expdp支持通过网络进行数据导出,例如有A、B两台服务器,上面都有Oracle数据库。A上有一个数据库用户wcg/123456.如果想要在服务器B上导出服务器A上的数据:
第一步在服务器B上建立可以连接服务器A的database link:
create public database link wcg_expdp_dblink connect to wcg identified by “123456” using ‘(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.137.136)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))’;
#database link上的密码要用双引包裹
第二步在服务器B上执行导出:
expdp userid=wcg_b/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data.dmp reuse_dumpfiles=Y network_link=wcg_expdp_dblink;

与作业有关的几个参数

(1)job_name
定义导出任务的名称,这个参数可选。如果不定义的话Oracle会自定义一个名称.Oracle自定义的话一般是SYS_EXPORT_SCHEMA_01
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data.dmp reuse_dumpfiles=Y job_name=wcg_expdp_data_job

(2)status
此参数用于定义间隔一定时间显示一下当前任务的状态,主要显示的有:作业已经完成的百分比、进程状态以及当前被处理对象的状态。单位是秒,默认值为0。
日志文件显示整体大致的状态,status能显示正在运行作业的比较详细状态
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data.dmp reuse_dumpfiles=Y status=1
输出结果类似于:
Job: SYS_EXPORT_SCHEMA_01
Operation: EXPORT
Mode: SCHEMA
State: EXECUTING
Bytes Processed: 6,440
Current Parallelism: 1
Job Error Count: 0
Dump File: /home/oracle/wcg/wcg_wcg_expdp_data.dmp
bytes written: 5,152,768
Worker 1 Status:
Process Name: DW00
State: EXECUTING
Object Schema: WCG
Object Name: DBA_TAB_PARTITIONS_CLOB
Object Type: SCHEMA_EXPORT/TABLE/TABLE_DATA
Completed Objects: 3
Total Objects: 49
Worker Parallelism: 1
. . exported “WCG”.“WCG_TEST_DATA” 4.762 MB 99999 rows

(3)flashback_scn
此参数用于指定导出具体scn的数据,scn必须和数据库中的一致
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data.dmp reuse_dumpfiles=Y flashback_scn=3708879
#当前scn查询:select current_scn from v$database;、 select dbms_flashback.get_system_change_number from dual;

(4)flashback_time
此参数和flashback_scn类似,但是flashback_time是根据时间来定导出时间点的
例:
参数文件:wcg_expdp_par.txt
userid=wcg/123456
directory=wcg_data_dir
dumpfile=wcg_expdp_data.dmp
reuse_dumpfiles=Y
flashback_time=“to_timestamp(‘2021-11-26 09:10:00’, ‘YYYY-MM-DD hh24:mi:ss’)”
执行:expdp parfile=wcg_expdp_par.txt
#命令行的方式针对转义符的问题我还是没去研究解决,哈哈!后面这句是失败的:expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y flashback_time=“to_timestamp(‘2021-11-26 09:10:00’, ‘YYYY-MM-DD hh24:mi:ss’)”

(5)PARALLEL
此参数用户在执行作业时指定活动线程数,缺省值为1。1代表只有一个进程去写一个转储文件。如果为parallel指定大于1的值,那么需要有相同数量的转储文件,因为你如果只有一个转储文件,即使指定的parallel再高,使用的也只有一个。
并行度越高消耗的内存、CPU和带宽也就越高。如果没有足够的I/O带宽,parallel设置高了反而会导致性能降低,一般parallel值的设置不要超过CPU的个数
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data%U.dmp reuse_dumpfiles=Y parallel=3;
最后会生成wcg_expdp_data01.dmp、 wcg_expdp_data02.dmp、wcg_expdp_data03.dmp三个转储文件
#这个参数在上边dumpfile参数说明时一起说过

(6)attach
此参数运行对运行中的作业进行交互式介入,主要是为了解决挂起的作业或修改部分参数
此参数只能和用户名密码一起使用,不能包含其他参数。如下例子,先运行一个作业,作业名称为wcg_expdp_data_job,然后在另一个窗口以会话的形式介入
例:
窗口一:expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data.dmp reuse_dumpfiles=Y job_name=wcg_expdp_data_job
窗口二:expdp userid=wcg/123456 attach=wcg_expdp_data_job
关于交互式命令后边会说单独说明

导出的交互式参数

数据泵的交互式命令只在运行的作业中有效,为的是挂起作业或修改作业的某些部分参数。执行使用交互式控制命令,执行用户必须拥有dba权限或者拥有
exp_full_database或imp_full_database 角色
(1)进入交互式的方式
1> 在正在执行任务的窗口使用Ctrl+C组合
2> 使用上边说attach参数
#进入交互界面并不会是任务停止,我们进入交互页面后其实任务还是在跑着的。除非我们输入停止任务的命令

(2)交互命令
1> kill_job #释放并删除作业
2> add_file=wcg_expdp_data_02.dmp #新增一个转储文件
3> start_job #启动或恢复当前作业,在stop_job之后作业就会停止,可以使用start_job这个命令启动
4> continue_client #在start_job后在Export>页面上输入 continue_client可以让屏幕上继续打印作业打印信息
5> exit_client #在作业执行时,ctrl+C进入并执行exit_client可以让作业在后台运行。只是没有日志打印界面(就是作业进入后台运行,你在同一个窗口可以做其他正常操作)
6> help #查看所有的交互命令及其说明
7> parallel = 2 #修改并行度
8> stop_job #停止任务,后面可以使用start_job启动
例:
执行导出命令:expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_wcg_expdp_data%U.dmp reuse_dumpfiles=Y;
界面会打印出任务的名称,例如:Starting “WCG”.“SYS_EXPORT_SCHEMA_01”:
然后停止任务(另一个窗口执行):
expdp userid=wcg/123456 attach=SYS_EXPORT_SCHEMA_01
Export> stop_job
启动任务:
expdp userid=wcg/123456 attach=SYS_EXPORT_SCHEMA_01
Export> start_job
Export> continue_client #这句是然界面上继续显示作业的打印信息。非必须执行

9> status=2 #这个参数的说明上面有说过

数据泵导入

权限

1> 如果导出作业的转储文件是用export_full_database角色创建的,导入时需要import_full_database角色执行导入

与文件和目录有关的参数

(1) PARALLEL、directory、dumpfile、logfile、nologfile命令和导出用户一样
(2)sqlfile
此参数可以提取dmp文件中的ddl语句
例:
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp sqlfile=wcg_imp_test_sqlfile.sql schemas=wcg;
#这个命令执行后并不会进行数据导入,而是把wcg_expdp_data.dmp文件中的关于chemas=wcg的所有DDL语句都提取出来,储存于wcg_imp_test_sqlfile.sql文件中

过滤参数

(1)content、exclude、include和导出时一样
(2)query
query 参数的功能和expdp一样,但是在导入时使用query时数据泵将使用外部表的方式进行数据出来,而不是直接路径方法。这样的话效率会低不少

(3)table_exists_action
此参数用户在导入时如果表已经存在时的处理方式‘
1> skip #如果表存在的话,则跳过对于表的导入
2> append #追加,将数据行追加到已有表中,但是出现主键冲突时对于的数据将不能插入
3> truncate #先truncate,然后再插入数据
4> replace #先把表drop掉然后重建这个表,重新装载
例:impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp remap_schema=wcg:wcg02 table_exists_action=replace full=Y;

和作业有关的参数

(1)job_name、status、parallel和导出时一样

和导入方式有关的参数

(1) table、schema、tablespaces、full和导出的使用方式一样
例:impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp remap_schema=wcg:wcg02 table_exists_action=replace full=Y;
(2)transportable_tablespaces、transport_datafiles、transport_full_check都是涉及表空间、数据文件转换的参数,由于目前不常用,未研究

重映射参数

(1)remap_table
此参数支持导入时进行重映射名称,例如导出时表名为WCG_TEST_DATA,导入时使用remap_table=WCG_TEST_DATA:WCG_TEST_DATA01,那么导入后的环境存在的表就是WCG_TEST_DATA01
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y tables=WCG_TEST_DATA;
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02 remap_table=WCG_TEST_DATA:WCG_TEST_DATA01;

(2)remap_schema
重映射对象名,就是例如你导出的是用户wcg的数据。你想导入到wcg02用户下。则可以使用这个参数
例:
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y;
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02;

(3)remap_datafile
重映射数据文件名,不常用,待补全

(4)remap_tablespace
重映射表空间
例:
创建一个新的表空间
create tablespace WCG_DATA02 datafile ‘/data/oracle/oradata/orcl/wcgdata02.dbf’ size 10M reuse autoextend on;
导出数据
expdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp reuse_dumpfiles=Y;
导入数据
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02 remap_tablespace=WCG_DATA:WCG_DATA02;

(5)remap_data
remap_data参数允许在导出时使用一个新值来替换某一列的值。列的新值由重映射函数指定。这样的场景主要用于生产环境数据导出时,有些数据比较敏感需要处理。
例:待补全

(6)transportable
待补全

(7)transform
此参数可以在导入时指定不导入部分DDL的属性,之前我们一个场景:一线的数据量很大,在一线去一份表结构回来由于存在hwm问题,我们导入时也花费和将近百个G的
空间,但是其实整个dmp文件里面只有表结构,并不包含数据(当然分区也很多,如果默认每个分区占8M那么占用空间也是相当大的。针对这个的解决方法时:找一个自用的环境
把系统参数_partition_large_extents改成false,这样默认分区分区大小就是64K,如果系统参数_partition_large_extents为true时默认分区大小就是8M).但是导入时占用的空间还是相当大的。那么此时就可以使用transform参数过滤表的
一些属性
其语法为:transform=transform_name:value[:object_type]
1>transform_name:转换名,其值如下:
transform=storage:n #storage值为Y时是只导入对象的存储属性(也是缺省值),反之则不导入
transform=oid:n #oid为Y时在导入过程中将分配一个新的oid给对象表
transform=segment_attributes:n #segment_attributes为Y时(也是缺省值)会导入物理属性、存储属性、表空间和日志,反之则不导出

2> value的值范围为(Y/N)

3> object_type,对象类型,是可选的,如果不指定object_type,那么则指定导入的所有有效的对象。可选的范围有表、索引、表空间、类型、集群、约束等
例:
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02 transform=storage:n:table,storage:n:index;
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02 transform=oid:n;
impdp userid=wcg/123456 directory=wcg_data_dir dumpfile=wcg_expdp_data.dmp table_exists_action=replace remap_schema=wcg:wcg02 transform=segment_attributes:n;

(8)network_link
impdp支持通过网络进行数据导入而不需要使用转储文件,network_link参数允许数据泵导入使用程序直接连接到源数据库并将数据传递到目标数据库。这种导入内部是使用insert into …select的方式
第一步在导入端服务器建立database link:
create public database link wcg_expdp_dblink connect to wcg identified by “123456” using ‘(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.137.136)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))’;
#database link上的密码要用双引包裹
第二步在导入端服务器上执行导入:
impdp userid=wcg/123456 directory=wcg_data_dir table_exists_action=replace remap_schema=wcg:wcg02 network_link=wcg_expdp_dblink;

(9)交互式参数和导出时一样

监控数据泵作业

(1)查看当前正在进行的数据泵作业
可以通过查询视图 dba_datapump_jobs(这个视图只能查看当前正在运行的作业)查看
SQL> desc dba_datapump_jobs
Name Type


OWNER_NAME VARCHAR2(30)
JOB_NAME VARCHAR2(30)
OPERATION VARCHAR2(30)
JOB_MODE VARCHAR2(30)
STATE VARCHAR2(30)
DEGREE NUMBER
ATTACHED_SESSIONS NUMBER
DATAPUMP_SESSIONS NUMBER

OWNER_NAME #作业所属的用户
JOB_NAME #作业的名称(它对于的也是一张表,用于记录导出信息的。如果要删除这个job,直接删除这张表也可以:drop table &JOB_NAME PURGE)
OPERATION #作业的类型(导入和导出)
JOB_MODE #作业的执行方式,取值范围为:full、table、schame、tablespace
STATE #当前作业的状态
DEGREE #操作该作业的进程数
ATTACHED_SESSIONS #连接到这个作业的会话,同时也包括交互式的连接

(2) DBA_DATAPUMP_SESSIONS
DBA_DATAPUMP_SESSIONS 视图也是查询当前作业的信息,可以和V$session视图通过SADDR字段关联查询:
select b.sid,b.serial#,a.,b. from DBA_DATAPUMP_SESSIONS a,v$session b where a.saddr= b.SADDR
#目前的使用场景就是来kill 进程哈哈

(3)v$session_longops
这个视图用于监控长期运行的作业,大致超过6秒才能在里面显示。
SQL> desc v$session_longops
Name Null? Type


SID NUMBER
SERIAL# NUMBER
OPNAME VARCHAR2(64)
TARGET VARCHAR2(64)
TARGET_DESC VARCHAR2(32)
SOFAR NUMBER
TOTALWORK NUMBER
UNITS VARCHAR2(32)
START_TIME DATE
LAST_UPDATE_TIME DATE
TIMESTAMP DATE
TIME_REMAINING NUMBER
ELAPSED_SECONDS NUMBER
CONTEXT NUMBER
MESSAGE VARCHAR2(512)
USERNAME VARCHAR2(30)
SQL_ADDRESS RAW(8)
SQL_HASH_VALUE NUMBER
SQL_ID VARCHAR2(13)
SQL_PLAN_HASH_VALUE NUMBER
SQL_EXEC_START DATE
SQL_EXEC_ID NUMBER
SQL_PLAN_LINE_ID NUMBER
SQL_PLAN_OPERATION VARCHAR2(30)
SQL_PLAN_OPTIONS VARCHAR2(30)
QCSID NUMBER
字段说明:
SID #和V$SESSION中的SID一样
SERIAL# #和V$SESSION中的SERIAL#一样
OPNAME #操作的名称,如"Gather Table Partition Statistics"
TARGET #被操作的对象名,如表名
TARGET_DESC #TARGET的描述,例如:“Table WRH$_FILESTATXS”
SOFAR #已完成的数量,如扫描多少数据块,通过SOFAR和TOTALWORK的对比就能估算当前作业完成的百分比
TOTALWORK #一共需要完成的数量,通过SOFAR和TOTALWORK的对比就能估算当前作业完成的百分比
UNITS #计量单位(MB)
START_TIME #开始时间
LAST_UPDATE_TIME #最后一次更新V$session_longops的时间
TIMESTAMP #特定操作的时间戳
TIME_REMAINING #预计剩余时间,单位秒
ELAPSED_SECONDS #开始操作到最后更新的时间
CONTEXT #上下文关系(没搞清楚干嘛用)
MESSAGE #对操作的描述
USERNAME #操作用户的名字
SQL_ADDRESS #用于关联V$SQL等视图
SQL_HASH_VALUE #用于关联V$SQL等视图
SQL_ID #用于关联V$SQL等视图
SQL_PLAN_HASH_VALUE #用于关联V$SQL等视图
SQL_EXEC_START #SQL开始运行的时间
SQL_EXEC_ID #SQL执行的标识符
SQL_PLAN_LINE_ID #SQL执行计划相关
SQL_PLAN_OPERATION #SQL执行计划相关
SQL_PLAN_OPTIONS #SQL执行计划相关
QCSID #并行查询

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值