知识大全 Oracle数据库的空间管理

Posted 空间

篇首语:少年安得长少年,海波尚变为桑田。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库的空间管理相关的知识,希望对你有一定的参考价值。

Oracle数据库的空间管理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     在Oracle数据库中 DBA可以通过观测一定的表或视图来了解当前空间的使用状况 进而作出可能的调整决定      一 表空间的自由空间      通过对表空间的自由空间的观察 可用来判断分配给某个表空间的空间是太多还是不够 请看下列的语句     SQL > select a file_id FileNo a tablespace_name    Tablespace_name    a bytes Bytes a bytes sum(nvl(b bytes )) Used    sum(nvl(b bytes )) Free    sum(nvl(b bytes ))/a bytes* %free    from dba_data_files a dba_free_space b   where a file_id=b file_id(+)    group by a tablespace_name    a file_id a bytes order by a tablespace_name;    File Tablespace  No _nameBytes Used Free %free      IDX_JF E+ E+    JFSJTS E+ E+    JFSJTS E+ E+    RBS    RBS E+ E+    RBSJF E+ E+    SFGLTS E+ E+    SFSJTS E+ E+    SYSTEM    TEMP    TOOLS    USERS      rows selected    可以看出 在FileNo为 的表空间RBS中 只有 %的分配空间未被使用 这个比例太小了 而在SYSTEM及TEMP等表空间中 高达 %以上的空间未被利用 对于生产型数据库 这个表空间的设置有些偏高      关于自由空间的管理 有下面的一些建议     利用Export及Import命令卸出和装入表空间可以释放大量的空间 从而缓解增加另外的数据文件的要求     如果包含具有高插入(insert)和更新(update)活动的表的表空间中自由空间的比重下降到了 %以下 要为此表空间增加更多的空间     对于一个基本是静态表数据的表空间 如果有多于 %的自由空间 则可以考虑减少分配给它的文件空间量     减少SYSTEM表空间的空间量比较困难 因为那要重建数据库    二 表及索引的扩展      A 为了防止表或索引被过分扩展 及时实现对数据库的调整 用户应当经常对有关对象进行观察      我们可以认为 扩展区域大于 个的表或索引为过分扩展(overextended) 请看下面的语句     SQL > select substr(segment_name )   Segment_name segment_type    substr(tablespace_name )   Tablepace_name extents Max_extents    from dba_segments   where extents > and owner= JFCL    order by segment_name;    SEGMENT_NAMESEGMENT TABLEPACE_   EXTENTS MAX_EXTENTS   _TYPE      CHHDFYB TABLE JFSJTS   CHHDFYB_DHHMINDEX JFSJTS   DJHZFYB_BF TABLE JFSJTS   DJHZFYB_DJHMINDEX IDX_JF   DJHZFYB_JZHMINDEX IDX_JF   GSMFYB TABLE JFSJTS   JFDHTABLE JFSJTS   JFDH_DHHM INDEX IDX_JF   JFDH_JZHM INDEX IDX_JF   XYKFYB TABLE JFSJTS   YHDATABLE JFSJTS   YHDA_BAKTABLE JFSJTS   YHHZFYB_ TABLE JFSJTS      rows selected    通过观察 DBA可以及时发现问题并进行相应的处理      我们可以利用export卸出表 然后删除表 再利用import命令将表装入 这样 可以将不连续的区域合并成一个连续的空间      B 如果用户希望对表的空间设置进行优化 例如 需要改变表EMP的initial参数 可以采用下面的方法      在将EMP表卸出并删除后执行imp命令时使用indexfile参数      imp userid=scott/tiger file=emp dmp indexfile=emp sql Oracle把表和索引的创建信息写到指定的文件 而不是把数据写回      打开emp sql文件     REM CREATE TABLE SCOTT EMP ( EMPNO   NUMBER( ) ENAME   REM VARCHAR ( ) JOB VARCHAR ( )    MGR NUMBER( ) HIREDATE DATE   REM SAL NUMBER( ) M NUMBER  ( ) DEPTNO NUMBER( ))   REM PCTFREE PCTUSED INITRANS   MAXTRANS LOGGING STORAGE(INITIAL   REM NEXT MINEXTENTS MAXEXTENTS   PCTINCREASE FREELISTS   REM FREELIST GROUPS BUFFER_POOL DEFAULT)   TABLESPACE USER_DATA ;  REM rows   对它进行编辑 去除 REM 等信息 找到Initial参数 根据需要改变它      在SQL*plus中执行emp sql      装入数据      imp userid=scott/tiger ignore=y file=emp dmp      需要注意的是 ignore参数必须设为Y      C 可以用下面的语句来观察表或索引距离达到最大扩展的状况 UNUSE 为距离达到最大扩展的值 在User_extents表中 extent_id是从 开始记述数的     SQL >select a table_name TABLE_NAME max  (a max_extents) MAXEXTENTS    max(b extent_id)+ IN USE MAX  (a max_extents) (max(b extent_id)+ ) UNUSE    from user_tables a user_extents b    where a table_name=b segment_name    group by a table_name ORDER BY ;    TABLE_NAME MAXEXTENTS IN USEUNUSE     YZPHB   SHJYB   SHFYB   RCHDB   SJTXDZB   SJTXDAB   CHYHB   JFDH    rows selected    如果 UNUSE 小到一定的程度 我们就应该加以关注 进行适当的调整处理      三 关于连续空间      可以用下面的语句来查看数据库中的自由空间     SQL > select * from dba_free_space   where tablespace_name= SFSJTS    order by block_id;    TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS  _NAME     SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS   SFSJTS      rows selected    我们可以通过命令的结果来估计相邻自由空间的真正数量 对每一行 用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量 如果其和与下一行的块id(BLOCK_ID)相等 则此两行是连续的 如上例第二行和第三行 + = 而 + != 所以从block_id为 开始 有 + = 个block的连续空间      在Oracle数据库的后台 系统监视器(SMON)周期性地合并自由空间相邻的块 以得到更大的连续块 而DBA可以用SQL命令来完成这个工作      alter tablespace tablespace_name coalesce;      Oracle空间管理对数据库的工作性能有重要影响 其管理方法值得我们认真摸索研究 &# ; cha138/Article/program/Oracle/201311/17904

