Oracle数据泵迁移数据

一、创建表空间

在cmd中使用sqlplus进入控制台操作

CREATE TABLESPACE TBS_DAT_JXC6
  DATAFILE 'D:\app\Administrator\oradata\orcl\DAT_JXC6_1.DBF'              
  SIZE 4096M
  AUTOEXTEND ON NEXT 5242880 MAXSIZE 8192M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

二、给表空间增加数据文件

  alter tablespace TBS_DAT_JXC6
  add DATAFILE 'D:\app\Administrator\oradata\orcl\DAT_JXC6_2.DBF'              
  size 4096M autoextend on next 5242880 MAXSIZE 8192M;

三、创建索引表空间

  CREATE TABLESPACE "TBS_IDX_JXCC6" 
  DATAFILE 'D:\app\Administrator\oradata\orcl\IDX_JXCC6_1.DBF' 
  SIZE 2048M
  AUTOEXTEND ON NEXT 5242880 MAXSIZE 4096M
  LOGGING ONLINE PERMANENT BLOCKSIZE 8192
  EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

四、增加数据文件

alter tablespace TBS_IDX_JXCC6   
add DATAFILE 'D:\app\Administrator\oradata\orcl\IDX_JXCC6_2.DBF' 
size 2048M autoextend on next 5242880 MAXSIZE 4096M;

五、创建用户

CREATE USER jxc6 IDENTIFIED BY  jxc6
DEFAULT TABLESPACE TBS_DAT_JXC6
TEMPORARY TABLESPACE TEMP;
  • 给新创建的用户授权
grant connect,resource,dba to jxc6

六、创建逻辑目录

create directory my_dbdata as 'D:/my_dbdata'
查看逻辑目录
select * from dba_directories

七、导出数据

7.1 不同方式导出数据

在cmd中导出数据

#按用户导出 用户名/密码@服务名  逻辑目录         导出文件                           日志文件
expdp           jxcc/jxcjd@orcl DIRECTORY=expdp_dir DUMPFILE=oracle%date:~0,10%.dmp logfile=oracle%date:~0,10%.log

#按表名导出
expdp answer/answer@orcl TABLES=a_answer,a_question dumpfile=m_table.dmp DIRECTORY=my_dbdata
#按查询条件导出
expdp answer/answer@orcl directory=my_dbdata dumpfile=exp_by_query.dmp tables=a_answer query='WHERE id < 20'
#按表空间导出
expdp answer/answer DIRECTORY=my_dbdata DUMPFILE=tablespace.dmp TABLESPACES=user
#整个数据库导出
expdp answer/answer DIRECTORY=my_dbdata DUMPFILE=full.dmp FULL=y

7.2、expdp导出参数说明

  • CONTENT 用于指定要导出的内容,默认为ALL CONTENT=ALL:导出对象定义和所有数据
  • DATA_ONLY 只导出数据 METADATA_ONLY:只导出对象定义
  • DIRECTORY 指定逻辑目录的名称,为之前创建的逻辑目录。
  • EXCLUDE 用于指定执行操作时释放要排除的对象类型或相关对象
    EXCLUDE=object_type[:name_clause] [,….]
    object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象
    例:EXCLUDE=TABLE:EMP EXCLUDE和INCLUDE不能同时使用
  • INCLUDE 导出时包含指定的类型
    例:INCLUDE=TABLE_DATA,
    INCLUDE=TABLE:“LIKE ‘TAB%’”
    INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…
    EXCLUDE和INCLUDE不能同时使用
  • FILESIZE 指定导出文件的大小,默认为0,表示没有大小限制(单位为bytes)
  • TABLESPACE 指定一个表空间导出
  • QUERY QUERY=[schema.] [table_name:] query_clause
    schema为指定方案名,table_name为指定表名,query_clause用于指定条件限制子句
    例:expdp answer/answer directory=my_dbdata dumpfiel=answer.dmp tables=a_answer query=’WHERE deptno=20’
    QUERY选项不能CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用
  • PARALLEL 并行操作:指定执行导出操作的并行进程个数,默认值为1
    您可以通过PARALLEL参数为导出使用一个以上的线程加速作业。每个线程创建一个单独的转储文件,因此参数dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,
    例:expdp answer/answer tables=a_answer directory=my_dbdata dumpfile=expCASES_%U.dmp parallel=4
    注意:
    dumpfile参数拥有一个通配符%U,它指示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 从01 开始,然后按需要向上增加.在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。

八、导入数据

在CMD中导入数据

8.1 不同方式导入数据

    #用户名/密码@服务名           逻辑目录           导入文件                   日志文件      模式对应转换=原模式名:现模式名   转换表空间=原表控件:现表空间                              
impdp jxc6/jxc6@orcl  DIRECTORY=impdp_dir DUMPFILE=ORACLE20210817.DMP logfile=impdpC.log REMAP_SCHEMA=JXCC:JXC6 remap_tablespace=TBS_DAT_JXC:TBS_DAT_JXC6,TBS_IDX_JXCC:TBS_IDX_JXCC6   transform=segment_attributes:n
                                                                                                                                                
#导入到指定用户下
impdp answer/answer DIRECTORY=my_dbdata DUMPFILE=answer.dmp SCHEMAS=answer

