0
点赞
收藏
分享

微信扫一扫

Oracle-expdp/impdp 数据泵导出导入操作

一、导出操作

1.创建虚拟目录

##查询虚拟目录
set linesize 200;
col directory_path for a80;
select * from dba_directories;

##创建导入的dmp文件实际存放位置路径
mkdir -p /home/oracle/dmp

##创建虚拟目录
create directory dmpdir as '/home/oracle/dmp';

##授权虚拟目录读写权限给用户 baoyw
grant read,write on directory dmpdir to baoyw;

##授权导出导入权限给用户 baoyw
grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to baoyw;

2.导出数据

##按用户导出 schemas 只导出表结构 content=metadata_only
expdp baoyw/oracle@192.168.0.66:1521/pdb1 directory=dmpdir dumpfile=ora_baoyw_file.dmp logfile=ora_baoyw_log.log cluster=no schemas=BAOYW content=metadata_only;

3.其他导出方式

##全量导出数据库 full=y
expdp user/passwd@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log;

##按表空间导出
expdp sys/passwd@orcl tablespace=tbs1,tbs2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;

##按表导出
expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;

##按查询条件导出
expdp user/passwd@orcl tables=table1='where number=1234' dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;

二、使用SCP传递DMP到目标服务器

##本地和远端安装 openssh-clients ,以便使用scp命令
yum install openssh-clients -y

##拷贝本地文件到远端服务器
scp -P 22 /home/oracle/dmp/ora_baoyw_file.dmp root@192.168.100.2:/opt

##拷贝远端文件到本地
scp -P 22 root@192.168.100.2:/home/oracle/dmp/ora_baoyw_file.dmp /opt

三、导入操作

注意:要导入的目标数据库,必须有和原数据库相同的用户、用户权限、用户状态、用户表空间。查询原库的用户、用户权限、表空间等,为导入目标库做准备。

1.原库信息查询

##查询用户权限
select * from dba_sys_privs where grantee = 'BAOYW';
select * from dba_role_privs where grantee = 'BAOYW';

##查询表空间数据文件路径
select file_name,tablespace_name from dba_data_files where tablespace_name = 'DEFAULT_TBS';

##查询用户所属表及表空间
select owner,table_name,tablespace_name from dba_tables where owner = 'BAOYW';

2.创建表空间-目标库

当用户不只是有一个默认表空间时,需要创建另外的表空间。比如,索引表空间。

##一个用户有两个及以上的表空间是需要注意
create tablespace DEFAULT_TBS datafile '/home/apps/oracle/oradata/pdb1/DEFAULT_TBS01.dbf' size 100m;
create tablespace DEFAULT_TBS datafile '/home/apps/oracle/oradata/pdb1/DEFAULT_INDEX01.dbf' size 100m;

3.创建用户-目标库

##创建用户并指定默认表空间
create user BAOYW identified by oracle default tablespace DEFAULT_TBS;

oracle的一个用户可以有多个表空间,但是默认的表空间只有一个。

##为用户指定其他表空间

##查询用户状态
select username,account_status from dba_users where username = 'BAOYW';

##授权用户
grant CONNECT,RESOURCE,UNLIMITED TABLESPACE to BAOYW;

##检查用户授权
select * from dba_sys_privs where grantee = 'BAOYW';
select * from dba_role_privs where grantee = 'BAOYW';

3.创建虚拟目录-目标库

##查询虚拟目录
set linesize 200;
col directory_path for a80;
select * from dba_directories;

##创建导入的dmp文件实际存放位置路径
mkdir -p /home/oracle/dmp

##创建虚拟目录
create directory dmpdir as '/home/oracle/dmp';

##授权虚拟目录读写权限给用户 baoyw
grant read,write on directory dmpdir to baoyw;

##授权导出导入权限给用户 baoyw
grant EXP_FULL_DATABASE,IMP_FULL_DATABASE to baoyw;

4.导入数据 impdp

##同名用户导入,从用户A导入到用户A
impdp baoyw/oracle@192.168.0.66:1521/PDB1 directory=dmpdir dumpfile=ora_baoyw_file.dmp logfile=ora_baoyw_log.log cluster=no remap_schema=baoyw:baoyw;

5.其他导入方式

##全量导入数据库 full=y
impdp user/passwd directory=data_dir dumpfile=expdp.dmp full=y;

##同名用户导入,从用户A导入到用户A
##①从A用户中把表table1和table2导入到B用户中
impdp B/passwdtables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;

##②将表空间TBS01、TBS02、TBS03导入到表空间A_TBS
##将用户B的数据导入到A,并生成新的oid防止冲突
impdp A/passwd remap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n directory=data_dir dumpfile=expdp.dmp logfile=impdp.log

##导入表空间
impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;

##追加数据导入
##table_exists_action:导入对象已存在时执行的操作。
##有效关键字:SKIP,APPEND,REPLACE和TRUNCATE
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;

举报

相关推荐

0 条评论