m6米乐安卓版下载-米乐app官网下载
暂无图片
17

实用小技巧:undo 100%占用不释放解决办法 -m6米乐安卓版下载

原创 徐sir 2023-12-26
6809

表现是undo 100%占用不释放,其实原因是因为本地磁盘没有空间了,没办法让undo继续自动扩展了,同时现有的undo也有点大了,想要清理一下。

起因是客户存储没空间了,目前rac1节点undotbs1占用200多g,想要把undo释放一下。

我这边undo_retention设置的是900,按说不应该增长到很大才对,以前确实没有注意,只是加 过几次undo数据文件。

数据库的版本为12cr2,操作系统为solaris 11。

查看发现有大量unexpired

oracle undo段中区3种状态(dba_undo_extents的status列):active、expired和unexpired:

  • active即未提交的undo信息(活动):表示事物还在活动,该值对应的undo段的dba_rollback_segs.status一定是online状态,一旦没有活动的事务在使用undo段,那么对应的undo段就变成offline状态。active状态的undo区不会被覆盖。
  • expired即过期的undo信息(过期):表示事务已经提交且超过了undo_retention指定时间,该状态可以被覆盖使用。
  • unexpired即提交的undo信息(未过期):表示事务已经提交但是还没有超过undo_retention指定时间,该状态可以被覆盖使用。

2.1、修改隐藏参数关闭autotune

查看隐藏参数_undo_autotune默认状态为true:

select ksppinm, ksppstvl, ksppdesc from x$ksppi x, x$ksppcv y where x.indx = y.indx and ksppinm = '_undo_autotune';

修改隐藏参数来限制undo这里有2个方法

方法1:限制undoretention最大时间,就是在自动调整的结果上强制限制最大时间(试了效果不大)。

alter system set "_highthreshold_undoretention"=50000 scope=spfile;

方法2:直接关闭autotune(这个更干脆)

关于autotune可以查看官方文档automatic tuning of undo retention common issues (doc id 1579779.1)

alter system set "_undo_autotune"=false;

创建pdb参数文件

改完效果

再检查undo情况

隔了一天再检查

再检查状态基本都为expired状态

select status, count(*) num_extents, sum(blocks) num_blocks, round((sum(bytes)/1024/1024),2) mb from dba_undo_extents group by status order by status;

2.2、切换undo方法

我这边的数据库版本是12.2版本。默认使用local undo

先切换到pdb

sql> alter session set container=pdb;
session altered.

动之前再确认是否开启本地undo

sql> select property_name, property_value from database_properties where property_name='local_undo_enabled';
property_name property_value
----------------------- ---------------
local_undo_enabled true

创建undo_01表空间

create undo tablespace undo_1 datafile ' data' size 10g autoextend on;

pdb修改下原来11g基本一样,也要指定下sid(这里不是写数据库的实例名)

alter system set undo_tablespace=undo_01 sid='orcl1' scope=both;

然后使用如下sql查看,回滚段是否己经切换到undo_01里。

select dr.tablespace_name, dr.segment_name, vr.status from dba_rollback_segs dr, v$rollstat vr where dr.segment_id=vr.usn;

确实无误后执行删除原有undotbs1。

drop tablespace undotbs1 including contents and datafiles;

再次查看。

select * from dba_data_files;

第2个节点的名称挺奇怪,原来11g的时候都是undotbs1和undotbs2

在pdb里显示为1节点是undotbs1,2节点是undo_2。这个在12cr2的版本里是正常现像,rac环境创建pdb的第2个节点就是默认叫这个名,可以参照官方文档说明。

with local undo enabled and rac environment,the undo tablespace of a pdb is undo_2 (doc id 2971554.1)

如果你觉得别扭,可以手动创建个undotbs2进行切换,具体方法参照官方文档,这里我贴出来

 if you need to change the undo tablespace of the pdb on node 2 from undo_2, do the following in the target pdb on node2:
check the current undo tablespace. -- connect to and execute the pdb on the target node.
alter session set container=;
show con_name
-- check the current undo tablespace.
show parameter undo_tablespace 
if there is no undo tablespace to change to, create a new undo tablespace.
create undo tablespace size autoextend on ;
example:
create undo tablespace undotbs2 datafile size 10m autoextend on ;
verify that the undo tablespace that you want to change has been created.
select * from dba_data_files;
 change the undo tablespace.
alter system set undo_tablespace= container=current  sid='' scope=spfile ;example:
alter system set undo_tablespace=undotbs2 container=current  sid='orcl2' scope=spfile ;
restart the pdb and confirm that you have switched to the new tablespace.
restart the pdb:shutdown
startupplease confirm that you have switched to the new tablespace.
see if the segment for the old undo tablespace (undo_2) disappears.
select dr.tablespace_name, dr.segment_name, vr.status from dba_rollback_segs dr, v$rollstat vr where dr.segment_id=vr.usn;
 drop the old undo tablespace.
drop tablespace undo_2 including contents and datafiles;
verify that the original undo tablespace has been dropped.
select * from   dba_data_files;


也欢迎关注我的公众号【徐sir的it之路】,一起学习!

————————————————————————————
公众号:徐sir的it之路
csdn :
墨天轮:https://www.modb.pro/u/3605
pgfans:

————————————————————————————

最后修改时间:2024-01-01 21:28:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论

网站地图