单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,管理表空间和数据文件,2024/11/15,1,数据存储,2024/11/15,2,表空间和数据文件,Oracle,存储数据逻辑上在表空间,物理上存储在数据文件中,.,表空间:,只能属于一个数据库,能存在一个或多个数据文件,被分成逻辑的单元,数据文件:,只能属于一个表空间和一个数据库,Database,Tablespace,Data files,2024/11/15,3,表空间类型,系统表空间,数据库创建的时候创建,存在数据字典,存在系统回滚段,非系统表空间,分隔不同的段,对用户对象限制使用空间,2024/11/15,4,Bigfile,talbespace,and,smallfile,talbespace,大文件表空间,(,bigfile,tablespaces,),Oracle Database,允许你创建大文件表空间,大文件表空间由单个文件组成,最大可以包含,4G(232),个,blocks.,通常的多文件表空间,数据文件不能如此之大,.,大文件表空间使得,Oracle,获得如下收益,:,显著的增强了,Oracle,数据库的存储容量,检查点的性能提升,对于,8k,的,blocks,最大数据文件可以达到,32T,;对于,32K,的,blocks,,最大数据文件可达,128T,缩减了超大型数据库的数据文件的数量,简化了管理,2024/11/15,5,Continue,Smallfile,tablespace,缺省的,Oracle,采用小文件表空间,更改缺省表空间模式,SQL SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES,2 WHERE PROPERTY_NAME=DEFAULT_TBS_TYPE;,PROPERTY_VALUE,-,SMALLFILE,SQL ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE;,Database altered.,2024/11/15,6,How to create it?,创建,bigfile,tablespace,缺省,LOCAL,和,ASSM,管理,对于,bigfile,普通表空间,只能为,LMT+ASSM,对于,UNDO,TEMP,SYSTEM,可以是,LMT+MANUAL,SQL create,bigfile,tablespace,bigtbs,2,datafile,/data1/oradata/systemfile/bigtbs.dbf size 50G;,Tablespace created.,SQL select TABLESPACE_NAME,EXTENT_MANAGEMENT,SEGMENT_SPACE_MANAGEMENT,2 from,dba_tablespaces,3 where,tablespace_name,=BIGTBS;,TABLESPACE_NAME EXTENT_MAN SEGMEN,-,BIGTBS LOCAL AUTO,2024/11/15,7,创建表空间,CREATE TABLESPACE userdata,DATAFILE/u01/oradata/userdata01.dbf SIZE 5M;,CREATE TABLESPACE,命令,2024/11/15,8,表空间的空间管理,(,区管理,),本地管理表空间,:,在表空间里面管理自由的范围.,Bitmap,用于记录自由的范围.,每位对应一个,block,或者一组,block.,位的值表明空闲或者被使用.,统一区大小,(,可考虑大,小表不同表空间,区大小不同,),数据字典管理表空间:,数据字典管理自由的分区.,当分区被分配或者释放的时候相应的表空间被更新.,Uet,$(,使用区,),Fet,$(,空闲区,),2024/11/15,9,本地管理表空间,减少在数据字典中的竞争,当空间分配或者释放的时候不产生回滚信息,不需要表空间空闲空间的合并,CREATE TABLESPACE userdata,DATAFILE/u01/oradata/userdata01.dbf SIZE 500M,EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;,2024/11/15,10,数据字典管理表空间,数据字典管理范围.,在表空间中的每个段都有一个不同的存储子句.,需要合并连续空闲区,.,DMT,技术已经被放弃,CREATE TABLESPACE userdata,DATAFILE/u01/oradata/userdata01.dbf,SIZE 500M EXTENT MANAGEMENT DICTIONARY,DEFAULT STORAGE,(initial 1M NEXT 1M PCTINCREASE 0);,2024/11/15,11,回滚表空间,用于存储回滚段,不能包含任何其他对象,区是本地管理的,CREATE UNDO TABLESPACE undo1,DATAFILE/u01/oradata/undo01.dbf SIZE 40M;,2024/11/15,12,临时表空间,用于排序操作,可以被多个用户共享,不能存在任何永久的对象,CREATE TEMPORARY TABLESPACE temp,TEMPFILE/u01/oradata/temp01.dbf SIZE 20M,EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;,2024/11/15,13,默认的临时表空间,指定一个数据库的默认临时表空间,消除使用系统表空间做数据排序,能用下列语句创建:,CREATE DATABASE,ALTER DATABASE,ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;,2024/11/15,14,创建一个默认的临时表空间,CREATE DATABASE DBA01,LOGFILE,GROUP 1(/$HOME/ORADATA/u01/redo01.log)SIZE 100M,GROUP 2(/$HOME/ORADATA/u02/redo02.log)SIZE 100M,MAXLOGFILES 5,MAXLOGMEMBERS 5,MAXLOGHISTORY 1,MAXDATAFILES 100,MAXINSTANCES 1,DATAFILE/$HOME/ORADATA/u01/system01.dbf SIZE 325M,UNDO TABLESPACE undotbs,DATAFILE/$HOME/ORADATA/u02/undotbs01.dbf SIZE 200,DEFAULT TEMPORARY TABLESPACE temp,TEMPFILE/$HOME/ORADATA/u03/temp01.dbf SIZE 4M,CHARACTER SET US7ASCII,2024/11/15,15,创建一个默认的临时表空间,在数据库创建后:,查询,DATABASE_PROPERTIES,可以找到默认的临时表空间,:,ALTER DATABASE,DEFAULT TEMPORARY TABLESPACE default_temp2;,SELECT*FROM DATABASE_PROPERTIES;,2024/11/15,16,默认临时表空间的限制,默认的临时表空间不能用于:,只能在创建一个新的默认临时表空间后原来的才可以删除,不能离线,修改为一个永久的表空间,2024/11/15,17,几点说明,(UNIX,下,),初始创建临时表空间时并不会真正分配空间,在随后的使用中开始分配,由于空间问题可能会导致潜在故障,2024/11/15,18,Oracle10g-The default tablespace,缺省固定及临时表空间,Oracle,提供用户配置的缺省表空间,一旦你设置了一个用户缺省表空间,那么所有的新用户如果不指定,其缺省表空间都会分配在这个表空间中,而不是,system,表空间,select,property_name,property_value,from,database_properties,where,property_name,like DEFAULT%;,DEFAULT_TEMP_TABLESPACETEMP,DEFAULT_PERMANENT_TABLESPACEUSERS,DEFAULT_TBS_TYPE SMALLFILE,2024/11/15,19,只读表空间,使用下列语句把表空间置为只读状态:,引起一个检查点,(,部分检查点,),数据只能被读取,表空间中的对象能被删除,ALTER TABLESPACE,userdata,READ ONLY;,2024/11/15,20,使一个表空间离线,表空间中的所有数据都不能被访问,有些表空间是不能被离线的:,系统表空间,存在激活的回滚段的表空间,默认的临时表空间,离线的语句:,联机的语句:,ALTER TABLESPACE userdata OFFLINE;,ALTER TABLESPACE userdata ONLINE;,2024/11/15,21,Oracle10g-Easy to rename a tablespace,Oracle,允许使用,rename,命令直接修改表空间名称,SQL alter tablespace test rename to itpub;,Tablespace altered.,2024/11/15,22,改变一个表空间大小,一个表空间可以使用以下方法改变大小:,改变数据文件的大小:,自动就使用,AUTOEXTEND,手工使用,ALTER DATABASE,命令,使用,ALTER TABLESPACE,命令增加一个数据文件,2024/11/15,23,启用数据文件的自动扩展,能够自动的扩展:,CREATE DATABASE,CREATE TABLESPACE,ALTER TABLESPACE ADD DATAFILE,例如:,查询,DBA_DATA_FILES,可以查看数据文件的自动扩展启用没有,.,CREATE TABLESPACE user_data,DATAFILE,/u01/oradata/userdata01.dbf SIZE 200M,AUTOEXTEND ON NEXT 10M MAXSIZE 500M;,2024/11/15,24,手工改变数据文件的大小,手工使用,ALTER DATABASE,增大或减小一个数据文件的大小,.,增大数据文件的空间不用增加更多的数据文件.,手工改变数据文件的大小是回收没用的空间.,例如:,ALTER DATABASE,DATAFILE/u03/oradata/userdata02.dbf,RESIZE 200M;,2024/11/15,25,增加表空间的数据文件,增大表空间大小通过增加数据文件,ADD DATAFILE,语句用于增加数据文件,例如:,ALTER TABLESPACE user_data,ADD DATAFILE/u01/oradata/userdata03.dbf,SIZE 200M;,2024/11/15,26,移动数据文件的方法,ALTER TABLESPACE,表空间必须离线.,OS COPY,REMANE,ONLINE,目标数据文件必须存在.,ALTER TABLESPACE userdata RENAME,DATAFILE/u01/oradata/userdata01.dbf,TO/u02/oradata/userdata01.dbf;,2024/11/15,27,移动数据文件的方法,ALTER DATABASE,数据库必须,(,需要,),在,MOUNT,状态.,目标数据文件必须存在.,ALTER DATABASE RENAME,FILE