1、Oracle数据库管理之管理表空间和数据文件Oracle数据库管理之管理表空间和数据文件 一、Oracle引入逻辑结构 Oracle数据库管理系统没有直接地操作数据文件,而是引入了一组逻辑结构。如图1所示。 图1图1的虚线左边为逻辑结构,右边为物理结构,在Oracle数据库中,逻辑结构为Oracle引入的结构,而物理结构为操作系统所拥有的结构,这样做增加了Oracle的可移植性。在该图中,圆角形方框为实体,实线表示关系,单线表示一的关系,三条线(鹰爪)表示多的关系,于是可以得到:1、每个数据库是由一个或多个表空间所组成(至少一个)。2、每个表空间中可以存放有零个或多个段。3、每个段是由一个或多
2、个区段所组成。4、每个区段是由一个或多个连续的Oracle数据块所组成。5、每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。6、每个操作系统数据文件是由一个或多个区段所组成。7、每个操作系统数据文件是由一个或多个操作系统数据块所组成。二、表空间和数据文件之间的关系及表空间的分类 Oracle将数据逻辑地存放在表空间,而物理地存放在数据文件里。表空间可以被进一步划分成一些更小的逻辑储存单位。在一个Oracle数据库中,每个数据文件只属于一个表空间和一个数据库。在一个Oracle数据库中一般有两类表空间,分别是系统表空间和非系统表空间。系统表空间是与数据库一起建立的,在系统表空间中
3、存有数据字典、系统还原(回滚)段。非系统表空间可以由数据库管理员创建,储存一些单独的段,包括用户的数据段、索引段、还原段和临时段等。三、创建表空间语法 CREATE TEMPORARY | UNDOTABLESPACE 表空间名 DATAFILE 子句 MINIMUM EXTENT 正整数 K | M BLOCKSIZE 正整数 K ONLINE | OFFLINE LOGGING | NOLOGGING DEFAULT STORAGE存储子句 EXTENT MANAGEMENT DICTIONARY | LOCAL AUTOALLOCATE | UNIFORM SIZE正整数 K | M S
4、EGMENT SPACE MANAGEMENT AUTO | MANUAL; TEMPORARY | UNDOTEMPORARY表示创建临时表空间,UNDO表示创建回滚表空间,如未使用表示创建永久表空间。 DATAFILE 子句指定与表空间相关联的数据文件的位置、名称和大小。语法如下: DATAFILE |TEMPFILE 文件名 SIZE K | M REUSE AUTOEXTENT OFF | ON NEXT 正整数 K | M MAXSIZE UNLIMITED | 正整数 K | M SQL create tablespace mytbs01datafile D:appStudento
5、radatamytbs01.dbf size 5mSQLcreate tablespace mytbs02 datafile D:appStudentoradatamytbs02_1.dbf size 5m, D:appStudentoradatamytbs02_2.dbf size 5m autoallocate; 临时表空间主要用途是在数据库进行排序运算、管理索引、访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理。当临时表空间不足时,表现为运算速度异常的慢。 最好为每个数据库用户都指定一个公用的临时表空间,如果不指定,这些临时数据就都会放在SYSTEM表空间中,从而产生大量
6、的碎片。 创建临时表空间,不能使用非标准数据块,另临时表空间不能存放永久对象。临时表空间具有以下特征: 临时数据文件不能置为只读 临时数据文件不能重命名 监时数据文件的日志方式总是NOLOGGING 创建一个本地管理的临时表空间TEMPTBS create temporary tablespace temptbs tempfile E:appZYproduct10.2.0orcltemp01.ora size 50M autoextend on next 5M maxsize unlimited extent management local; 把临时数据放在TEMP临时表空间 alter d
7、atabase default temporary tablespace temptbs; 查看临时文件信息 select file#, status, bytes, name from v$tempfile; 创建回滚表空间UNDOTBS create undo tablespace undotbs datafile E:appZYproduct10.2.0orcl undo01.ora size 40M ; 创建undo表空间时不能指定统一区大小的选项(uniform),否则出错。 把回滚数据放在undotbs1回滚表空间 alter system set undo_management=
8、auto scope=spfile; alter system set undo_tablespace= undotbs scope=spfile;创建表空间的条件 1.具有create tablespace的权限,DBA角色具有该权限,sysdba,sysoper 2.创建的是bigfiel ,还是smallifle 超过T 级别应考虑bigfile 3.新建的表空间的I/O,是否会导致磁盘I/O不够用 4.datafile后跟的路径应该具备写的权限 临时表空间扩容: -(1)重置临时文件大小 alter database tempfile /opt/oracle/oradata/orcl/
9、t2.dbf resize 150m; -(2)让临时文件能自动扩展 alter database tempfile /opt/oracle/oradata/orcl/t2.dbf autoextend on next 10m maxsize 50m; -(3)增加临时文件 alter tablespace t2 add tempfile /disk8/oracle/t2b.dbf size 50m; -查看临时文件 select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 SIZE(MB) from dba_temp_files; -默认临时表空间:
10、select * from database_properties; -修改默认临时表空间: ALTER DATABASE DEFAULT TEMPORARY TABLESPACE T2; 默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排 序区 默认临时表空间有一定的限制: 默认临时表空间不能删除 默认临时表空间不能脱机 获得创建表空间的语句: SELECT dbms_metadata.get_ddl(TABLESPACE,SYSTEM) FROM dual; -查看缺省是BIGFILE 还是SMALLFILE,当缺省为SMALLFILE,创建表空
11、间不指定表空间类型则为SMALLFILE 建议创建表空间时最好带上BIGFILE | SMALLFILE参数,以免参数设置导致创建了不合理的表空间 注意: 大表文件(bigfile)最大可以存放个T的容量。头文件的大小达到了Gblock,普通的头文件大小为M-block。 create bigfile tablespace datafile .; 好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。 bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。四、表空间的状态属性 离线(Offlin
12、e)状态表空间不可用。任何保存在该表空间中的数据库对象将不可存取。具有Normal、 Temporary、 Immediate和For Recovery四种模式。 在线(Online)状态用户可以访问其中的数据。 只读(Read-Only)状态表空间中的表只能读,不能更新。 读写(Read-Write)状态表空间能正常使用的状态。五、表空间状态设置 把表空间users以Temporary方式置于离线状态 alter tablespace users offline temporary; 把表空间users置于在线状态 alter tablespace users online; 把表空间use
13、rs置于只读状态 alter tablespace users read only; 把表空间users置于读写状态 alter tablespace users read write ;六、表空间的管理方式 字典管理:oracle 8i(不包括i),只存在一种表空间的管理模式,即字典管理表空间(DMT) DMT是指oracle的空间分配或回收是通过数据库中的数据字典表来记录和管理的 用于管理的两个数据字典表分别是:UET$(used extents)和FET$(freeextents) 其工作方式是:当建立一个新的段或者段在表空间时,oracle通过一系列的SQL语句来完成这个工作 且和前面
14、的两个字典表有关,在繁忙的系统中会造成竞争和等待(另一个DMT会带来的问题是空间碎片) 本地管理(LMT): 在i的R2版本后成了默认的选项 LMT在表空间的数据文件头部加入了一个位图区域,在其中记录每个extent的使用状况 当extent被使用或者被释放,oracle会更新头部的记录来反映这个变化,不产生回滚信息 因为仅仅操作数据文件头部的几个数据块,不用操作数据字典,LMT比DMT要快,尤其是在繁忙的时候更明显七、查询表空间信息 查询表空间的基本信息 SQLselect tablespace_name, contents, status from dba_tablespaces; 查询表空间的默认存储参数SQLselect tablespace_name, initial_extent, next_extent, extent_management from dba_tablespaces; 查询表空间中数据文件的信息 SQL select tablespace_name, file_name , bytes/(1024*1024) MB from dba_data_files; 查询表空间中空闲空间大小 SQLselect tablespace_name, sum(bytes/(1024*1024) free_MB fro
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1