您在这里:首页 > 学员专区 > 技术文章
  • oracle全球副总裁Robert Green和亚太地区副总裁Damien Garey莅临CUUG参观视察工作!
  • Oracle视频
    Oracle
    CUUG课程

    oracle物理结构(二)--数据文件

     

    据文件(数据文件的详细信息记载在控制文件中)

    ·每个oracle数据库必须至少有一个数据文件,用于存放数据库数据

    ·多个数据文件应分放在不同的disk上以提高存取速度

    1、主要分类:

    system01.dbf:记录系统运行信息,包含所有数据库字典,PL/SQL程序代码及其他系统信息

    undotbs01.dbf:存放回退信息,即DML操作后的旧数据信息

    sysaux01.dbf:system文件的辅助文件,存放支持oracle系统活动的多种工具如logminer

    users01.dbf:新建用户未指定存储空间是,默认数据存放在该文件中

    example01.dbf:存放示例数据信息。

    2、查看数据库数据文件

    ·查看数据文件及大小

    SQL>select name,bytes from v$datafile;

    SQL>select*from dba_data_files;

    SQL>hostls –l /u01/app/oracle/oradata/ora10/*.dbf

    3、修改数据库的数据文件

    【移动/更名一个数据文件】

    SQL>shutdown immediate

    $mv /u01/app/oracle/oradata/ora10/{example01.dbf,../example.dbf}

    SQL>alter database ora10 rename file

    2 '/u01/app/oracle/oradata/ora10/example01.dbf' to

    3 '/u01/app/oracle/oradata/example.dbf';

    Database altered.

    SQL>alter database open;

    Database altered.

    SQL>select * from v$datafile;

    【数据文件的扩大和缩小】

    SQL>create tablespace test datafile'/u01/app/oracle/oradata/test1.dbf' size5M;                                                 新建表

    空间及其所包含的数据文件

    SQL>hostls –l /u01/app/oracle/oradata/test1.dbf

    -rw-r-----1 oracle oinstall 5251072 Mar 31 16:26

    /u01/app/oracle/oradata/test1.dbf

    SQL>alter database datafile

    '/u01/app/oracle/oradata/test1.dbf' autoextend on;

    设置数据文件自动扩充

    SQL>select autoextensiblefromdba_data_files         查看自动扩充标志

    Where file_name='/u01/app/oracle/oradata/test1.dbf';

    AUT

    ---

    YES

    SQL>alter database datafile '/u01/app/oracle/oradata/test1.dbf' resize 10M;

    手工扩充数据文件大小

    SQL>hostls –l /u01/app/oracle/oradata/test1.dbf

    -rw-r-----1 oracle oinstall 10493952 Mar 31 16:29

    /u01/app/oracle/oradata/test1.dbf                   手工缩减数据文件大小

    SQL>alter database datafile '/u01/app/oracle/oradata/test1.dbf' resize 7M;

    SQL>hostls –l /u01/app/oracle/oradata/test1.dbf

    -rw-r-----1 oracle oinstall 7348224 Mar 31 16:29

    /u01/app/oracle/oradata/test1.dbf

    4、数据文件的添加和删除

    【添加数据文件到表空间】

    SQL>alter tablespace test add datafile

    '/u01/app/oracle/oradata/test2.dbf' size 5M

    【删除表空间中的所有数据文件】

    SQL>select file_name,tablespace_name from dba_data_files;

    查询欲删的数据文件对应的表空间,是否包含多个数据文件

    SQL>drop tablespace test including contents;直接删除表空间

    SQL>host rm –rf /u01/app/oracle/oradata/test*.dbf 删除数据文件

    【删除表空间中的部分数据文件】

    SQL>alter database ora10 datafile

    '/u01/app/oracle/oradata/test2.dbf' offline drop;

    若表空间中包含多个数据文件,且部分数据文件不能删掉,则欲删掉数据文件先进行脱机处理

    <特别警告!!!>此处drop不意味着该数据文件在数据库中已经删除,此时若在OS中直接删

    除该数据文件,则数据库将面临崩溃。

    SQL>select file_name,tablespace_name,online_status from dba_data_files;

    FILE_NAME

    ----------------------------------------------------------------------------------

    TABLESPACE_NAME                     ONLINE_

    -------------------------------------

    /u01/app/oracle/oradata/example.dbf

    EXAMPLE                           ONLINE

    /u01/app/oracle/oradata/ora10/users01.dbf

    USERS                            ONLINE

    /u01/app/oracle/oradata/ora10/undotbs01.dbf

    UNDOTBS1                          ONLINE

    /u01/app/oracle/oradata/ora10/system01.dbf

    SYSTEM                            SYSTEM

    /u01/app/oracle/oradata/ora10/sysaux01.dbf

    SYSAUX                            ONLINE

    /u01/app/oracle/oradata/test1.dbf

    TEST                             ONLINE

    /u01/app/oracle/oradata/test2.dbf

    TEST                             RECOVER

    据文件仍然存在(状态recover),故不能直接删除该数据文件,只能通过删除表空间的方法删除表空间中的所有数据文件。

    ora10.2可用drop参数删数据文件,但存在限制:1.表空间中自个数据文件不能删除;2.被删除数据文件必须为空;3.无法删除表空间中的最后一个数据

    文件,除非表空间本身。

    测试:

    SQL>select file_name,tablespace_name from dba_data_files;

    SQL>alter tablespace test2 add datafile '/u01/test02.dbf' size 5M;

    SQL>alter tablespace test2 add datafile '/u01/test03.dbf' size 5M;

    创建表空间就并加数据文件

    SQL>alter tablespace test2 drop datafile '/u01/test01.dbf';

    Alter tablespace test2 dropdatafile '/u01/test01.dbf'

    ERROR at line 1:        删除表空间中第一个数据文件报错,不能进行

    ORA-03263:cannot drop the first file of tablespace TEST2

    SQL>alter database ora10 datafile     '/u01/test01.dbf'offlinedrop;

    SQL>createtablemytest(inumber)tablespacetest2;

    将第一个数据文件离线,再在表空间中建立测试表,则表将被保存在余下的两个数据文件中

    SQL>select

    substr(owner,1,3),substr(segment_name,1,13),substr(file_id,1,10)

    from dba_extents

    where segment_name= 'MYTEST';

    SUBSTR SUBSTR(SEGMENT_NAME,1,13)     SUBSTR(FILE_ID,1,10)

    ----------------------------------------------------------------------

    SYS     MYTEST                           7

    SQL>select substr(file_name,1,15),file_id from dba_data_files where file_id= '7';

    SUBSTR(FILE_NAME,1,15)               FILE_ID

    --------------------------------------------------------------

    /u01/test02.dbf                         7

    查看测试表保存在哪个数据文件中,查到该数据文件号再根据文件号查数据文件名

    SQL>alter tablespace test2 drop datafile'/u01/test02.dbf';

    Alter tablespace test2 drop datafile'/u01/test02.dbf'

    ERROR at line 1:

    ORA-03262:the file is non-empty

    删除表空间中已分配了空间的数据文件 (非空)报错,不能进行。

    SQL>alter tablespace test2 drop datafile '/u01/test03.dbf';

    Tablespace altered.

    删除表空间中未分配了空间的数据文件 (为空),允许进行。;

    相关文章 [上一篇] oracle物理结构(一)--控制文件
    010-56426307(59426319)
    CUUG热门培训课程
    Oracle DBA就业培训
    CUUG名师
    网络课程
    技术沙龙
    最新动态

    总机:(010)-56426307,59426319 QQ讨论群:243729577 182441349 邮箱:yuezt@cuug.com
    通信地址:北京市海淀区紫竹院路88号紫竹花园D座703(CUUG)邮政编码:100089 
    中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
    京ICP备11008061号