数据文件
1.一个数据文件仅仅关系一个数据库,Oracle数据文件与数据库之间对应联系是一对一联系,当然反过数据库与数据文件是一对多联系.
2.数据文件能够积极伸展,当数据存储必需更多存储空间时候,即便存储数据的数据随存储数据量增大,数据文件也能够积极增长,以中意数据存储必需.
3.一个或多个数据文件构成一个逻辑单元,称之为表空间.Oracle数据文件与表空间之间对应联系也是一对一联系,当然反过表空间与数据文件对应联系是一对多的联系.
主要分类:
system01.dbf:记录系统运行信息,包含所有数据库字典,PL/SQL程序代码及其他系统信息
undotbs01.dbf:存放回退信息,即DML操作后的旧数据信息
sysaux01.dbf:system文件的辅助文件,存放支持oracle系统活动的多种工具如logminer
users01.dbf:新建用户未指定存储空间是,默认数据存放在该文件中
example01.dbf:存放示例数据信息。
表空间
我们知道schema就是用户中包含对象,对象中存放着表、视图、包、函数、同义词等。
对象的逻辑结构存放在表空间中,表空间是由一个或多个数据文件构成。对象的内容存放在数据文件中。
那么表空间自己的结构:
逻辑结构是:先由表空间分配段空间,由段空间分配区,区下面才是内存块。
物理结构就是:由逻辑结构区空间下的内存块构成操作系统块,在由OS块构成数据文件。逻辑结构中的区空间直接决定物理物件中的区空间大小。
通常一个数据库由多个表空间构成,每个表空间存储不同特性的数据
一个正常运行的数据库通常包括下面这些表空间:
--system 存放数据字典信息,是数据库必须的表空间,也是创建数据库时第一个被创建的表空间
--sysaux 存放除了数据字典之外的一些系统管理辅助信息,是10g新增加的表空间,用于分担系统表空间的负荷
--undo 存放自动管理的回滚段信息,提供事务的回滚功能
--temp 存放用户排序时的临时数据
--index 存放用户表上的索引信息
--其他 存放各种不同的用户表数据
除了system和sysaux表空间必须在创建数据库的时候创建外,其他表空间都可以在数据库生成后由DBA创建并进行管理,通常对系统表空间的管理任务较少。
创建表空间的一些定义
登录的用户必须具有create tablespace权限(Dba role、sysdba、sysoper,这写权限也都是可以的)
确认创建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_TABLESPACE与DEFAULT_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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29532781/viewspace-1134344/