Oracle数据泵expdp和impdp

数据泵的流程

1.数据泵的组成

a】数据泵核心部分程序包:DBMS_DATAPUMP

b】提供元数据的程序包:DBMS_MATADATA

c】命令行程序:EXPDP,IMPDP

2.数据泵文件

a】转储文件:此文件包含对象数据

b】日志文件:记录操作信息和结果

c】SQL文件:将导入作业中的DDL语句写入SQLFILE指定的参数文件中

3.数据泵的目录和文件位置--逻辑概念,逻辑目录

若以sys或system用户完成数据泵的导入导出时,可以使用缺省的目录 DATA_PUMP_DIR

如果设置了环境变量 ORACLE_BASE,则DATA_PUMP_DIR缺省目录位置是:

$ORACLE_BASE/admin/database_name/dpdump

否则是:

$ORACLE_HOME/dmin/dtabase_name/dpdump

也可以指定自定义创建的directory

#设置列显示宽度
col directory_name for a25
col DIRECTORY_PATH for a80

select directory_name,directory_path from dba_directories;

建立目录

#创建目录,这里的dmpbak是逻辑目录,后面的/home/oracle/dmpbak是真实路径,这个真实路径需要提前创建,必须是存在的。
create or replace directory dmpbak as '/home/oracle/dmpbak';
#删除目录
drop directory dmpbak;
#授权
grant read,write on directory dmpbak to 用户名;
#给所有用户授权dmpbak目录的读写使用
grant all on directory dmpbak to public;
#dump job 查询
select * from dba+_datapump_jobs;

备份恢复

前提准备:建立备份恢复的目录

a】表的备份恢复

#导出,多表之间用逗号隔开
expdp 用户名/密码 directory=逻辑目录 dumpfile=文件名.dmp logfile=expdp_日志文件名.log tables=表1,表2,表3
#导出时也可以加入条件 query="'where xxx=x '" #模拟误删除表xxx drop table name xxx purge; drop table name yyy purge; #恢复导入 impdp 用户名
/密码 directory=逻辑目录名 dumpfile=expdp导出的.dmp logfile=导入日志名.log #需要注意导入日志和导出日志是各自独立的,之间没有关系
#remap_table 导入时将表名替换
在impdp语句最后加上 remap_table=原表名:新表名

b】用户的备份恢复

#用户导出,通常用system管理员用户
expdp 用户名/密码 directory=逻辑目录名 dumpfile=xxx.dmp logfile=xxx.log schemas=用户名
#导入时更换用户,这个操作会创建新用户
impdp 用户名/密码 directory=逻辑目录名 dumpfile=xxx.dmp logfile=xxx.log remap_schemas=原用户名:新用户名
#连接
conn  用户名/密码
#查看当前用户
show user
#查看用户有哪些表
select table_name from user_tables;
#删除用户的操作,cascade的意思是将关联的权限也一并删除
drop user xxx cascade;

c】数据库的备份恢复(迁移)

#导出整个数据库,使用管理员
expdp system/xxx directory=逻辑目录名 dumpfile=xxx.dmp full=y logfile=xxx.log
#导入
impdp system/xxx directory=逻辑目录名 dumpfile=xxx logfile=xxx.log full=y
#整个数据库迁移一般用rman

 

posted @ 2022-08-10 07:58  BlackData  阅读(207)  评论(0编辑  收藏  举报