如何估算oracle 数据库及数据库对象历史增长情况

-----最近七天数据库的增长情况,这个只是一个估算值。

select  sum(space_used_total)/1024/1024/1024 "last 7 days db increase - G"

from

 dba_hist_seg_stat       s,

 dba_hist_seg_stat_obj   o,

 dba_hist_snapshot       sn

where

 s.obj# = o.obj#

and

 sn.snap_id = s.snap_id

and  begin_interval_time > sysdate-8

order by

 begin_interval_time

/

以下再补充两个类似的脚本脚本来之网上:

scripts:查看数据库历史增长情况

查看数据库历史增长情况

此处是通过计算数据库所有表空间的历史增长情况来计算数据库历史情况。

--不含undo和temp

with tmp as

(select rtime,

      sum(tablespace_usedsize_kb) tablespace_usedsize_kb,

      sum(tablespace_size_kb) tablespace_size_kb

 from (select rtime,

              e.tablespace_id,

              (e.tablespace_usedsize) * (f.block_size) / 1024 tablespace_usedsize_kb,

              (e.tablespace_size) * (f.block_size) / 1024 tablespace_size_kb

         from dba_hist_tbspc_space_usage e,

              dba_tablespaces            f,

              v$tablespace               g

        where e.tablespace_id = g.TS#

          and f.tablespace_name = g.NAME

          and f.contents not in ('TEMPORARY','UNDO'))

group by rtime)

select tmp.rtime,

tablespace_usedsize_kb,

tablespace_size_kb,

(tablespace_usedsize_kb -

LAG(tablespace_usedsize_kb, 1, NULL) OVER(ORDER BY tmp.rtime)) AS DIFF_KB

from tmp,

(select max(rtime) rtime

from tmp

group by substr(rtime, 1, 10)) t2

where t2.rtime = tmp.rtime;

--含undo和temp

with tmp as

(select min(rtime) rtime,

      sum(tablespace_usedsize_kb) tablespace_usedsize_kb,

      sum(tablespace_size_kb) tablespace_size_kb

 from (select rtime,

              e.tablespace_id,

              (e.tablespace_usedsize) * (f.block_size) / 1024 tablespace_usedsize_kb,

              (e.tablespace_size) * (f.block_size) / 1024 tablespace_size_kb

         from dba_hist_tbspc_space_usage e,

              dba_tablespaces            f,

              v$tablespace               g

        where e.tablespace_id = g.TS#

          and f.tablespace_name = g.NAME)

group by rtime)

时间: 2024-12-31 02:40:30

如何估算oracle 数据库及数据库对象历史增长情况的相关文章

通过JDBC操纵Oracle数据库LOB字段的几种情况分析

oracle|数据|数据库 通过JDBC操纵Oracle数据库LOB字段的几种情况分析纵横软件制作中心 雨亦奇2003-6-10 15:14:19在Oracle中,LOB(Large Object,大型对象)类型的字段现在用得越来越多了.因为这种类型的字段,容量大(最多能容纳4GB的数据),且一个表中可以有多个这种类型的字段,很灵活,适用于数据量非常大的业务领域(如图象.档案等).而LONG.LONG RAW等类型的字段,虽然存储容量也不小(可达2GB),但由于一个表中只能有一个这样类型的字段的

如何找到SQL Server的数据库历史增长信息

很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式. 通常来讲,一个运维良好的数据库都需要做定期基线(baseline),有了基线才会知道什么是正常.一个简单的例子例如,一些人的血压平常偏低,那么80的低压对他来说就是不正常了.但现实情况是大多数系统并没有采集基线的习惯,因此在需要规划空间想要看历史增长时,就没有过去精确的数据了. 一个解决办法就是通过查看历史备份的大小来看过

优化Oracle停机时间及数据库恢复

