通过dba_free_space视图查看表空间的空间分配过程

通过dba_free_space视图查看表空间的空间分配过程

ID:42684665

大小:113.41 KB

页数:9页

时间:2019-09-20

通过dba_free_space视图查看表空间的空间分配过程_第1页
通过dba_free_space视图查看表空间的空间分配过程_第2页
通过dba_free_space视图查看表空间的空间分配过程_第3页
通过dba_free_space视图查看表空间的空间分配过程_第4页
通过dba_free_space视图查看表空间的空间分配过程_第5页
资源描述:

《通过dba_free_space视图查看表空间的空间分配过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、(2011-01-27)通过dba_free_space视图查看表空间的空间分配过程分类:Oracle工作总结2011-01-2718:382647人阅读评论(0)收藏举报oracle10g数据库oracle扩展一、dba_free_space的说明:dba_free_space显示的是有free空间的tablespace,如果一个tablespace的free空间不连续,那每段free空间都会在dba_free_space中存在一条记录。如果一个tablespace有好几条记录,说明表空间存在碎片,当采用字典管理的表空间碎片超

2、过500就需要对表空间进行碎片整理。二、关于dba_free_space的疑问:根据如下查询:SQL>selecttablespace_namefromdba_free_space;根据查询结果可发现,出现了多个相同的表空间名;为什么呢?这个问题可根据dba_free_space的说明得到解答:dba_free_space显示的是有free空间的tablespace,如果一个tablespace的free空间不连续,那每段free空间都会在dba_free_space中存在一条记录。如果一个tablespace有好几条记录,说明

3、表空间存在碎片,当采用字典管理的表空间碎片超过500就需要对表空间进行碎片整理。根据如下查询语句可发现:SQL>select*fromdba_free_space;一个表空间有两个不连续的block_id,正是因为这样才会导致一个表空间在dba_free_space视图中存在两条记录;三、关于dba_free_space视图的问题看下面的例子,请高手解释一下好吗?------------------------一开始:环境:Windowsxp+Oracle10g10.2.0;数据库:PAXDB,表空间:TEST_TABLESPA

4、CEtest_tablespace(createtablespacetest_tablespacedatafile'D:/oracle/ORADATA/test_datafile.dbf'size300Mextentmanagermentlocaluniformsize40K);用户:test/manager说明:新建立的表空间test_tablespace对应的数据文件大小是300m,所在的数据库的数据块大小是8192byte(),所以对于刚建立的表空间来说,由于数据文件头部占据了0-8共9个数据块。从下面的查询block_i

5、d=9我们可以看出,oracle保留了数据文件前面9个block(block0~8),所以刚开始查询表空间的空闲空间时,数据块bloci_id是从9开始的,总共的字节数是314490880,总共有314490880/8192=38390个数据块,共314490880/1024/1024=299.921875m.总共使用的空间数目是8192*9/1024/1024=0.0703125m.下面我们来看看这9个block的具体情况:block0:OSheaderblock1:datafileheaderblock2:bitmapped

6、filespaceheaderblock3~8:Headportionofbitmapblocks至于如何看某个block的结构,用bbed再方便不过了,那下面我们就用bbed来看看这9个block是什么样的SQL>select*fromdba_free_spacewheretablespace_name='TEST_TABLESPACE';得到:然后在TEST_TABLESPACEtablespace中建一表:createtablecba(cbanumber(20));---(初始为40k)SQL>select*fromdba

7、_free_spacewheretablespace_name='TEST_TABLESPACE';说明:在表空间初始化建立时指定了uniform参数,说明该表空间里所有的segment的extent大小都相同为40k,所以当在该表空间里建立一个表时,该表所对应的段的扩展extent一次为40k,即40*1024/8192=5个数据块。所以建立一个表后该表空间的空闲空间的数据块block_id从原来的9增加5后递增到14开始。再drop它droptablecba;再查询:SQL>select*fromdba_free_space

8、wheretablespace_name='TEST_TABLESPACE';得到:(此处就多了一条记录)然后再建一表createtableabc(abcnumber(20));---(初始为40k)查询:select*fromdba_free_spacewhe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。