• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

清理Oracle历史数据的准备工作

mysql 搞代码 4年前 (2022-01-09) 14次浏览 已收录 0个评论

客户要求近期对现网的2个项目的数据库中的历史数据进行清理,于是整理了下应用中的段使用情况,主要是看表段情况,使用的脚本如下

客户要求近期对现网的2个项目的数据库中的历史数据进行清理,,于是整理了下应用中的段使用情况,主要是看表段情况,使用的脚本如下。

create or replace procedure get_tab_rows
as
–Drop Table tabsrow
–Create Global Temporary Table tabsrow (Name Varchar2(30),Rowsnum Number) On Commit Delete Rows;
–Create Table tabsrow (Name Varchar2(30),Rowsnum Number) ;
V_SQL Varchar2(300);
Begin
Execute Immediate ‘truncate table tabsrow’;
For x In (Select OWNER,table_name From dba_tables Where owner=’XXX’ and table_name’test’) Loop
V_SQL:=’insert into tabsrow Select ”’||x.table_name||”’ ,Count(1) From ‘||X.OWNER||’.’||x.table_name;
Execute Immediate V_SQL;
End Loop;
commit;
End;
/
exec get_tab_rows;
Select a.Owner,
a.Table_Name,
–b.Segment_Name,
a.Tablespace_Name,
b.Bytes/1024/1024 as “size(Mb)”,e.rowsnum,
–b.Blocks,
–c.Table_Name,
c.Partitioning_Type,
d.column_name
From Dba_Tables a
Left Join (Select b.Segment_Name, Sum(b.Bytes) Bytes, Sum(b.Blocks) Blocks
From Dba_Segments b
WHERE B.OWNER = ‘XXX’
AND B.segment_type NOT IN (‘INDEX’)
Group By b.Segment_Name) B on a.Table_Name = b.Segment_Name
Left Join Dba_Part_Tables c On a.Table_Name = c.Table_Name
left join Dba_Part_Key_Columns d on d.owner = ‘XXX’
and a.来1源gaodai#ma#com搞*代#码1网table_name = d.name
left join tabsrow e on a.table_name=e.name
Where a.Owner = ‘XXX’ order by “size(Mb)” desc;
drop procedure get_tab_rows;
Drop Table tabsrow;

-The End-


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:清理Oracle历史数据的准备工作
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址