相关参考

知识大全 Oracle数据库的在空间管理三个技巧介绍

Oracle数据库的在空间管理三个技巧介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我们大

知识大全 Oracle快速删除数据字典管理的表空间

Oracle快速删除数据字典管理的表空间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我的测试

知识大全 oracle段管理分析

  ()段区段块  Oracle中的段segment是占用磁盘存储空间的一个对象从逻辑上讲一个数据库由若干表空间(TABLESAPCE)组成每个表空间有若干个表(TABLE)每个表又可以分为若干数据段

知识大全 oracle将数据导入指定表空间

在使用oracle的exp和imp导出导入的时候有时遇到需要导入的数据不是同一个用户的也不一定是同一个表空间例如源数据库上用户为aaa表空间aa目标数据库用户为bbb表空间bb当用imp导入以后查看发

知识大全 Oracle 数据库表空间容量调整脚本

Oracle数据库表空间容量调整脚本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (表空间缩容

知识大全 查询Oracle数据库表空间信息的方法

查询Oracle数据库表空间信息的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  表空间是数

知识大全 更改Oracle数据库表的表空间

更改Oracle数据库表的表空间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Oracle数

知识大全 怎么监控oracle数据库表和表空间

  怎么监控oracle数据库表和表空间的现状  declare  unfnumber;  unfbnumber;  fsnumber;  fsbnumber;  fsnumber;  fsbnumb

知识大全 oracle数据库UNDO表空间释放

oracle数据库UNDO表空间释放  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天早上在检

知识大全 细化解析如何共享Oracle数据库身份空间

细化解析如何共享Oracle数据库身份空间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我在个