Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  397 随笔 :: 33 文章 :: 29 评论 :: 0 Trackbacks
数据文件DataFile ①
 
    学习了TableSpace之后,当然就要学习DataFile啦,初学者可能对这两者的概念有一点模糊,其实很简单,tablespace是逻辑的存储单位,datafile是物理的存储单位,而且一个tablespace可以对应多个datafile,但一个datafile只能对应一个tablespace。Tablespace的知识点比较简单,主要是有两块:一是本地管理、二是对文件的操作。
 
 
一、DataFile管理准则
 
    1、初始参数DB_FILES
 
    DB_FILES指出了数据文件信息保留的SGA空间数量,所以也指出了可以为该实例创建的数据文件的最大编号。
    注:更改DB_FILES值需要重启实例后才可生效。
 
    DB_FILES太小,则在关闭数据库前无法添加超过限制数量的数据文件,太大则消耗内存。
 
    2、添加DataFile到表空间
 
    添加DataFile到表空间需要遵循一下的条件:
 
    * 操作系统对一个进程能够同时打开的文件数加以限制
    * 操作系统对数据文件的数量和大小加以限制
    * Oracle对实例打开的数据库文件最大数量有限制(与操作系统有关)
    * 不能超过DB_FILES所指定的数据文件数量
    * CREATE DATABASE/CONTROLFILE 中 MAXDATAFILES子句的影响
 
    3、考虑性能的影响
 
    4、确定数据文件的大小
 
    SYSTEM表空间的数据文件至少需要150M来包括数据字典和回滚段。
    如果安装了Oracle的其他产品,则可能还需要额外的空间。
 
    5、适当放置数据文件
 
    数据文件全部放在一个磁盘驱动器可能会引起竞争,有条件可以分开存放。
 
    6、与重做日志文件分开存储
 
    数据文件与重做日志文件存放在一个磁盘容易造成全部数据丢失,尽量分开存放。或保存多个重做日志文件。
 
 
二、创建和添加DataFile
 
    CREATE TABLESPACE  --创建表空间及其数据文件
    CREATE TEMPORARY TABLESPACE  --创建临时表空间及其临时文件
    ALTER TABLESPACE ... ADD DATAFILE  --添加一个数据文件
    ALTER TABLESPACE ... ADD TEMPFILE  --添加一个临时文件
    CREATE DATABASE  --创建数据库和关联的数据文件
    ALTER DATABASE ... CREATE DATAFILE  --创建一个新的空的数据文件代替原来的
 
    注:推荐指定文件全名,否则按系统默认会比较混乱。
 
 
三、改变DataFile大小
 
    1、启用/禁用数据文件的自动盘区
 
    自动盘区指DataFile可以在额定的范围内自动增长,这样可以减少表空间用完时立即干预的必要,也可以确保应用程序不会因为分配盘区而失败或暂停。
 
    查询数据文件是否为自动盘区,可以查询DBA_DATA_FILES视图的AUTOEXTENSIBLE字段。
 
    要将数据文件设置成自动盘区,可以在以下语句中加入 AUTOEXTEND ON 子句:
    CREATE DATABASE ...
    CREATE TABLESPACE ...
    ALTER TABLESPACE ...
 
    添加的举例:
 
    ALTER TABLESPACE users
    ADD DATAFILE '/u02/oracle/rbdb1/users03.dbf' SIZE 10M
    AUTOEXTEND ON
    NEXT 512K
    MAXSIZE 250M;
 
    禁用的例子:
 
    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users03.dbf'
    AUTOEXTEND OFF;
 
 
    2、手动调整DataFile
 
    使用以下语句来手动改变DataFile的大小:
    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf'
    RESIZE 100M;
 
 
四、修改数据文件可用性
 
    要使DataFile脱机或联机,有两种方法:
 
    ① ALTER DATABASE 语句修改单独的DataFile
    ② ALTER TABLESPACE 语句修改所有的DataFile
 
    1、在ARCHIVRLOG模式下的更改DataFile状态
 
    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' ONLINE;
    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' OFFLINE;
 
    注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile
 
    2、在NOARCHIVELOG模式下使DataFile脱机
 
    由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER DATABASE语句下带有DATAFILE和OFFLINE DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时
 
    ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users3.dbf' OFFLINE DROP;
 
    3、修改TableSpace中所有DataFile或TempFile的可用性
 
    ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}
    ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE}
 
    注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。
 
    总结:
 
    ① ALTER TABLESPACE可以在数据库装载状态时发布,无需打开
    ② 涉及到系统表空间、撤销表空间、默认临时表空间时,必须是未打开的数据库
    ③ ALTER DATABASE DATAFILE 语句中必须填入文件全名
 
posted on 2009-02-04 21:18 decode360 阅读(231) 评论(0)  编辑  收藏 所属分类: 08.DBA

只有注册用户登录后才能发表评论。


网站导航: