管理表空间和数据文件

来源:互联网 发布:剑网三最丑捏脸数据 编辑:程序博客网 时间:2024/05/18 03:29
==============================================
概述:
数据文件是组成数据库的物理数据结构
而表空间是组成数据库的逻辑数据结构
-------------------------------------
1、表空间
表空间是一种逻辑空间,他的内部又可以分成其他逻辑类:
-------------------------------------
段(segment):某种特定逻辑结构所站用的空间就是段。
<段分类>:
表段
索引段
临时段
回滚段
段不可以跨表空间,一个段只能属于一个表空间
但一个段不一定在一个数据文件中
分区表实际上是多个段的概念
-------------------------------------
分区(extent)
是一个空间分配单位
oracle系统按照分区来分配存储空间,分区是由块组成。
-------------------------------------
块(block):
使用和存储单位
oracle使用和存储的最终单位。分区的大小应该是块的倍数。
====================================================
2、数据文件
一个表空间可以由一个或多个物理文件组成,因为数据库是不可以直接管理存储空间的,他必须借助操作系统来管理。在操作系统层面上,数据库的存储空间就表现为一个一个的数据文件。
----------------------------------------------------------------
表空间分类
1、system tablespace
<用途>
系统表空间是在数据库建立的时候同时建立的
他包含数据字典,包还系统回滚段
2、非system tablespace
<用途>
用来分离段
使空间管理更容易
控制分配给用户的空间量
---------------------------------------------------------------
创建表空间语法:
SQL> create tablespace an datafile ’D:/oracle/oradata/an92/an1.dbf’ size 100m autoextend on next 100m maxsize 1024m;
表空间已创建。
创建字典管理段的表空间:
SQL> create tablespace an_d datafile ’D:/ORACLE/ORADATA/AN92/AN_d.DBF’
2 size 1m extent management dictionary
3 default storage(
4 initial 100k
5 next 100k
6 pctincrease 10);
<注意>:系统表空间如果是本地管理的话,其他表空间就不能为字典管理
创建本地管理段的表空间
SQL> create tablespace an_l
2 datafile ’D:/ORACLE/ORADATA/AN92/AN_l.DBF’ size 5m
3 extent management local
4 uniform size 1m;
表空间已创建。
创建本地管理自动分配段的表空间
SQL> create tablespace an_a
2 datafile ’D:/ORACLE/ORADATA/AN92/AN_a.dbf’ size 5m
3 extent management local autoallocate;
表空间已创建。
---------------------------------------------------------------
表空间管理:
1、字典管理:
默认
2、本地管理:
推荐
<优点>
减少对数据字典表的争用,分配或回收空间时不生成还原数据
不需要合并也就是没有碎片压缩的问题
-------------------------------------------------------------
使表空间脱机:
alter tablespace an offline;
使表空间联机:
alter tablespace an online;
<注意>
不可以脱机的表空间:
1、系统表空间
2、包含正在活动的回滚段的表空间
3、缺省的临时表空间
离线的目的:
修改物理数据文件名
对数据库做不完全恢复
---------------------------------------------------------------------
表空间或数据库可以设置为read only .设置为read only之后表空间只读,但数据对象依然可以被删除。
----------------------------------------------------------------
删除表空间:
drop tablespace xxxx including contents and datafiles;
----------------------------------------------------------------
通过以下查询可获取表空间和数据文件的信息:
表空间:DBA_TABLESPACES V$TABLESPACE
数据文件信息:DBA_DATA_FILESV$DATAFILE
临时文件信息:DBA_TEMP_FILESV$TEMPFILE
-------------------------------------------------------------------
alter database datafile ’D:/ORACLE/ORADATA/XUAN/USERS02.DBF’ resize xxxm;
手动设置数据文件的大小
------------------------------------------------------------------
设置默认临时表空间
alter database default temporary tablespace xxxx;
------------------------------------------------------------------
对表空间做的常用操作:
SQL> alter tablespace an offline;
表空间已更改。
SQL> alter tablespace an online;
表空间已更改。
SQL> alter tablespace an read only;
表空间已更改。
SQL> alter tablespace an read write;
表空间已更改。
<特殊>
表空间的更名:
10g
SQL> alter tablespace test rename to an;
表空间已更改。
9i
不支持
------------------------------------------------------------------
建立自动扩展表空间:
1、创建时指定
create tablespace an_ts1 datafile ’D:/oracle/oradata/anbs/an_ts1.dbf’ size 200m autoextend on next 10m maxsize 500m;
2、修改
SQL> alter database datafile ’D:/ORACLE/ORADATA/AN92/AN2.DBF’ AUTOEXTEND on next 10m maxsize 1024m;
数据库已更改。
-----------------------------------------------------------------
重新定义表空间的大小,有两种方法
1、重新定义表空间大小
SQL> alter database datafile ’D:/ORACLE/ORADATA/AN92/AN1.DBF’ resize 200m;
数据库已更改。
2、为表空间添加数据文件
alter tablespace xxx add datafile ’xxxxx’ size 100m;
-----------------------------------------------------------------
查看数据文件和表空间的对应关系
SQL> select t1.name ,t2.name from v$tablespace t1,v$datafile t2
2 where t1.ts#=t2.ts#;
NAME NAME
------------------------------ -----------------------------
SYSTEM D:/ORACLE/ORADATA/AN92/SYSTEM01.DBF
UNDOTBS1 D:/ORACLE/ORADATA/AN92/UNDOTBS01.DBF
CWMLITE D:/ORACLE/ORADATA/AN92/CWMLITE01.DBF
DRSYS D:/ORACLE/ORADATA/AN92/DRSYS01.DBF
EXAMPLE D:/ORACLE/ORADATA/AN92/EXAMPLE01.DBF
INDX D:/ORACLE/ORADATA/AN92/INDX01.DBF
ODM D:/ORACLE/ORADATA/AN92/ODM01.DBF
TOOLS D:/ORACLE/ORADATA/AN92/TOOLS01.DBF
USERS D:/ORACLE/ORADATA/AN92/USERS01.DBF
XDB D:/ORACLE/ORADATA/AN92/XDB01.DBF
AN D:/ORACLE/ORADATA/AN92/AN.DBF
AN D:/ORACLE/ORADATA/AN92/AN2.DBF
----------------------------------------------
限定用户使用表空间的存储的量
<语法>
alter user username quota 10m on tablespacename;
SQL> alter user an quota 1024m on an;
用户已更改。
SQL> alter user an quota 0 on an;
用户已更改。
SQL> alter user an quota unlimited on an;
用户已更改。
----------------------------------------------
回滚表空间:
回滚段作用:
提供读一致性
提供回滚功能
记录数据改变旧值
循环使用
回滚表空间:
用来存储回滚段,他不能包含其他的数据库对象,主要用来存储数据改变时的旧值,其中的区要用本地管理,在使用语句建立回滚表空间的时候只能使用datafile和extent management两个子句,其他的子句都不能使用。
例:create undo tablespace xxxx datafile ’D:/ORACLE/ORADATA/XUAN/UNDOTBSxx.DBF’ size xxm;
回滚表空间不能建立普通数据对象
-----------------------------------------------------------------
临时表空间:
他用来支持排序
不能包含任何永久的对象
建议使用本地管理区
不能离线
不能只读
在临时表空间中没有永久性存储的数据,所以临时表中间是不记日志的,同时也不被控制文件控制。一旦临时表空间坏掉,只需要简单的删除再从新建立就可以。
例:create temporary tablespace xxxx tempfile ’d:/oracle/oradata/xuan/xxxxx.ora’ size xxm extent management local;
在创建用户的时候如果不指定临时表空间会使用系统的临时表空间
如果过多争用系统临时表空间的话会导致性能问题以及碎片
创建用户时指定临时表空间:(本地管理)
SQL> create user an_temp identified by an_temp
2 default tablespace an
3 temporary tablespace temp;
用户已创建
通过更改用户来设置临时表空间:
SQL> alter user an temporary tablespace temp;
用户已更改。
设置数据库默认的临时表空间
SQL> alter database default temporary tablespace temp;
-------------------------------------------------------------------

原创粉丝点击