--创建实验表空间
SQL> create tablespace andy03 datafile '/home/oracle/app/oradata/orcl/andy03.dbf'  size 10M autoextend on next 30M; 
--创建实验数据
SQL> create table andy03 tablespace andy03  as select * from dba_objects ; 
SQL> insert into   andy03   select * from dba_objects ;
SQL> commit;
SQL> select BYTES/1024/1024,MAXBYTES/1024/1024 from Dba_Data_Files where tablespace_name ='ANDY03'; 
-- 模拟系列高水位变化
SQL>col name for a30
SQL> 
SELECT UPPER(F.TABLESPACE_NAME) " name",
D.TOT_GROOTTE_MB " size(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES " used(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "percent",
F.TOTAL_BYTES "current_free_size(M)",
(SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "total_ FREE_size",
D.TOT_GROOTTE_MB - F.MAX_BYTES "HWM(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
and f.tablespace_name='ANDY03'
ORDER BY 3 desc;

name                             size(M)    used(M) percent  current_free_size(M) total_ FREE_size  HWM(M)
------------------------------ ---------- ---------- -------- -------------------- ---------------- ----------
ANDY03                                 40         22   55.00%                   18       32745.9844      22

SQL> create table andy04 tablespace andy03 as select * from dba_objects; 
SQL> 
SELECT UPPER(F.TABLESPACE_NAME) " name",
D.TOT_GROOTTE_MB " size(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES " used(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "percent",
F.TOTAL_BYTES "current_free_size(M)",
(SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "total_ FREE_size",
D.TOT_GROOTTE_MB - F.MAX_BYTES "HWM(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
and f.tablespace_name='ANDY03'
ORDER BY 3 desc;
name                             size(M)    used(M) percent  current_free_size(M) total_ FREE_size  HWM(M)
------------------------------ ---------- ---------- -------- -------------------- ---------------- ----------
ANDY03                                 40         33   82.50%                    7       32734.9844      33

SQL> truncate table andy03;

SQL> 
SELECT UPPER(F.TABLESPACE_NAME) " name",
D.TOT_GROOTTE_MB " size(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES " used(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "percent",
F.TOTAL_BYTES "current_free_size(M)",
(SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "total_ FREE_size",
D.TOT_GROOTTE_MB - F.MAX_BYTES "HWM(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
and f.tablespace_name='ANDY03'
ORDER BY 3 desc;

name                             size(M)    used(M) percent  current_free_size(M) total_ FREE_size  HWM(M)
------------------------------ ---------- ---------- -------- -------------------- ---------------- ----------
ANDY03                                 40      12.06   30.15%                27.94       32755.9244   19.06

-- 说明truncate table后,统计信息发生了变化,查询的 HWM 不是真实的(此时 HWM 值 = 表空间大小 - 表空间对象实际物理空间总和)。
SQL> alter database datafile 10 resize 20M;
alter database datafile 10 resize 20M
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value

-- 执行成功说明 真实的 HWM 为历史上实际最大值(33 M 为上面操作查询的值)。
SQL> alter database datafile 10 resize 33M;

Database altered.

-- 查询指定表空间内对象的块号
SQL> select  segment_name,block_id,blocks FROM dba_extents where Tablespace_name ='ANDY03' order by block_id desc;
-- 查询表空间内所有对象
SQL> col SEGMENT_NAME for a25
SQL> 
SELECT t.owner, t.segment_name,SUM(bytes)/1024/1024 "SIZE(M)", t.SEGMENT_TYPE From dba_segments t
WHERE t.tablespace_name = 'ANDY03'
GROUP BY t.owner,t.segment_name,t.SEGMENT_TYPE
ORDER BY SUM(bytes) desc;

OWNER                          SEGMENT_NAME                 SIZE(M) SEGMENT_TYPE
------------------------------ ------------------------- ---------- ------------------
SYS                            ANDY04                            11 TABLE
SYS                            ANDY03                         .0625 TABLE

-- 一一开启所有对象 move 。 (按对象 block_id 由小到大 依次 move)

SQL> alter table andy04  move;

说明:
table在进行move操作时,我们只能对它进行select的操作。反过来说,当我们的一个session对table进行DML操作且没有commit时,  
在另一个session中是不能对这个table进行move操作的,否则oracle会返回这样的错误信息:ORA-00054  
  
SQL> 
SELECT UPPER(F.TABLESPACE_NAME) " name",
D.TOT_GROOTTE_MB " size(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES " used(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "percent",
F.TOTAL_BYTES "current_free_size(M)",
(SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "total_ FREE_size",
D.TOT_GROOTTE_MB - F.MAX_BYTES "HWM(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
and f.tablespace_name='ANDY03'
ORDER BY 3 desc;

name                             size(M)    used(M) percent  current_free_size(M) total_ FREE_size  HWM(M)
------------------------------ ---------- ---------- -------- -------------------- ---------------- ----------
ANDY03                                 33      12.06   36.55%                20.94       32755.9244      13
-- move后,可resize 。 (原因 block_id 发生了变化)
SQL>  alter database datafile 10 resize 13M;

Database altered.

SQL> 
SELECT UPPER(F.TABLESPACE_NAME) " name",
D.TOT_GROOTTE_MB " size(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES " used(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "percent",
F.TOTAL_BYTES "current_free_size(M)",
(SELECT free_space_mb+free_allocate_mb FROM dba_tablespace_free a where a.tablespace_name= f.tablespace_name) "total_ FREE_size",
D.TOT_GROOTTE_MB - F.MAX_BYTES "HWM(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
and f.tablespace_name='ANDY03'
ORDER BY 3 desc;

name                             size(M)    used(M) percent  current_free_size(M) total_ FREE_size  HWM(M)
------------------------------ ---------- ---------- -------- -------------------- ---------------- ----------
ANDY03                                 13      12.06   92.77%                  .94       32755.9244   12.06

最后,HWM 的确下降了。 OK,转载请标明出处。

文章可以转载,必须以链接形式标明出处。
本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/6658271.html  ,如需转载请自行联系原作者

MOVE降低高水位 HWM相关推荐

  1. oracle delete block,Oracle delete和truncate对高水位(HWM)的影响详细解析

    在讨论高水位之前需要明确一下oracle的逻辑存储的概念:Block.extent.segment.tablespace block:块的概念,他是oracle最小的一个存储单元,一般为8K,也是一次 ...

  2. DB2 V9.7新特性 - 降低高水位标记

    孔再华, 软件工程师, IBM 简介: DB2 9.7 增加了很多新功能帮助用户更容易地管理数据库.在 9.7 之前的版本中,降低表空间高水位标记是一件比较麻烦的事情,需要使用多个命令.在 DB2 9 ...

  3. Oracle 高水位(HWM: High Water Mark) 说明

    一. 准备知识:ORACLE的逻辑存储管理.        ORACLE在逻辑存储上分4个粒度: 表空间, 段, 区 和 块.        1.1 块: 是粒度最小的存储单位,现在标准的块大小是8K ...

  4. oracle hwm调整语法,各个Oracle 版本下如何调整高水位(HWM)

    各个Oracle 版本下如何调整高水位(HWM) 以下没有注明版本号的各版本都适用. 1.CTAS : create table xxx_new tablespace new_tablespace_n ...

  5. mysql 回收高水位_Oracle 高水位(HWM)回收原理及操作方法

    一.  高水位(HWM)及其产生原因 High Water Mark,HWM) 是Oracle(Segment)级别的概念.在仅有DML(比如delete,insert)操作时,高水位线只会增长,不会 ...

  6. 数据表 高水位 mysql_Oracle中的高水位(HWM)

    Linux公社(www.linuxidc.com)是专业的Linux系统门户网站,实时发布最新Linux资讯,包括Linux.Ubuntu.Fedora.RedHat.红旗Linux.Linux教程. ...

  7. mysql降低高水位_[数据库]数据高水位分析

    [数据库]数据高水位分析 0 2014-10-16 11:02:12 2014-10-04 BaoXinjian 一.摘要 PLSQL_性能优化系列14_Oracle High Water Level ...

  8. oracle hwm的位置,Oracle 高水位(HWM)教程(2)

    4. 用逻辑导入导出: Emp/Imp 5. Alter table table_name deallocate unused 注:这证明,DEALLOCATE UNUSED为释放HWM上面的未使用空 ...

  9. 高水位(HWM)详解

    什么是高水位线? 所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water ...

  10. ORACLE 高水位(HWM)

    在9I中: (1)如果MINEXTENT 可以使ALTER TABLE TABLENAME DEALLOCATE UNUSED将HWM以上所有没使用的空间释放 (2)如果MINEXTENT >H ...

最新文章

  1. 01 python爬虫
  2. matlab messagebox函数,[MATLAB]在C#中引用MATLAB函数
  3. ajax练习,ajax练习
  4. 13寸笔记本电脑尺寸_如何判断行李箱的尺寸?标准行李箱尺寸对照表(13~32寸)
  5. 浅谈内存映射I/O(MMIO)与端口映射I/O(PMIO)的区别
  6. xamarin.android 图片高斯模糊效果
  7. 条款2. 最好使用C++转型操作符
  8. 一天一工程总结系列-7.2
  9. uploadify3.1 php,Jquery上传插件 uploadify v3.1使用说明_jquery
  10. RapidMiner是什么,主要的功能和特点是什么?
  11. 计算机wmi配置错误,系统没有WMI服务怎么办、WMI错误修复方法
  12. python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译
  13. 什么是AppImage
  14. 利用JAVA画一颗小心心
  15. 2021-06-26 Vue中关与el挂载点的学习
  16. 用CSS实现段落前面缩进两个字
  17. 面试题详解:如何用Redis实现分布式锁?
  18. 前端构建工具(理解+使用)
  19. 京东吞下一号店之后,网易成中国电商最大变量?
  20. 第七届“创客中国”物联网中小企业创新创业大赛决赛落幕,云蝠智能荣获二等奖

热门文章

  1. Markdown 语法速查表
  2. sqoop连接Oracle数据库错误异常
  3. CLR via C# 3rd - 07 - Constants and Fields
  4. 程序员谨防加班猝死之十大建议(转)
  5. 使用代理为业务操作添加安全检测
  6. 北漂周记--第5记--拼命编程
  7. 三种方法进行分水岭分割
  8. 学习MongoDB 六: MongoDB查询(游标操作、游标信息)(三)
  9. iOS逆向之利用Xcode重签名
  10. [20171218]varchar2(4000)如何保存.txt