oracle|恢复|数据|数据库|优化 这里会讨论令Oracle停机时间最小化的步骤.各种形式的停机--计划的或者是非计划的--总是不断地发生,一个DBA应该有正确的备份策略,这样在数据库出现问题时就可以更快地恢复. 以下是假定的备份策略和数据库的运作条件 控制文件是镜像的 数据库运行在archivelog模式 每个星期都进行冷备份 每日都进行热备份 每日都进行一次全数据库导出 事件1:完整的数据库重构 在这种情形下,你可以使用全数据库导出或者冷热备份结合的方式来重构数据库.要注意的是无论你选择

oracle触发器及数据库触发简介

触发器是许多关系数据库系统都提供的一项技术.在ORACLE系统里,触发器类似过程和函数,都有声明,执行和异常处理过程的PL/SQL块. 1 触发器类型 触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行.即触发器是当某个事件发生时自动地隐式运行.并且,触发器不能接收参数.所以运行触发器就叫触发或点火(firing).ORACLE事件指的是对数据库的表进行的INSERT.UPDATE及DELETE操作或对视图进行类似的

Oracle 12c CDB数据库中数据字典架构

数据字典就是元数据的集合,比如创建的表,列,约束,触发器等等这些都是元数据,需要保存到数据库中.除此之外,Oracle自身的一些数据库对象,如目录,PL/SQL代码等等这些都是元数据,都需要存放在数据字典中.随着12c 容器数据的普及,Oracle数据字典发生了哪些变化呢,下文即是具体描述. 一.数据字典及其形成 1.数据字典 数据字典是元数据的集合,从逻辑上和物理上描述了数据库及内容,存储于SYSTEM与SYSAUX表空间内的若干段. SYS用户拥有所有的数据字典表,数据字典基本一般以结尾,如

Oracle实例与数据库的概念详细解释

刚接触ORACLE的人肯定会对实例和数据库感到困惑,实例到底代表些什么?为什么会有这个概念的出现? ORACLE实例 = 进程 + 进程所使用的内存(SGA)实例是一个临时性的东西,你也可以认为它代表了数据库某一时刻的状态! 数据库 = 重做文件 + 控制文件 + 数据文件 + 临时文件 数据库是永久的,是一个文件的集合. ORACLE实例和数据库之间的关系 1.临时性和永久性 2.实例可以在没有数据文件的情况下单独启动 startup nomount , 通常没什么意义 3.一个实例在其生存期

如何利用Oracle虚拟私有数据库进行整合

Oracle虚拟私有数据库(Virtual http://www.aliyun.com/zixun/aggregation/33969.html">Private Database,下文简称VPD)是Oracle数据库产品中提供的一个安全功能,它能够保证Oracle数据库的多租户特性,与此同时,可以帮助用户进行数据库的整合. Oracle VPD能够针对数据库表和视图,在行与列级别对数据访问进行控制.从名称来看,Oracle VPD表达的意思多少有些误导的嫌疑,毕竟Oracle数据库已经是

找到SQL Server数据库历史增长信息

原文:找到SQL Server数据库历史增长信息     很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式.     通常来讲,一个运维良好的数据库都需要做定期基线(baseline),有了基线才会知道什么是正常.一个简单的例子例如,一些人的血压平常偏低,那么80的低压对他来说就是不正常了.但现实情况是大多数系统并没有采集基线的习惯,因此在需要规划空间想要看历史增长时,就没

批量更改sql server数据库所有者的对象

因为一些网站是使用虚拟主机.用sql-server导数据上去的话,数据库的用户默认是你登录的用户,不是dbo,有时就和本地产生不一致. --功能说明:成批更改数据库所有者的对象 --作者:不详 --用法:exec ChangeObjectOwner 'nmkspro','dbo' --即可将所有nmkspro所有者的对象改为dbo所有 --运行成功后将提示:"注意: 更改对象名的任一部分都可能破坏脚本和存储过程." CREATE PROCEDURE dbo.ChangeObjectOw