expdp

传统的expdp+impdp能很方便的备份和恢复数据库;这种方式很常见,也很好用。下面一个示例简单说明:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 23 02 * * * sh xxx.sh >> xxx.log 2>&1
source /home/oracle/.bash_profile

# time and path
time=`date +%Y%m%d_%H%M%S`
path=/oradata/db_back

expdp sys/xxx@dspdb directory=dumps_dir dumpfile=$time.dmp logfile=$time.log schemas=user1 user2
#expdp sys/xxx@dspdb directory=dumps_dir dumpfile=$time.dmp logfile=$time.log full=y

# 所有文件打包加密压缩,然后删除单个的备份库
tar -zcPvf - $path/$time.* |openssl des3 -salt -k pass |dd of=$path/bk_$time.all.dmp.des3
rm -rf $path/$time.*

# 多份保存
scp -P 22334 $path/bk_$time.all.dmp.des3 root@x.x.x.x:/data/dir

还原数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
-- 还原整个用户表
impdp sys/xxx@dspdb directory=dumps_dir dumpfile=xxx.dmp logfile=xxx.log schemas=xxx; 
data_options=skip_constraint_errors; 

-- 还原其中一张表
impdp sys/xxx@dspdb directory=dumps_dir dumpfile=xxx.dmp tables=xxx.table remap_schema=ets:ets 
remap_tablespace=otc:otc;
impdp sys/xxx@dspdb directory=dumps_dir dumpfile=xxx.dmp tables=xxx.table table_exists_action=replace;
-- 整个库
impdp sys/xxx@dspdb file=xxx.dmp log=xxx.log full=y ignore=y

# 备份和还原命令的相关参数解析
-- expdp s/s directory=dump_dir dumpfile=sas1.dmp logfile=aa.log
-- schemas=scott 
-- tables=emp,dept 
-- query='where deptno=20'    		带条件
-- tablespaces=temp,example  		按表空间
-- full=y       					整个库
-- content=
									-- all			所有
									-- metadata_only只导表结构
									-- data_only 	只导出表数据

-- impdp
-- remap_schema=scott:system    	更改owner
-- tablespaces=example   			导入表空间
-- table_exists_action   			-- skip 		是如果已存在表,则跳过并处理下一个对象;
									-- append		是为表增加数据;
									-- truncate		是截断表,然后为其增加新数据;
									-- replace		是删除已存在表,重新建表并追加数据

rman

备份就是把数据库复制到转储设备的过程。其中,转储设备是指用于放置数据库副本的磁带或磁盘。通常也将存放于转储设备中的数据库的副本称为原数据库的备份或转储。备份是一份数据副本,从不同的角度分类如下:

image-20220629175349593

RMAN的存储类型有三种方式:

  1. 备份集 默认类型

  2. 压缩备份集

  3. 镜像copy(组成每个备份集的每个文件称之为备份片)

RMAN备份可以存放在两种位置:

  1. 目标数据库的控制文件
  2. 恢复目录中

RMAN备份的优点:

  1. RMAN只备份有效数据
  2. RMAN可以实现增量备份

闪回

为了使数据库能够从任何逻辑错误中迅速恢复,oracle推出了闪回技术。采用该技术,可以对行级和事物级的数据变化进行恢复,减少了数据恢复的时间,而且操作简单。通过SQL语句就可以实现数据的恢复,大大提高了数据库恢复的效率。闪回技术是数据库恢复技术历史上一次重大的进步,从根本上改变了数据恢复。

参考:

https://blog.csdn.net/weixin_41078837/article/details/80609077

(完)