Oracle数据库导出导入(expdp/impdp)

导出/导入(expdp/impdp)

Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。

利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
1、 简单导出数据(Export)和导入数据(Import)
Oracle支持三种方式类型的输出:
(1)、表方式(T方式),将指定表的数据导出。
(2)、用户方式(U方式),将指定用户的所有对象及数据导出。
(3)、全库方式(Full方式),瘵数据库中的所有对象导出。
数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。

一 导出(expdp)

1.创建备份目录

新建备份目录
[root@node1 ~]# mkdir -p /oracle/backup/ehr
[root@node1 ~]# chown -R oracle:oinstall /oracle/backup/ehr oracle

SQL> create or replace directory BACKDIR as ‘/oracle/backup/ehr’;

ORACLE的 DIRECTORY在数据库中是个目录的路径,需要在操作系统中有相应的目录与之对应;ORACLE目录的作用就是让ORACLE数据库和操作系统之前进行文件的交互,最常见的就是数据泵的导入和导出;
--查询备份目录
SELECT * FROM dba_directories WHERE directory_name = 'BACKDIR';

2.导出脚本

[oracle@node1 ~]$ su oracle
[oracle@node1 ~]$ source /home/oracle/.bash_profile
[oracle@node1 ehr]$ cat databack.sh

# source /home/oracle/.bash_profile

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=$ORACLE_BASE/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH

dateTime=`date +%Y_%m_%d`
# delete 7 day backup data
days=7

# oracle server connect info
orsid=192.168.4.3:1521/orcl
orowner=ehr
bakuser=ehr
bakpass=ehr

# backup dir
bakdir=/oracle/backup
# backup dmp file
bakdata=$orowner"_"$dateTime.dmp
# backup log file
baklog=$orowner"_"$dateTime.log
# backup tar file
ordatabak=$orowner"_"$dateTime.tar.gz
remotePath=/oracle/backup/ehr
filedir=$bakdir/$bakdata
logdir=$bakdir/$baklog

cd $bakdir
mkdir -p $orowner

##################### BACKUP START ###########################
# expdp bakuser/bakpass@$orsid grants=y owner=$orowner file=$filedir log=$logdir
# export 1 table EHR_Arch_Basicinfo
# echo expdp $bakuser/$bakpass@$orsid grants=y directory=BACKDIR dumpfile=$bakdata logfile=$baklog tables=EHR_Arch_Basicinfo

expdp $bakuser/$bakpass@$orsid grants=y directory=BACKDIR dumpfile=$bakdata logfile=$baklog
tar -zcvf $ordatabak $bakdata $baklog 

# echo delete file $bakdata and $baklog...
find $bakdir -type f -name "*.log" -exec rm {} \;
find $bakdir -type f -name "*.dmp" -exec rm {} \;

# delete 7 days
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \;  

# Linux to Windowns
scp $bakdir/$ordatabak administrator@10.252.100.100:/E:/


.

二 导入(impdp)

1.创建表空间

1.1创建临时表空间

create temporary tablespace ehr_temp 
tempfile '/oracle/backup/ehr/ehr_temp.dbf'
size 500m 
autoextend on 
next 200m 
extent management local;

1.2创建数据表空间

create tablespace ehr_data
logging 
datafile '/oracle/backup/ehr/ehr_data.dbf'
size 5G 
autoextend on 
next 1G
extent management local;

--删除tablespace 
--drop tablespace ehr_data including contents and datafiles cascade constraint;

2.创建用户并赋予权限

create user ehr identified by ehr default tablespace ehr_data temporary tablespace ehr_temp quota unlimited on ehr_data;

grant connect,resource, exp_full_database,imp_full_database to ehr;
或 grant dba to ehr;

select username,default_tablespace from dba_users where username =‘ehr’;
select * from dba_users;
    
--查询dba系统用户表 
SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size 
FROM dba_tablespaces t, dba_data_files d 
WHERE t.tablespace_name = d.tablespace_name 
GROUP BY t.tablespace_name; 

--quota unlimited 用户在表空间所分配的空间没有限制

--alter user ehr default tablespace ehr_data temporary tablespace ehr_temp quota unlimited on ehr_data; 

3.导入

[oracle@node1 ~]$ su oracle
[oracle@node1 ~]$ source ~/.bash_profile
[oracle@node1 ~]$ impdp ehr/ehr@orcl directory=BACKDIR file=’/oracle/backup/ehr/ehr_2019_07_19.dmp’ ignore=y full=y

其他参考命令:
imp 用户名/密码@服务名  file=备份文件 full=y  (或者 fromuser=旧的用户 touser=待导入的用户)  log=日志文件(可以通过日志文件查看还原情况)
例如: imp  ehr/ehr@orcl  file=ehr_****.dmp  full=y  log=imp.log
或 imp  ehr/ehr@orcl  file=ehr_****.dmp  fromuser=ehr touser=ehr log=imp.log

4.赋予相关表的查询权限给his库

/*
grant select on ehr.ehr_arch_basicinfo to NETHIS with grant option;
grant select on ehr.ehr_base_dict to NETHIS with grant option;
grant select on ehr.ehr_comm_areacode to NETHIS with grant option;
*/

测试

select * from EHR.EHR_Arch_Basicinfo;

.

参考文档

oracle系统表的查询
https://www.cnblogs.com/mq0036/p/4157307.html

#其他
Oracle数据库三种备份方案
https://www.cnblogs.com/ray-bk/p/7977873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值