#如果导出的用户表空间跟导入的用户表空间不一致,则按下面的方法导入
impdp answer/answer DIRECTORY=my_dbdata DUMPFILE=answer.dmp REMAP_SCHEMA=user1(导出时的所属用户名):user2(导入时的所属用户名)

#只导入dmp文件中的某几个表,注意tables后面的表面最好加上 用户名.表面,否则可能导入失败
impdp answer/answer DIRECTORY=my_dbdata DUMPFILE=answer.dmp TABLES=olduser.a_answer,olduser.a_question

#导入表空间
impdp answer/answer DIRECTORY=my_dbdata DUMPFILE=tablespace.dmp TABLESPACES=user

#导入整个数据库
impdb answer/answer DIRECTORY=my_dbdata DUMPFILE=full.dmp FULL=y;

#追加数据
impdp answer/answer DIRECTORY=my_dbdata DUMPFILE=answer.dmp SCHEMAS=answer TABLE_EXISTS_ACTION=APPEND

8.2 impdp导入参数说明

  • TABBLE_EXISTS_ACTION
    TABBLE_EXISTS_ACTION={SKIP| APPEND | TRUNCATE | FRPLACE }
    SKIP:导入时会跳过已存在的对象
    APPEND:导入时会追加数据
    TRUNCATE:导入时会截断表,然后追加新的数据
    REPLACE:导入时会删除已存在的表,重建表再追加数据
  • REMAP_SCHEMA 用于将源方案中的所有对象装载到目标方案中。
    例:如果dmp文件导出时对应用户名为 user1,导入时对应用户名为user2,
    则因为用户名不一致而无法导入,需要这样用 REMAP_SCHEMA=user1:user2
  • REMAP_TABLESPACE 将源表空间的所有对象导入到目标表空间 REMAP_TABLESPACE=source_tablespace:target_tablespace
  • REMAP_DATAFILE 将源数据文件转变为目标数据文件,在不同平台之间搬移表空间可能需 要该选项 REMAP_DATAFIEL=source_datafie:target_datafile
  • transform segment_attributes:n 使用该参数会将对象段分配在导入目标用户的默认表空 间上(即生成的创建表语句没有存储参数以及表空间)
    disable_archive_logging:y 导入后再将日志属性重置为LOGGING。导入期间可减少相关日志的产生
    LOB_STORAGE:[SECUREFILE | BASICFILE| DEFAULT | NO_CHANGE]

8.3 导入时场景分析

  1. 同一个schema的情况下,如A1转换成B1,A2转换成B1,有如下两种方式
    remap_table=A1:B1 remap_table=A2:B1
    remap_table= A1:B1, A2:B1
  2. remap_table如果在不同schema的情况下进行,如user1.A1转换成user2.B1,user1.A2转换成 user2.B1,必须加remap_schema,且remap_table冒号前面的表名一定要带schema信息,冒号后面的 表名一定不能带schema信息
  3. remap_table如果在同一个schema下进行,虽然不要加remap_schema,但是remap_table冒号前面的表名一定要带schema信息,冒号后面的表名一定不能带schema信息

8.4 删除非空表空间及其数据文件

drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS

8.5 删除用户及其数据

drop user 用户名称 cascade;

九、完整流程演示

--创建表空间
CREATE TABLESPACE DAT_JXC_XT
DATAFILE 'D:\app\Administrator\oradata\orcl\DAT_JXC_XT.DBF'
SIZE 4096M
AUTOEXTEND ON NEXT 5242880 MAXSIZE 8192M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

--增加表空间
alter tablespace DAT_JXC_XT
add DATAFILE 'D:\app\Administrator\oradata\orcl\DAT_JXC_XT2.DBF'
size 4096M autoextend on next 5242880 MAXSIZE 8192M;

--增加索引表空间
CREATE TABLESPACE TBS_IDX_XT
DATAFILE 'D:\app\Administrator\oradata\orcl\TBS_IDX_XT.DBF'
SIZE 2048M
AUTOEXTEND ON NEXT 5242880 MAXSIZE 4096M
LOGGING ONLINE PERMANENT BLOCKSIZE 8192
EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;

--增加索引表空间
alter tablespace TBS_IDX_XT
add DATAFILE 'D:\app\Administrator\oradata\orcl\TBS_IDX_XT_2.DBF'
size 2048M autoextend on next 5242880 MAXSIZE 4096M;

--创建用户
CREATE USER xtjxc IDENTIFIED BY xtjxc
DEFAULT TABLESPACE DAT_JXC_XT
TEMPORARY TABLESPACE TEMP;

--授权
grant connect,resource,dba to xtjxc

--创建逻辑目录
create directory my_dbdata as 'D:\my_dbdata'
--查看逻辑目录
select * from dba_directories

--在cmd中导出
expdp jxcxt/jxcxt@orcl DIRECTORY=file_path DUMPFILE=data%date:~0,4%-%date:~5,2%-%date:~8,2%.dmp  logfile=log%date:~0,4%-%date:~5,2%-%date:~8,2%.log
--在cmd中导入
impdp xtjxc/xtjxc@orcl DIRECTORY=FILE_PATH DUMPFILE=DATA2021-11-18.DMP logfile=impdb2021-11-18.log REMAP_SCHEMA=JXCXT:XTJXC remap_tablespace=TBS_DAT_JXCXT:DAT_JXC_XT,USERS:DAT_JXC_XT  transform=segment_attributes:n
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷啦啦诶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值