清理Oracle历史数据的准备工作
2011-10-28 18:00
423 查看
客户要求近期对现网的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.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-
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.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-
相关文章推荐
- dbsetup实现数据准备和清理工作
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 利用Oracle在线重定义Online Redefinition清理历史数据
- 利用Oracle在线重定义Online Redefinition清理历史数据
- oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备
- Linux平台 Oracle 11gR2 RAC安装Part1:准备工作
- 数据仓库开发之路之一--准备工作
- 【安装oracle——准备工作】配置内核参数+添加用户组及用户+为oracle用户配置shell限制+创建目录结构+设置oracle环境
- 数据库-2 历史数据清理
- oracle11.2.0.3.0 RAC for winows(2008) 安装NAS存储--1.准备工作
- 硬件工程师动存储之前,Oracle dba 的准备工作以及复核工作
- Windows系统下Oracle自动备份数据库,删除历史备份数据
- oracle 11g(一)安装前准备工作
- Oracle 数据库 升级前 必要的准备工作
- 利用闪回查看oracle表历史时刻数据
- oracle安装准备工作
- 办公系统数据库分区及历史数据清理优化方案一
- JDBC--数据的查询准备工作
- 清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引。