当前位置:七道奇文章资讯数据防范Oracle防范
日期:2012-04-14 04:53:00  来源:本站整理

Oracle数据库笔记--表空间[Oracle防范]

赞助商链接



  本文“Oracle数据库笔记--表空间[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  Oracle数据库笔记--表空间

  在前面学习Oracle数据库底子架构时,已经理解了Oracle的存储构造,逻辑上,Oracle的数据存放在tablespaces中,物理上存放在datafiles中.一个tablespace只能属于一个数据库(一个数据库可包含多个tablespace),包含了1个或多个数据文件.Tablespace可进一步分为segments、extents和blocks.一个datafile只属于一个数据库的一个tablespace.

  Tablespace的分类有2种,一种分为SYSTEM tablespace和Non-SYSTEM tablespace.

  SYSTEM tablespace是随数据库的成立而成立的,包含了数据字典和SYSTEM undo segment;Non-SYSTEM tablespace包含了分配给用户的空间便于数据库的空间管理.

  另一种分为permanent、undo、temporary三种tablespace.普通不加分外阐明时所成立的permanent tablespace,保存永久性对象;undo tablespace用于保存undo segments以便于回滚操作,而不能包含其他对象;temporary tablespace是用于举行排序操作,可以被多个用户同享,不能包含永久性对象.

  Temporary tablespace中有一个default temporary tablespace,指定了一个全局的默许暂时表空间,假如没有这个表空间,默许情形下,是利用SYSTEM tablespace来存储暂时数据的,明显,这是不好的,默许暂时表空间只有一个,可以从表database_properties中查看default temp tablespace,在新的default temp tablespace被成立之前,是不能被dropped的.

  和tablespace以及datafile相关的数据字典有:dba_tablespaces、v$tablespace、dba_data_files、v$datafile、dba_temp_files、v$tempfile.

  1、成立表空间

  成立表空间的完好号令:

  Create [undo] tablespace

  datafile [,]

  mininum extent k|m

  blocksize [k]

  logging clause

  force logging

  default storage_clause

  online | offline

  permanent | temporary

  extent_manager_clause

  segment_manager_clause

  1)、undo指定系统将成立一个回滚表空间

  2)、tablespace指定表空间名称

  3)、datafile指定数据文件的途径、名称、大小及自增长情况:具体形如'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 50M autoextend on next 10M maxsize 500M,也可以指定on为off,就没有背面的递增和最大尺寸了,也可以在maxsize背面指定最大尺寸unlimited阐明表空间无限大.

  4)、mininum extent k|m指出在表空间的extent的最小值,这个参数可以削减空间碎片,保证在表空间的extent是这个数值的整数倍;

  5)、blocksize [k]设置块的大小,假如要设置这个参数,必须设置成db_block_size的整数倍;

  6)、logging cluse指导这个表空间上全部用户对象的日记属性,缺省是logging;

  7)、force logging指导表空间进入强迫日记情势.此时系统将记录表空间上对象的全部改变,除了暂时段的改变.这个参数高于logging参数中的nologging选项;

  8)、default storage_clause声明缺省的存储子句;

  9)、online|offline指定表空间状况;

  10)、permanent | temporary指出表空间的属性,是永久表空间还是暂时表空间.永久表空间存放的是永久对象,暂时表空间存放的是session生命期中存在的暂时对象.这个参数生成的暂时表空间成立后一向都是字典管理,不能利用extent management local选项.假如要成立本地管理表空间,必须利用create temporary tablespace.声明了这个参数就不能声明block size.

  11)、extent_manager_clause阐明表空间若何管理extent.一旦声明了这个子句,就只能通过移植的方法改变这些参数.假如但愿表空间本地管理的话,声明local选项.本地管理表空间是通过位图管理的.Autoallocate阐明表空间自动分配extent,用户不能指定extent的大小.只有9.0以上的版本具有这个功效.Uniform阐明表空间的范围的固定大小,缺省是1M.不能将本地管理的数据库的SYSTEM表空间设置成字典管理.ORACE举荐利用本地管理表空间.假如没有设置这个子句,oracle会举行默许设置.假如初始化参数compatible小于9.0.0,那么系统成立字典管理表空间,假如大于9.0.0,那么按以下设置:

  假如没有指定default storage_clause,oracle成立一个自动分配的本地管理表空间;不然假如指定了mininum extent,那么oracle判断mininum extent、initial、next能否相等,以及pctincrease能否为0,假如满意这2个条件,oracle妒忌昂就一个本地管理表空间,extent size是initial,假如不满意,那么oracle将成立一个自动分配的本地管理表空间;假如没有指定mininum extent,那么oracle判断initial和next能否相等,以及pctincrease能否为0,假如满意这2个条件,那么oracle成立一个本地管理表空间并拟定uniform,不然oracle将成立一个自动分配的本地管理表空间.(本地管理表空间只能存储永久对象.假如你声明了local,则不能声明default storage_clause,mininum extent,temporary);

  12)、segment_management_clause : segment space management auto.

  2、表空间的状况:

  Tablespace的状况有3种:ONLINE、OFFLINE、READ ONLY.ONLINE是正常工作的状况,OFFLINE状况下,是不答应拜候数据的,SYSTEM tablespace和DEFAULT temp tablespace是不能被OFFLINE的,且带有active undo segments的tablespace也不能被OFFLINE.切换ONLINE和OFFLINE状况的号令是alter tablespace offline/online.当状况变成READ-ONLY时,会产生一个checkpoint,此时数据只能读不能写,但是可以drop对象,相关号令是alter tablespace read only和alter tablespace read write.

  3、表空间的存储设置

  改正tablespace和datafiles的存储设置.这项工作是指改正tablespace的大小和datafile的存放位置.

  在改正tablespace的大小之前,我们需求先知道tablespac的当前存储情形.可以用下面的SQL语句实现:

  SELECT a.tablespace_name,

  a.bytes bytes_used,

  b.largest,

  round(((a.bytes - b.bytes) / a.bytes)*100, 2) percent_used

  FROM

  (SELECT tablespace_name,

  SUM(bytes) bytes

  FROM Dba_Data_Files

  GROUP BY tablespace_name) a,

  (SELECT tablespace_name,

  SUM(bytes) bytes,

  MAX(bytes) largest

  FROM dba_free_space

  GROUP BY tablespace_name) b

  WHERE a.tablespace_name = b.tablespace_name

  ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;

  上面这条SQL语句中,有2条子查询,第一条获得的是表空间的总字节数,第二条获得的是表空间中余下的字节数,终究得到的后果是已经利用的字节数和百分比.

  改正tablespace的大小,主如果通过datafile的大小来实现的,改正datafile的大小又有3种办法:1)、使数据文件自增长;2)、改变数据文件大小;3)、增添数据文件.

  使数据文件自增长:表DBA_DATA_FILES中有一个字段AUTOEXTENSIBLE与这个办法对应,它指导数据文件能否自增长,也就是数据文件不能满意存储需求时,能否自动增添大小来满意需求.先运行下列号令成立一个datafile大小为5M的表空间—TEST:create tablespace test datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' size 5M;这个时刻,AUTOEXTENSIBLE是NO,也就是数据文件的大小是固定的,不会自增长(当然,我们也可以在成立号令中加入指令设置自增长).下面我们手动来改正数据文件为自增长:alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' autoextend on next 5M maxsize 50M;这条号令将TEST.DBF数据文件设置为按5M大小举行自增长,最大为50M.

  改变数据文件大小:从前面的数据文件为例,我想将数据文件设置为100M大小,可以履行号令:alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST.DBF' resize 100M;

  增添数据文件:这应当是最好的一种方法,便于管理.以TEST表空间为例,增添数据文件的号令以下:alter tablespace test add datafile 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' size 5M autoextend on next 5M maxsize 50M;这条号令就直接指定了数据文件自增长.

  除了改正表空间的大小,存储设置中还可以举行的一项工作就是移动数据文件.移动数据文件有2种办法,一种是利用alter tablespace号令,一种是利用alter database号令.

  利用alter tablespace移动数据文件前,需求先将表空间OFFLINE,然后目标数据文件必须存在(也就是将需求移动的数据文件复制到目的地).以将数据文件TEST01.DBF移动到上一层目录为例.先履行号令:alter tablespace test offline;然后将TEST01.DBF复制到上一级目录,再履行号令:alter tablespace test rename datafile E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\TEST01.DBF';然后再将表空间ONLINE便可以了:alter tablespace test online;.

  利用alter database移动数据文件时,一样,目标数据文件必须存在(原文件的副本),且数据库需求处于MOUNTED状况.第一种办法,已经将数据文件移动到了父一级目录,下面再将它移回来.先关闭数据库:shutdown immediate;然后启动数据库,启动选项为mount:startup mount;然后履行移动号令:alter database rename file 'E:\oracle\product\10.2.0\oradata\TEST01.DBF' to 'E:\oracle\product\10.2.0\oradata\orcl\TEST01.DBF';再翻开数据库:alter database open,报错了:

  ORA-01113:文件7需求介质恢复

  ORA-01110:数据文件7:’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’,细节还不懂得,只知道数据库认为这个数据文件收到破坏,需求利用备份、日记信息来恢复.这本来是个对比严重的问题,但是在这个实例中,还是很好办理的,履行号令:

  recover datafile ’E:ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF’.提醒完成介质恢复,再翻开数据库:alter database open;一切就正常了.

  4、删除表空间

  删除表空间,利用号令drop tablespace .但是有3个选项需求注意:

  INCLUDING CONTENTS:指导删除表空间中的segments;

  INCLUDING CONTENTS AND DATAFILES:指导删除segments和datafiles;

  CASCADE CONSTRAINTS:删除全部与该空间相关的完好性约束条件.

  Drop tablespace test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;

  需求注意的是SYSTEM表空间以及具有active segments的表空间是无法删除的.


  以上是“Oracle数据库笔记--表空间[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • SQL Server中利用Linkserver衔接Oracle的办法
  • Oracle数据库网络与安全FAQ精辟堆积
  • Ubuntu 9.10下安装Oracle10g
  • Ubuntu 10.04 下安装Oracle 11g
  • oracle盲注报错语句和oracle提权语句汇总
  • oracle中to_char、to_number、to_date的用法
  • Python模拟Oracle的SQL/PLUS工具的实现办法
  • Oracle数据库访谈之最年青的OCM访谈
  • oracle表数据误删复原
  • Oracle数据库笔记--表空间
  • Oracle数据库树形查询的代码示例
  • oracle中记录和调集
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        100%(1)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .