ITPub博客

首页 > 数据库 > Oracle > oracle 关于-数据文件

oracle 关于-数据文件

原创 Oracle 作者:邱东阳 时间:2014-04-02 09:03:48 0 删除 编辑

数据文件

 

1.一个数据文件仅仅关系一个数据库,Oracle数据文件与数据库之间对应联系是一对一联系,当然反过数据库与数据文件是一对多联系.

2.数据文件能够积极伸展,当数据存储必需更多存储空间时候,即便存储数据的数据随存储数据量增大,数据文件也能够积极增长,以中意数据存储必需.

3.一个或多个数据文件构成一个逻辑单元,称之为表空间.Oracle数据文件与表空间之间对应联系也是一对一联系,当然反过表空间与数据文件对应联系是一对多的联系.

 主要分类:

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

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

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

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

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

表空间

我们知道schema就是用户中包含对象,对象中存放着表、视图、包、函数、同义词等。

对象的逻辑结构存放在表空间中,表空间是由一个或多个数据文件构成。对象的内容存放在数据文件中。

那么表空间自己的结构:

逻辑结构是:先由表空间分配段空间,由段空间分配区,区下面才是内存块。

物理结构就是:由逻辑结构区空间下的内存块构成操作系统块,在由OS块构成数据文件。逻辑结构中的区空间直接决定物理物件中的区空间大小。

 

通常一个数据库由多个表空间构成,每个表空间存储不同特性的数据

一个正常运行的数据库通常包括下面这些表空间:

--system  存放数据字典信息,是数据库必须的表空间,也是创建数据库时第一个被创建的表空间

--sysaux   存放除了数据字典之外的一些系统管理辅助信息,是10g新增加的表空间,用于分担系统表空间的负荷

--undo    存放自动管理的回滚段信息,提供事务的回滚功能

--temp    存放用户排序时的临时数据

--index    存放用户表上的索引信息

--其他    存放各种不同的用户表数据

除了systemsysaux表空间必须在创建数据库的时候创建外,其他表空间都可以在数据库生成后由DBA创建并进行管理,通常对系统表空间的管理任务较少。

创建表空间的一些定义

登录的用户必须具有create tablespace权限(Dba rolesysdbasysoper,这写权限也都是可以的)

确认创建smallfile 还是 bigfile (一般超过T级别大小的文件推荐使用bigfile

确认新建数据文件所在磁盘的IO是否饱和。

 

查看创建表空间定义大小文件默认值

SQL> desc database_properties

Name                                      Null?    Type

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

 PROPERTY_NAME                             NOT NULL VARCHAR2(30)

 PROPERTY_VALUE                                     VARCHAR2(4000)

 DESCRIPTION                                        VARCHAR2(4000)

 

SQL>

SQL> select property_name,property_value from database_properties where property_name like '%TBS%';

 

PROPERTY_NAME

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

PROPERTY_VALUE

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

DEFAULT_TBS_TYPE

SMALLFILE  

SQL>

修改默认值

 

SQL> alter database set default bigfile tablespace;

 

Database altered.

 

SQL> select property_name,property_value from database_properties where property_name like '%TBS%';

 

PROPERTY_NAME

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

PROPERTY_VALUE

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

DEFAULT_TBS_TYPE

BIGFILE

 

 

SQL>

 

创建表空间语句的一些定义

 

SQL> create smallfile|bigfile tablespace <name> datafile <path> size <> logging|nologging  ….

具体的可以查看官方文档

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7003.htm#SQLRF01403

 

其中需要注意的是 datafile(数据文件路径与名字) 中路径要具备oracle写的权限

 

 

表空间的空间管理

 

 

oacle8i开始,空间管理方法有以下两种:

数据字典管理表空间:(现在10G以后已经不支持数据字典管理了)

     --是以前一直被沿用的空间管理方法,从9i开始逐渐被淘汰

          --使用数据字典表Uet$Fet$描述和管理表空间中空闲空间和使用空间

          --当空间被分配或者释放时,相应的数据字典信息被更新

本地管理表空间:

     --直接在各个表空间上管理空闲空间和使用空间

          --使用存储在表空间上的Bitmap标示空闲空间和使用空间的信息

          --Bitmap中的每位描述一个block或者一组block的状态

          --从9i开始成为默认的表空间属性

 

查看表空间使用哪种方式管理

SQL> select tablespace_name,extent_management from dba_tablespaces;

 

TABLESPACE_NAME                EXTENT_MAN

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

SYSTEM                         LOCAL

UNDOTBS1                       LOCAL

SYSAUX                         LOCAL

TEMP                           LOCAL

USERS                          LOCAL

 

SQL>

 

表空间的状态

 

Read Write – 读写

 

Read Only—  只读

Offline—   脱机

Online--  联机

 

 

查看所有表空间的状态

SQL> select b.tablespace_name,v.file#,v.status,v.enabled from dba_data_files d,v$datafile v where d.file_id=v.file#;

 

 

TABLESPACE_NAME                     FILE# STATUS  ENABLED

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

SYSTEM                                  1 SYSTEM  READ WRITE

UNDOTBS1                                2 ONLINE  READ WRITE

SYSAUX                                  3 ONLINE  READ WRITE

USERS                                   4 ONLINE  READ WRITE

设置成只读

SQL> alter database users  read only;

 

 

对于几个重要的表空间

 

System      必须online      必须read write

Sysaux       可以offline     不能 read only

Undo        不能offline     不能 read only

 

改变表空间名称

 

open状态下将qqq1表空间改名为qqq2

SQL> alter tablespace qqq1 rename to qqq2;

 

下列表空间是不能被改名的

System  sysaux

下面的最好不要去改

database_properties视图中DEFAULT_TEMP_TABLESPACEDEFAULT_PERMANENT_TABLESPACE定义的表空间

undo_tablespace参数定义的表空间。

 

 

改变表空间大小

方法:

1、启动数据文件大小的自动扩展

2、手工改变数据文件大小

3、为表空间增加数据文件

 

方法1:自动扩展

 

 

查看表空间是否自动扩展

SQL> select tablespace_name,file_name,autoextensible from dba_data_files;

 

TABLESPACE_NAME                FILE_NAME                                    AUT

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

SYSTEM                         +DATA/fengzi/datafile/system.277.842187103          YES

 

UNDOTBS1                       +DATA/fengzi/datafile/undotbs1.278.842187181       YES

 

SYSAUX                         +DATA/fengzi/datafile/sysaux.279.842187235          YES

 

USERS                          +DATA/fengzi/datafile/users.281.842187289           NO

              

SQL> 

修改为自动扩展

SQL> alter tablespace users autoextend on;

alter tablespace users autoextend on

*

ERROR at line 1:

ORA-32773: operation not supported for smallfile tablespace USERS

 小文件是不能进行自动扩展的

 

直接将数据文件改为自动扩展

SQL> alter database datafile '+DATA/fengzi/datafile/users.281.842187289' autoextend on next 5M maxsize 1T;

Database altered.

SQL>

方法2:修改数据文件大小(不推荐使用)

 

首先要将自动扩展关闭

SQL> alter database datafile '+DATA/fengzi/datafile/users.281.842187289' autoextend off;

Database altered.

SQL>

查看数据文件大小

SQL>  select file_name,bytes/1024/1024 "size" from dba_data_files;

FILE_NAME                                      size

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

+DATA/fengzi/datafile/system.277.842187103           480

+DATA/fengzi/datafile/undotbs1.278.842187181         200

+DATA/fengzi/datafile/sysaux.279.842187235           260

+DATA/fengzi/datafile/users.281.842187289             25

 

SQL>

查看文件号

SQL> select name,file# from v$datafile;

 

NAME                                   FILE#

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

+DATA/fengzi/datafile/system.277.842187103     1

+DATA/fengzi/datafile/undotbs1.278.842187181   2

+DATA/fengzi/datafile/sysaux.279.842187235     3

+DATA/fengzi/datafile/users.281.842187289      4

 

修改数据文件大小

 

SQL> alter database datafile 4  resize 52M;

 

Database altered.

 

SQL>

 

方法3:增加数据文件

 

为表空间添加一个数据文件并开启自动扩展

SQL> alter tablespace users add datafile '+data/fengzi/datafile/users2.dbf' size 10m autoextend on;

 

对于表空间中的数据文件的重命名和重定位

前提条件

1、数据库必须在mount或者open状态

2、在归档模式下

3、要修改的数据文件可以被offline open状态下)

 

 

SQL> select tablespace_name,file_name from dba_data_files;

 

TABLESPACE_NAME                FILE_NAME                                    

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

SYSTEM                         +DATA/fengzi/datafile/system.277.842187103          

 

UNDOTBS1                       +DATA/fengzi/datafile/undotbs1.278.842187181       

 

SYSAUX                         +DATA/fengzi/datafile/sysaux.279.842187235          

 

USERS                          +DATA/fengzi/datafile/users.281.842187289           

              

SQL>

   将想要重命名的文件脱机      

SQL> alter tablespace users offline;

 

Tablespace altered.

 

SQL> 

 使用ASMCMD工具重命名脱机文件

[oracle@dongyang ~]$ echo $ORACLE_SID

+ASM

[oracle@dongyang ~]$ asmcmd

ASMCMD> cd data/fengzi/datafile

ASMCMD> mkalias USERS.281.842187289 users2.dbf

使用SQL重命名指定文件

SQL> alter database rename file '+DATA/fengzi/datafile/users.281.842187289' to '+DATA/fengzi/datafile/users2.dbf';

Database altered.

SQL>

使表空间中数据文件联机

SQL> alter tablespace users online; (有时候要求介质恢复,recover tablespace users; 就可以)

SQL> select tablespace_name,file_name from dba_data_files;

 

TABLESPACE_NAME                FILE_NAME                                    

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

SYSTEM                         +DATA/fengzi/datafile/system.277.842187103          

 

UNDOTBS1                       +DATA/fengzi/datafile/undotbs1.278.842187181       

 

SYSAUX                         +DATA/fengzi/datafile/sysaux.279.842187235          

 

USERS                          +DATA/fengzi/datafile/users2.dbf          

              

SQL>

 

 

文件系统:

SQL> alter tablespace users offline;

SQL> ho  cp  /u01/app/oracle/oradata/fengzi/users1.dbf  /u01/app/oracle/oradata/fengzi/ttt.dbf

SQL> alter database rename file '/u01/app/oracle/oradata/fengzi/users1.dbf ' to '/u01/app/oracle/oradata/fengzi/ttt.dbf ';

SQL> alter tablespace users online;

 

删除表空间

 

drop tablespace tablespace_name  including contents and datafiles;

 

including contents:用于删除表空间同时删除表空间上的所有段

including contents and datafiles删除表空间、数据文件以及表空间上段的信息,同时删除OS中的数据文件

获取表空间及数据文件信息

相关视图

表空间信息:

 DBA_TABLESPACES

V$TABLESPACE

数据文件信息:

     DBA_DATA_FILES

          V$DATAFILE

临时数据文件信息:

     DBA_TEMP_FILES

          V$TEMPFILE

临时表空间组:

          DBA_TABLESPACE_GROUPS

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29532781/viewspace-1134344/,如需转载,请注明出处,否则将追究法律责任。

下一篇: oracle OMF的使用
请登录后发表评论 登录
全部评论

注册时间:2014-03-11

  • 博文量
    38
  • 访问量
    173489