- 浏览: 55988 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
Hwm是oracle segment中的一个比较重要的参数,它代表了该segment中曾经使用过的最大块空间,oracle把已经分配给该段的块分为2部分,一部分是已经或者说曾经使用到的最大空间,另一部分是已经分配给该段,但尚未被格式化,不能直接使用的部分,而hwm就是这2部分的分界线,oracle在需要新的空间的时候,先在hwm以下的块中寻找空间,如果空间不能满足,则使用hwm指向的快,然后hwm移动指向下一个块。
段空间的管理方式
1:fml freelist management ,segment hwm下所有可用的快使用freelist来管理,freelist位于第一个extent中。一个block是否位于freelist取决于pctfree和pctused,当需要块空间的时候,会进入freelist链表中寻找。因此,当对该segment频繁的进行dml的时候,会产生竞争,这时可以采用增加freelist和freelist groups。
新建一个segment的时候,第一个extent的第一个块用于存放断头信息,freelist和hwm的相关信息,也存放在这里面,类似于
buffer tsn: 0 rdba: 0x0040c661 (1/50785)
scn: 0x0000.0066c205 seq: 0x02 flg: 0x00 tail: 0xc2051002
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 7
last map 0x00000000 #maps: 0 offset: 4128
Highwater:: 0x0040c662 ext#: 0 blk#: 0 ext size: 7
--(file=1 blcok=50786,即第二个block)
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0 Unlocked
Map Header:: next 0x00000000 #extents: 1 obj#: 30790 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x0040c662 length: 7
--初始分配一个extent,一个extent有8个block,第一个中block用于存放段头信息,这样,第一个extent中将剩余7个块可供使用
nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 0
SEG LST:: flg: UNUSED lhd: 0x00000000 ltl: 0x00000000
End dump data blocks tsn: 0 file#: 1 minblk 50785 maxblk 50785
2:assm auto segment space management ,9i开始,在lmt表空间中,可以选择使用assm方式的段空间管理,该方式下,用位图取代freelist,用位图来管理段中的快的使用情况,为该段指定的pctused,next,freelist参数都将被忽略掉。
新建一个segment的时候,第一个extent的至少是三个块用于存放断头信息,类似于
Start dump data blocks tsn: 9 file#: 9 minblk 9 maxblk 9
buffer tsn: 9 rdba: 0x02400009 (9/9)
scn: 0x0000.0066eedf seq: 0x02 flg: 0x00 tail: 0xeedf2002
frmt: 0x02 chkval: 0x0000 type:0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
Locker xid: : 0x0000.000.00000000
Highwater:: 0x0240000c ext#: 0 blk#: 3 ext size: 8
--0x0240000c =file 9 blcok 12,即前三个块用户存放段头信息
DBA Ranges :
--------------------------------------------------------
0x02400009 Length: 8 Offset: 0
0:Metadata 1:Metadata 2:Metadata 3:unformatted
4:unformatted 5:unformatted 6:unformatted 7:unformatted
--------------------------------------------------------
End dump data blocks tsn: 9 file#: 9 minblk 9 maxblk 9
高水位印以下空间的回收
高水位线的对full table scan的影响
oracle在delete的时候,并不会立即的收缩hwm,这样,在对此表做full table scan的时候,oracle会扫描hwm下的所有记录,即使有些块是空快,也照样读取,如果一个表,频繁的delete,而hwm又不能收缩,或者说hwm下面的块空间不能充分填充数据,这样就可能带来性能问题。
CREATE TABLE T AS SELECT * FROM DBA_OBJECTS;
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'SYS',TABNAME=>'T');
PL/SQL procedure successfully completed
SQL> EXEC SHOW_SPACE('T');
Total Blocks............................512
Total Bytes.............................4194304
Unused Blocks...........................106
Unused Bytes............................868352
Last Used Ext FileId....................1
Last Used Ext BlockId...................51849
Last Used Block.........................22
HWM=Total Blocks- Unused Blocks+1=407,HWM此时位于第407块。
SQL> DELETE T;
SQL> SELECT COUNT(*) FROM T;
COUNT(*)
----------
0
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=41 Card=1)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=41Card=1)
如何降低高水位线
a:用truncate代替delete
b:用move命令,但需要重新rebuild index
c:如果是assm方式,可以采用shrink命令,不需要rebuild index
d:exp/imp
SQL> alter table t move tablespace system;
SQL> exec show_space('T');
Total Blocks............................8
Total Bytes.............................65536
Unused Blocks...........................7
Unused Bytes............................57344
Last Used Ext FileId....................1
Last Used Ext BlockId...................52145
Last Used Block.........................1
HWM=Total Blocks- Unused Blocks+1=2,HWM此时位于第2块。
SQL> ANALYZE TABLE T COMPUTE STATISTICS;
表已分析。
SQL> SELECT COUNT(*) FROM T;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=2Card=1)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=2Card=1)
HWM以上空间的回收
做完analyze后,DBA_TABLES中的empty_blocks表示hwm以上的空间,对于这部分空间的回收,可以用Alter table t deallocate unused命令;
SQL> Select owner,table_name,blocks,empty_blocks From DBA_TABLES Where WNER='SYS' And TABLE_NAME='T';
OWNER TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ------------------------------ ---------- ------------
SYS T 403 108
SQL> ALTER TABLE T DEALLOCATE UNUSED;
SQL> ANALYZE TABLE T COMPUTE STATISTICS;
SQL> Select owner,table_name,blocks,empty_blocks From DBA_TABLES Where WNER='SYS' And TABLE_NAME='T';
OWNER TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ------------------------------ ---------- ------------
SYS T 403 4
段空间的管理方式
1:fml freelist management ,segment hwm下所有可用的快使用freelist来管理,freelist位于第一个extent中。一个block是否位于freelist取决于pctfree和pctused,当需要块空间的时候,会进入freelist链表中寻找。因此,当对该segment频繁的进行dml的时候,会产生竞争,这时可以采用增加freelist和freelist groups。
新建一个segment的时候,第一个extent的第一个块用于存放断头信息,freelist和hwm的相关信息,也存放在这里面,类似于
buffer tsn: 0 rdba: 0x0040c661 (1/50785)
scn: 0x0000.0066c205 seq: 0x02 flg: 0x00 tail: 0xc2051002
frmt: 0x02 chkval: 0x0000 type: 0x10=DATA SEGMENT HEADER - UNLIMITED
Extent Control Header
-----------------------------------------------------------------
Extent Header:: spare1: 0 spare2: 0 #extents: 1 #blocks: 7
last map 0x00000000 #maps: 0 offset: 4128
Highwater:: 0x0040c662 ext#: 0 blk#: 0 ext size: 7
--(file=1 blcok=50786,即第二个block)
#blocks in seg. hdr's freelists: 0
#blocks below: 0
mapblk 0x00000000 offset: 0 Unlocked
Map Header:: next 0x00000000 #extents: 1 obj#: 30790 flag: 0x40000000
Extent Map
-----------------------------------------------------------------
0x0040c662 length: 7
--初始分配一个extent,一个extent有8个block,第一个中block用于存放段头信息,这样,第一个extent中将剩余7个块可供使用
nfl = 1, nfb = 1 typ = 1 nxf = 0 ccnt = 0
SEG LST:: flg: UNUSED lhd: 0x00000000 ltl: 0x00000000
End dump data blocks tsn: 0 file#: 1 minblk 50785 maxblk 50785
2:assm auto segment space management ,9i开始,在lmt表空间中,可以选择使用assm方式的段空间管理,该方式下,用位图取代freelist,用位图来管理段中的快的使用情况,为该段指定的pctused,next,freelist参数都将被忽略掉。
新建一个segment的时候,第一个extent的至少是三个块用于存放断头信息,类似于
Start dump data blocks tsn: 9 file#: 9 minblk 9 maxblk 9
buffer tsn: 9 rdba: 0x02400009 (9/9)
scn: 0x0000.0066eedf seq: 0x02 flg: 0x00 tail: 0xeedf2002
frmt: 0x02 chkval: 0x0000 type:0x20=FIRST LEVEL BITMAP BLOCK
Dump of First Level Bitmap Block
--------------------------------
Locker xid: : 0x0000.000.00000000
Highwater:: 0x0240000c ext#: 0 blk#: 3 ext size: 8
--0x0240000c =file 9 blcok 12,即前三个块用户存放段头信息
DBA Ranges :
--------------------------------------------------------
0x02400009 Length: 8 Offset: 0
0:Metadata 1:Metadata 2:Metadata 3:unformatted
4:unformatted 5:unformatted 6:unformatted 7:unformatted
--------------------------------------------------------
End dump data blocks tsn: 9 file#: 9 minblk 9 maxblk 9
高水位印以下空间的回收
高水位线的对full table scan的影响
oracle在delete的时候,并不会立即的收缩hwm,这样,在对此表做full table scan的时候,oracle会扫描hwm下的所有记录,即使有些块是空快,也照样读取,如果一个表,频繁的delete,而hwm又不能收缩,或者说hwm下面的块空间不能充分填充数据,这样就可能带来性能问题。
CREATE TABLE T AS SELECT * FROM DBA_OBJECTS;
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'SYS',TABNAME=>'T');
PL/SQL procedure successfully completed
SQL> EXEC SHOW_SPACE('T');
Total Blocks............................512
Total Bytes.............................4194304
Unused Blocks...........................106
Unused Bytes............................868352
Last Used Ext FileId....................1
Last Used Ext BlockId...................51849
Last Used Block.........................22
HWM=Total Blocks- Unused Blocks+1=407,HWM此时位于第407块。
SQL> DELETE T;
SQL> SELECT COUNT(*) FROM T;
COUNT(*)
----------
0
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=41 Card=1)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=41Card=1)
如何降低高水位线
a:用truncate代替delete
b:用move命令,但需要重新rebuild index
c:如果是assm方式,可以采用shrink命令,不需要rebuild index
d:exp/imp
SQL> alter table t move tablespace system;
SQL> exec show_space('T');
Total Blocks............................8
Total Bytes.............................65536
Unused Blocks...........................7
Unused Bytes............................57344
Last Used Ext FileId....................1
Last Used Ext BlockId...................52145
Last Used Block.........................1
HWM=Total Blocks- Unused Blocks+1=2,HWM此时位于第2块。
SQL> ANALYZE TABLE T COMPUTE STATISTICS;
表已分析。
SQL> SELECT COUNT(*) FROM T;
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT ptimizer=CHOOSE (Cost=2Card=1)
1 0 SORT (AGGREGATE)
2 1 TABLE ACCESS (FULL) OF 'T' (Cost=2Card=1)
HWM以上空间的回收
做完analyze后,DBA_TABLES中的empty_blocks表示hwm以上的空间,对于这部分空间的回收,可以用Alter table t deallocate unused命令;
SQL> Select owner,table_name,blocks,empty_blocks From DBA_TABLES Where WNER='SYS' And TABLE_NAME='T';
OWNER TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ------------------------------ ---------- ------------
SYS T 403 108
SQL> ALTER TABLE T DEALLOCATE UNUSED;
SQL> ANALYZE TABLE T COMPUTE STATISTICS;
SQL> Select owner,table_name,blocks,empty_blocks From DBA_TABLES Where WNER='SYS' And TABLE_NAME='T';
OWNER TABLE_NAME BLOCKS EMPTY_BLOCKS
------------------------------ ------------------------------ ---------- ------------
SYS T 403 4
发表评论
-
oracle 命令
2009-02-05 20:30 976一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1342在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 857优化策略 为了保 ... -
Oracle Start With Connect By
2009-01-21 11:33 1558Start With Connect By 是用来实现在一个 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 997创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 726移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1138--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 13191.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 831通过以下方法可以把Autotrace的权限授予Everyone ... -
user和schema的区别:
2009-01-21 11:30 1016说穿了其实user是控制权限的,而schema是个容器,非所有 ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2079今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2600在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2263说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11821.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2312概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1502--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 895分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1752在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3131对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 972深入分析Oracle数据库日志文件 作者:程永新 发文时间: ...
相关推荐
ruoyi-vue-pro-vben 芋道管理后台,基于 vben 最新版本,最新的 vue3 vite4 ant-design-vue 4.0 typescript 语法进行重构开发,支持 springboot3 springcloud 版本
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
该项目是一个基于Java语言开发的水果管理系统设计源码,包含53个文件,其中包括30个Java源文件、13个XML配置文件、6个JAR包文件、1个Git忽略文件、1个属性文件以及1个SQL脚本文件。此系统旨在用于期末答辩展示,展示了开发者对Java编程和系统设计的深入理解。
java回顾、知识整理、拾遗、面试_java-review
mysql主从复制用struts2,spring,hibernate框架,搭建在线考试系统。网站支持(1)老师创建题库,创建题目,查看题目对题目进行增删改,发布考试(选择考试难中易比例),批改学生试卷,查看学生成绩。(.zip
一个基于Go语言实现的搜索引擎项目资源
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于grpc开发的跨语言的交互系统,集成BCS,Brower
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于go语言,使用gocv和socket实现摄像头视频传输项
apache-seatunnel-web-1.0.2
内容概要:本篇文章主要介绍了如何在VMware虚拟化平台上搭建并配置QNX Neutrino实时操作系统的步骤方法。文章首先给出了获取必要的安装文件来源,然后逐步指导用户如何完成QNX在虚拟机中的安装过程以及相关网络参数配置,包括选择适当的网络模式来实现宿主机器与QNX虚拟机之间的通信,具体为设置NAT模式或者桥接模式下的网络参数,如指定静态或动态获取IP地址的方法。 适用人群:对嵌入式开发感兴趣的技术人士,尤其是需要在Linux环境下开展工作的程序员和系统工程师。 使用场景及目标:通过详细的操作指南帮助初学者快速掌握在Windows或Linux主机上利用虚拟机搭建QNX Real-Time Operating System开发环境的基础技能,能够实现在该环境中运行简单的C/C++应用程序。 其他说明:本文不仅适用于QNX初学者作为入门引导资料,也为经验丰富的开发者提供了有关于特定环境配置的重要参考。由于涉及到的具体细节比较多,读者最好边操作边对照文章内容进行练习。同时要注意保持最新版本的虚拟化平台客户端和服务端程序以确保兼容性和稳定性。
stm32中dma结合ad的使用
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
低全球变暖潜能值 (GWP) 制冷剂.docx
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
ubuntu