目录
一、主要见如下内容:
https://www.topunix.com/post-6138.html
二、本次文档重点
1、监控undo使用状态
SQL>select begin_time,end_time,UNDOBLKS,EXPIREDBLKS,unEXPIREDBLKS from v$undostat;
2、undo retentions
3、Undo内容及作用
(1)数据内容
交易行为的记录 为更改数据的每个事务捕获 至少保留到交易结束
(2)undo作用
用于支持: --回滚操作 --读取一致的查询 --Oracle闪回查询、Oracle闪回事 务和Oracle闪回表 --从失败的事务中恢复
4、undo存储
(1)Undo信息存储在Undo段中,Undo段存储在Undo表空间中。
(2)Undo表空间:
--仅用于Undo段 --有特殊的恢复考虑 --只能与单个实例关联 --一个读写实例只有一一个Undo表空间为其服务
5、管理undo
(1)自动Undo管理: .
--在专用Undo表空间中对Undo数据和空间进行完全自动化的管理 -用于所有会话 --在AUTOEXTEND表空间中进行自调优,以满足长时间运行的查询 --在固定大小的表空间中进行自调优,以获得最佳的保留时效
(2)支持闪回操作的DBA任务:
-配置Undo retention -将Undo表空间更改为固定大小 -避免空间和“snapshot too old"错误(当active+retention时间内不活动的且未过期的内容超过了总的undo表空间容量,则会报snapshaot too old)
6、比较共享undo模式和本地undo模式
(1)多租户架构中有两种Undo模式:共享和本地。
--只有一个共享SHARED Undo表空间(在CDB根中) 。
--每个PDB中可以有一个本地LOCAL Undo表空间。
(2)何时需要本地LOCAL Undo模式?
-热克隆 -接近零停机时间PDB重定位
7、开启undo本地模式
(1)查看是否为本地模式
SQL> col property_name for a20; SQL> col property_value for a20; SQL> select property_name, property_value from database_properties where property_name='LOCAL_UNDO_ENABLED';
(2)关闭数据库(CDB下)
SQL> shutdown immediate;
(3)升级更改undo模式
SQL>startup upgrade; SQL>alter database local undo on;
(4)重启数据库
SQL> shutdown immediate; SQL> startup; SQL>show pdbs SQL>alter session set container=pdb1; SQL>select name from v$datafile where name like '%undo%';
转换为本地模式,会自动给每个PDB创建UNDO TABLESPACE。
8、配置undo retention
(1)前提条件
--undo表空间启用了autoextend功能 --设置了保证时间(gurantee) SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
(2)启用undo retention
3、undo的类别
9、临时undo的启用和监控
(1)启用会话的临时Undo:
SQL>ALTER SESSION SET temp_undo_ enabled=TRUE;
(2)启用数据库实例的临时Undo:
SQL> ALTER SYSTEM SET temp_undo_enabled= =TRUE;
会话首次使用临时对象时选择临时Undo模式。
(3)监控临时uno
SQL>SELECT to_char(BEGIN_TIME, 'dd/mm/yy hh24:mi:ss') "BEGIN TIME",txncount "TXNCNT",maxconcurrency,undoblkcnt,uscount "USCNT",nospaceerrcnt "NOSPEERRCNT" FROM v$tempundostat;