Oracle数据泵实现不同用户导入导出表级

2022-07-19 13:25:23

前言:

先认识一个单词,schema:模式。

再来了解一个概念。

当创建一个用户的时候,会同时创建一个与用户同名的schema,这个schema的官方解释是对象的集合。

举个例子,比如说我就是一个用户,叫A,住在某个公寓里,假如我住在4-404,那么这个4-404这个房间就是schema,房间名也叫A(意思是用户A的房间,在oracle里的意思是用户A的schema)。那么房间里面的东西就是对象了,比如说桌子,冰箱,床之类的。所以说schema是对象的集合。(个人理解,不对之处,请以斧正)

在使用数据泵前设定一个directory,就是存放数据泵文件的目录。

create directory data_dump as '/data_dump';

当然,也可以查看有哪些目录

select directory_name,directory_path from dba_directories;

下面来记一些参数:

    serid:说明使用的是哪个用户进行操作directory:说明使用的是哪个逻辑目录(就是上面创建的那个)dumpfile :导出后的文件名字logfile: 导出过程中的日志文件tables :导出的表

    下面是导出脚本及expdp:

    cat >exp_table.par<<EOF
    userid=' / as sysdba'
    directory=data_dump
    dumpfile=exp_table_%u.dmp
    logfile=exp_table.log
    tables=(scott.temp,scott.tjy_test)
    cluster=n
    parallel=4
    exclude=STATISTICS
    compression=ALL
    EOF
    
    nohup expdp parfile=exp_table.par>exp_table.par.out &
    tail -100f exp_table.par.out

    对上面参数进行解释说明:

    userid=' / as sydba':说明用的是sys用户执行的数据泵操作

    directory=data_dump:说明操作路径是data_dump(也就是上面创建的那个目录)

    dumpfile=exp_table_%u.dmp:这里仅仅是说明导出后的文件命名,exp_表示这是导出的文件,table_表示表级操作,%u表示01-99的自动增长的整数,.dmp表示文件后缀

    logfile=exp_table.log:跟上面的解释差不多。

    tables=(scott.temp,scott.test):说明要导出的是scott里的temp表和test表,注意这里的scott指的是schema,而不是username

    其他的没什么好说的,想学自己百度。

    下面是导入脚本及impdp:

    cat >imp_table.par<<EOF
    userid=' / as sysdba'
    directory=DATA_DUMP
    dumpfile=exp_table_%u.dmp
    logfile=imp_table.log
    TABLE_EXISTS_ACTION=append
    tables=(scott.temp,scott.test)
    remap_schema=scott:sys
    cluster=n
    parallel=8
    EOF
    
    nohup impdp parfile=imp_table.par>imp_table.par.out &
    tail -100f imp_table.par.out

    这个跟上面的其实没多大改变,目录还是那个目录。

    需要注意的是多了一行table_exists_action=append 这行表示在原有表的基础上添加要导入的数据。

    还有一行是remap_schema=scott:sys重点是这里,因为scott.temp的scott指的是schema,所以参数是remap_schema。  scott:sys的意思是在这些个数据泵文件里,schema是scott的,换成sys。

    到此这篇关于Oracle数据泵实现不同用户导入导出表级的文章就介绍到这了,更多相关Oracle数据泵导入导出内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!