C/C++教程

Oracle数据快照设置

本文主要是介绍Oracle数据快照设置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.1 手册目的

该手册主要目的是用于生产环境排查问题及恢复用户误操作删除数据及程序错误导致数据丢失使用。

1.2 查看Undo表空间参数

命令窗口查询Undo表空间的快照参数

1 show parameter UNDO;

1.3 查看Undo表空间使用大小

--查看表空间使用情况

 1 SELECT a.tablespace_name "表空间名",
 2 
 3        a.bytes / 1024 / 1024 "表空间大小(M)",
 4 
 5        (a.bytes - b.bytes) / 1024 / 1024 "已使用空间(M)",
 6 
 7        b.bytes / 1024 / 1024 "空闲空间(M)",
 8 
 9        round(((a.bytes - b.bytes) / a.bytes) * 100, 2)||'%' "使用比"
10 
11   FROM (SELECT tablespace_name, sum(bytes) bytes
12 
13           FROM dba_data_files
14 
15          GROUP BY tablespace_name) a,
16 
17        (SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest
18 
19           FROM dba_free_space
20 
21          GROUP BY tablespace_name) b
22 
23  WHERE a.tablespace_name = b.tablespace_name
24 
25  ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;

1.4 查看Undo表空间存放路径

--查找表空间存放路径

1 SELECT * FROM dba_data_files t WHERE t.tablespace_name='UNDOTBS1';

1.5 增加Undo表空间大小(重点)

--增加一个新的表空间并默认数据文件存放该表空间文件中

1 alter tablespace UNDOTBS1 add DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS02.DBF' size 5G AUTOEXTEND on maxsize 20G;

1.6 更改Undo数据存放时间

--修改快照保存时间,单位为秒 86400=24小时 43200=12小时

1 ALTER SYSTEM SET undo_retention=86400 SCOPE=BOTH;

 

更改完成后再--在命令窗口查询Undo表空间的快照参数,查看Undo数据快照时间是否更改成功

 

1 show parameter UNDO;

1.7 利用Undo数据快照进行数据闪回

--利用快照查询历史数据

1 SELECT a.* FROM emp AS OF TIMESTAMP TO_TIMESTAMP('2022-08-14 23:05:55' ,'YYYY-MM-DD hh24:mi:ss') a
2 WHERE a.emp_no='626537'  ;

AS OF TIMESTAMP TO_TIMESTAMP('2022-08-14 23:05:55' ,'YYYY-MM-DD hh24:mi:ss')  在表名后面添加该语句,时间自由调整,即可查询到历史数据。

 

1.8 注意事项

做完数据快照后隔几个小时观察一下Undo表空间的一个使用情况,如果数据快照时间过大,表空间的一个占用也会越大,这样就需要添加多个表空间文件,这个根据业务来自由设定。

1.9 参考文献

 

https://blog.51cto.com/u_15239532/2835327#UNDO_2

http://www.pingtaimeng.com/article/detail/id/2168266

 

 

 

这篇关于Oracle数据快照设置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!