240 likes | 333 Views
第六章 表空间与数据文件管理. 表空间就是一个或多个数据文件(物理文件)的集合(逻辑文件)。. 6.1 表空间与数据文件. 一个数据库的数据共同存储在数据文件里,数据文件建立在数据库的表空间里 。 使用如下命令查询表空间及其数据文件: select tablespace_name,file_name,bytes from dba_data_files;. 6.2 创建表空间. CREATE TABLESPACE tablespace_name DATAFILE '/path/filename' SIZE integer [K|M] REUSE
E N D
第六章 表空间与数据文件管理 表空间就是一个或多个数据文件(物理文件)的集合(逻辑文件)。
6.1 表空间与数据文件 • 一个数据库的数据共同存储在数据文件里,数据文件建立在数据库的表空间里 。 • 使用如下命令查询表空间及其数据文件: • select tablespace_name,file_name,bytes from dba_data_files;
6.2 创建表空间 CREATE TABLESPACE tablespace_name DATAFILE '/path/filename' SIZE integer [K|M] REUSE [,'/path/filename' SIZE integer [K|M] REUSE] [AUTOEXEND [ OFF | ON NEXT integer [ K | M ] ] [ MAXSIZE [ UNLIMITED | integer [ K | M ] ] ] ] [ MINIMUM EXTENT integer [ K | M ] ] [DEFAULT STORAGE storage ] [ ONLINE | OFFLINE ] [ LOGGING | NOLOGGING ] [ PERMANENT | TEMPORARY ] [EXTENT MAANGEMENT [ DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM SIZE integer [ K | M ] ] ] ]
6.2.1 创建字典管理类表空间 例1:创建一般的字典管理类表空间: CREATE TABLESPACE mytablespace DATAFILE /u02/Oracle/oradata/tab01.dnf ' size 100m DEFAULT STORAGE( initial 512k next 128k minextents 2 maxextents 999 pctincrease 0 );
6.2.1 创建字典管理类表空间 • 例2:创建一般的字典管理类表空间并使该表空间处于ONLINE: • CREATE TABLESPACE tabspace_2 • DATAFILE 'diska:tabspace_file2.dat' SIZE 20M • DEFAULT STORAGE (INITIAL 10K NEXT 50K • MINEXTENTS 1 MAXEXTENTS 999) • ONLINE;
6.2.2 创建本地管理表空间 • 使用位图来对表空间所对应的数据文件的自由空间和块的使用状态进行跟踪。位图中的每个位(bit)对应一个块或一组块。当分配一个扩展或释放一个扩展时,Oracle 就改变该位图的值来指示该块的状态。
6.2.2 创建本地管理表空间 • 可以在CREATE TABLESPACE语句中使用EXTENT MANAGEMENT LOCAL 来建立永久表空间。 • 可以在CREATE TEMPORARY TABLESPACE语句中使用EXTENT MANAGEMENT LOCAL 来建立临时表空间。
6.2.4 创建本地管理表空间 • 例1:假设数据库块为2K,则本地管理类表空间建立命令为: • CREATE TABLESPACE tbs_1 DATAFILE 'file_1.f' SIZE 10M • EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K; • 每个扩展都是128K,并且位图中的每个位描述64块(因为 128k/1块 = 128k/2k )。 • 例2:创建本地管理类表空间: • CREATE TABLESPACE tbs_2 DATAFILE '/u02/Oracle/oradata/tbs02.ora' SIZE 10M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
6.2.4 创建本地管理表空间 • 一般建议的应用系统建议不要创建为AUTOALLOCATE 或UNIFORM SIZE ; • 如果表空间将来要存储的对象类型不同,需要的空间也不同,则可以不仿采用AUTOALLOCATE • 如果对所要存放的对象的容量比较清楚,比如记录的长度固定等。则可以采用UNIFORM SIZE 来指定明确的大小。
6.2.5 创建临时表空间 • 临时表空间是Oracle系统用于排序的磁盘空间,一般是在排序时使用,使用完毕后可以释放的空间。因此称作临时表空间。下面语句可以引起排序: • ORDER BY • GROUP BY • SELECT DISTINCT • UNION • INTERSECT • MINUS • ANALYZE • CREATE INDEX • 连接两个没有索引的表。
6.2.5 创建临时表空间 使用CREATE TABLESPACE 语句创建表空间,然后该语句后加 TEMPORARY关键字来说明所创建的表空间是临时表空间 • 方法1、 • CREATE TABLESPACE fin_sort • DATAFILE '/u02/Oracle/oradata/sort1.dbf' SIZE 100M • DEFAULT STORAGE( INITIAL 5M NEXT 1M MINEXTENTS 1 PCTINCREASE 0) • TEMPORARY; • 方法2:可以将已经存在的表空间修改为临时表空间: • CREATE TABLESPACE Tab_sort TEMPORARY;
6.3.1管理SYSTEM表空间 • Oracle安装完成后,自动建立SYSTEM表空间; • 当数据库实例启动后,SYSTEM中是处于ONLINE; • SYSTEM表空间包含数据库系统的数据字典表; • 所有的PL/SQL程序部件(存储过程、函数、包及触发器)驻留在SYSTEM表空间里;
6.3.1管理SYSTEM表空间 • 虽然在安装完成SYSTEM表空间处于正常状态,但并不是不需要管理系统运行得很好了。其实,当系统安装完成后,管理员应该对SYSTEM表空间的存储参数进行调整,主要是调整NEXT值 • SQL>select segment_name,initial_extent,next_extent • from dba_segments • where segment_type='ROLLBACK‘ • SQL> alter tablespace system default storage( next 1m pctincrease 0); ;
6.3.2 使用多个表空间 • 一个很小的数据库可以只需要有SYSTEM表空间,但Oracle公司建议至少建立一个附加的表空间来存放用户数据,以便与系统数据字典分开,达到减少冲突等目的。
6.3.2 使用多个表空间 • 使用多个表空间有如下特点: • 控制数据库数据的磁盘空间分配; • 分配空间限额给用户; • 通过采用独立表空间的ONLINE或OFFLINE来控制数据的可用性; • 执行局部数据库备份与恢复; • 将用户的数据从系统表空间中分裂出来,以减少与Oracle系统的争用。 • 在不同磁盘上存储表空间的数据文件,以减少I/O争用。 • 为专门的用途建立专门的表空间,比如用频繁的大量更新、或作临时表空间用。 • 备份个别重要的表空间。
只有字典管理类表空间才能修改存储参数.本地管理的表空间更改。只有字典管理类表空间才能修改存储参数.本地管理的表空间更改。 • SQL> create tablespace user_data datafile • 'D:\ORACLE\ORADATA\ORA816\data01.dbf' size 5m • extent management local autoallocate; • 表空间已创建。 • SQL> alter tablespace user_data default storage(initial 128k next 64k pctincrease 0);