知识大全 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数据库的在空间管理三个技巧介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我们大
Oracle快速删除数据字典管理的表空间 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我的测试
()段区段块 Oracle中的段segment是占用磁盘存储空间的一个对象从逻辑上讲一个数据库由若干表空间(TABLESAPCE)组成每个表空间有若干个表(TABLE)每个表又可以分为若干数据段
在使用oracle的exp和imp导出导入的时候有时遇到需要导入的数据不是同一个用户的也不一定是同一个表空间例如源数据库上用户为aaa表空间aa目标数据库用户为bbb表空间bb当用imp导入以后查看发
Oracle数据库表空间容量调整脚本 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! (表空间缩容
查询Oracle数据库表空间信息的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 表空间是数
更改Oracle数据库表的表空间 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Oracle数
怎么监控oracle数据库表和表空间的现状 declare unfnumber; unfbnumber; fsnumber; fsbnumber; fsnumber; fsbnumb
oracle数据库UNDO表空间释放 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天早上在检
细化解析如何共享Oracle数据库身份空间 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 我在个