1、说明在该表空间中所有数据的变化不都写入重做日志文件中,nologging只影响一些DML和DDL命令.Default 存储子句:说明所有在该表空间中所创建的对象的默认存储参数.Offline:说明该表空间在创建后立即被置为脱机,即不能使用.在数据字典管理的表空间中所有的EXTENTS的管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。在这种表空间的管理方法中可以按您的需要修改存储参数,所以存储管理比较灵活但系统的效率较低。如果使用这种表空间的管理方法,有时需要合并碎片。本地管理的表空间其空闲EXTENTS是在表空间中管理的,它是使用位图来记录空闲EXTENT
2、S,位图中的每一位对应于一块或一组块,而每位的值批示空闲或分配。当一个EXTENT被分配或释放时,ORACLE服务器就会修改位图中相应位的值以反映该EXTENT的新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。在本地管理的表空间中无法按实际需要来随意修改存储参数,所以存储管理不像数据字典(系统)管理的表空间那样灵活,但系统的效率很高。在这里为了给大家演示表空间的创建及其管理,我们假设我们在做一个探月工程的项目需要为这个项目创建自己的表空间和其他相应的辅助表空间,以及模拟如何管
3、理我们这个项目这涉及到的表空间和它的相关结构。好,让我们开始吧,大家跟着我,我带你们去探月。一创建数据字典管理的表空间:SQL connect / as sysdba已连接。 create tablespace moon 2 datafile e:disk2moonmoon01.dbf size 50 m, 3 disk4moonmoon02.dbf size 50 m 4 minimum extent 50k extent management dictionary 5 default storage (initial 50k next 50k maxextents 100 pctincre
4、ase 0);create tablespace moon*第 1 行出现错误:ORA-12913: 无法创建字典管理的表空间二创建本地管理的表空间让我们为探月工程创建一个存储工程所需要数据的表空间MOON。 4 extent management local 5 uniform size 1m;表空间已创建。接下来还要为这个项目创建一个名为MOON_INDEX的索引表空间。该表空间只基于一个数据文件,其文件名为e:disk6moonmoon_index.dbf,其大小为50M(在实际当中可能是几百M)。为了方便磁盘存储的管理,我们研究决定使用本地管理的表空间(EXTENT MANAGEMEN
5、T LOCAL)。让我们来创建这个表空间 create tablespace moon_indexdisk6moonmoon_index.dbf 3 size 50 M 5 uniform size 1M;我们在创建完表空间后要养成良好习惯利用dba_tablespaces视图去查看一下自己创建的表空间是否满足要求: select tablespace_name,block_size,extent_management,segment_space_management 2 from dba_tablespaces 3 where tablespace_name like moon%;未选定行
6、/这里没有信息并非是我们的表空间没创建成功而是表空间名以大写存储MOON%TABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN- - - -MOON 8192 LOCAL MANUALMOON_INDEX 8192 LOCAL MANUAL接着,再让我们查看一下表空间的参数配置: select tablespace_name,initial_extent,next_extent, 2 max_extents,pct_increase,min_extlen 3 from dba_tablespaces 4 where tablespace_name like
7、TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT MAX_EXTENTS PCT_INCREASE MIN_EXTLEN- - - - - -MOON 1048576 1048576 2147483645 0 1048576MOON_INDEX 1048576 1048576 2147483645 0 1048576再让我们查看一下表空间中的数据文件是否已经成功创建,因为表空间是由多数据文件构成如果表空间中没有数据文件那表空间也就不存在了: select file_id,file_name,tablespace_name,autoextensible 2 f
8、rom dba_data_files 3 order by file_id; FILE_ID FILE_NAME TABLESPACE_NAME AUT- - - - 1 E:ORACLEPRODUCT10.1.0ORADA SYSTEM YES TATESTSYSTEM01.DBF 2 E:ORACLEPRODUCT10.1.0ORADA UNDOTBS1 YES TATESTUNDOTBS01.DBF 3 E:ORACLEPRODUCT10.1.0ORADA SYSAUX YES TATESTSYSAUX01.DBF 4 E:ORACLEPRODUCT10.1.0ORADA USERS Y
9、ES TATESTUSERS01.DBF 5 E:DISK2MOONMOON01.DBF MOON NO 6 E:DISK4MOONMOON02.DBF MOON NO 7 E:DISK6MOONMOON_INDEX.DBF MOON_INDEX NO已选择7行。在为我们宏大探月项目创建完成前两个所需的表空间去,这只是我们浩大工程冰山一角,还需要我们做更多的工作,再让我们为探月工程创建一个很重要的表空间“还原表空间”:在数据库初始创建时库中有一个叫UNDOTBS1的还原表空间,但对于我们这个项目建议大家为我们这个项目单独创建一个“moon_undo”的表空间,它也是基于操作系统本地管理的数据文
10、件名为e:disk7moonmoon_undo.dbf,其大小为20m: create undo tablespace moon_undodisk7moonmoon_undo.dbf 3 size 20 m;在创建完成后一定要查看一下,保证你创建的表空间是满足要求的:MOON_UNDO 8192 LOCAL MANUAL然后再确认一下,我们所创建表空间的类型: select tablespace_name,status,contentsTABLESPACE_NAME STATUS CONTENTS- - -MOON ONLINE PERMANENTMOON_INDEX ONLINE PERMA
11、NENTMOON_UNDO ONLINE UNDO好了,已经做了一些准备工作了,我们在一步一步的接近我们的目标,但是不要高兴太早,因为我们才刚刚开始,大家是否还记得临时表空间,还记得它的作用吗?如果忘记了希望你回去注意复习,古人云:“温故而知新”,对于我们学习oracle来说这是非常重要,毕竟它的中文名称叫“甲古文”。在我们这个项目中一定会存储大量数据,在我们实施工程时也一定会用到这些数据,那么这么大量的数据在查看时会非常困难,那么我们可以借助order by 和group by 子句来进行查询以帮助我们把数据排序分组以便我们能够更快的分析数据。那么基于以上项目需要,我们需要创建一个临时表空间
12、“MOON_TEMP“,临时表空间可以由多个用户共享,在其中不能包含任何永久对象。临时表空间中的排序段是在实例启动后当有第一个排离操作时创建的,排序段在需要时可通过分配EXTENTS来扩展,并一直可以扩展到大于或等于在该实例上所运行的所有排序活动的总和。当创建临时表空间时,必须使用标准数据块。建议大家用本地管理: create temporary tablespace moon_temp 2 tempfile disk8moonmoon_temp.dbf 3 size 10 m 5 uniform size 2 m;做项目态度一定要严谨,保持良好习惯我们来查看一下:MOON_TEMP ONLI
13、NE TEMPORARY select tablespace_name,block_size,extent_management, 2 segment_space_management,min_extlenTABLESPACE_NAME BLOCK_SIZE EXTENT_MAN SEGMEN MIN_EXTLEN- - - - -MOON 8192 LOCAL MANUAL 1048576MOON_INDEX 8192 LOCAL MANUAL 1048576MOON_TEMP 8192 LOCAL MANUAL 2097152MOON_UNDO 8192 LOCAL MANUAL 6553
14、6注:本地管理的临时表空间是基于临时数据文件(TEMP FILES)的,这些文件与普通的数据文件非常相似,但它们还具有如下的特性:1 临时数据文件的状态不能置为只读。2 不能将临时数据文件重新命名。3 临时数据文件总是置为NOLOGGING状态。4 不能使用ALTER DATABASE命令创建临时数据文件。5 以只读方式运行的数据库需要临时数据文件。6 介质恢复是不能恢复临时数据文件的。7 另外,为了优化某一临时表空间中排序的效率,应该将UNIFORM SIZE 设为SORT_AREA_SIZE(PGA中排序区的大小)参数的整数倍。那么还需要注意的一点是,只有我们把MOON_TEMP表空间设置
15、为“默认临时表空间”我们的探月工程项目才能使用这个MOON_TEMP表空间作为为我们工程服务的临时表空间。那么接下教会大家如何将普通的临时表空间改为默认临时表空间,这个过程非常简单,但它的意义非凡:首先,让我们来查看一下当前的默认临是表空间是“谁”, col property_value for a30 col description for a50 select * from database_properties 2 where property_name like DEFAULT%PROPERTY_NAME PROPERTY_VALUE DESCRIPTION- - -DEFAULT_T
16、EMP_TABLESPACE TEMP Name of default temporary tablespaceDEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespaceDEFAULT_TBS_TYPE SMALLFILE Default tablespace type我们看到当前数据库的默认临时表空间是TEMP,现在我们可以把默认临时表空间改为我们探月工程所需要的MOON_TEMP,为我们的工程服务。 alter database default temporary tablespace moon_temp;
17、数据库已更改。再让我们来查询一下是不是修改了默认表空间:DEFAULT_TEMP_TABLESPACE MOON_TEMP Name of default temporary tablespace在默认临时表空间上有一些限制:首先,默认临时表空间不能被删除,除非有一个新的可以使用的默认临时表空间。也就是必须先使用ALTER DATABASE将一个新的临时表空间设置为默认临时表空间,之后才能删除旧的(默认)临时表空间。使用旧的(默认)临时表空间的用户被自动地赋予新的默认临时表空间。因为默认临时表空间必须是临时表空间所以不能将默认临时表空间改为一个永久表空间,也不能将默认临时表空间设置为脱机。从显
18、示结果中我们看到确定被我们修改了,做到这大家是不是有一点小小的成就感呢,不要洋洋得意啊,后面还有很多工作要做呢,我们需要努力吧!当表空间需要维护或其中数据需要保护时,我们该怎么办?请大家想想!答:可以把表空间设置为脱机。一个表空间的正常状态是联机状态,此时数据库用户可以访问该表空间中的数据。然而,有时数据库管理员需要将某一表空间设置为脱机状态,以进行数据库的维护其维护工作包括:1在数据库处于打开状态下移动数据文件。2在数据库处于打开状态下恢复一个表空间或一个数据文件。3执行对表空间的脱机备份(虽然对表空间可以进行联机备份)。4使数据库的一部分不可以被访问,而其他的部分可以被正常地访问。当一个表
19、空间被设置为脱机状态时,该表空间上的数据是不可以访问的。如果用户试图访问该表空间上的数据就会收到出错信息。当一个表空间被设置为脱机状态时或重新被设置为联机状态时,oracle会把这一事件记录在数据字典和控制文件中,也会记录在报警文件中。如果当数据库被关闭时,某一表空间为脱机状态,那么当数据库被加载(MOUNT)和重新打开时该表空间仍保持为脱机状态。并不是所有的表空间都可以被设置为脱机状态,以下的表空间不能被设置为脱机状态:1 系统(SYSTEM)表空间2 上面有活动的还原/回滚段的表空间。3 默认临时表空间。如何将表空间进行脱机/联机: alter tablespace moon offlin
20、e;表空间已更改。让我们来查看一下:MOON OFFLINE PERMANENT select file#,name,status 2 from v$datafile 3 ; FILE# NAME STATUS- - -ORACLEPRODUCT10.1.0ORADATATESTSYSTEM01.DBF SYSTEMORACLEPRODUCT10.1.0ORADATATESTUNDOTBS01.DB ONLINE FORACLEPRODUCT10.1.0ORADATATESTSYSAUX01.DBF ONLINEORACLEPRODUCT10.1.0ORADATATESTUSERS01.DBF ONLINEDISK2MOONMOON01.DBF OFFLINEDISK4MOONMOON02.DBF OFFLINEDISK6MOONMOON_INDEX.DBF ONLINE 8 E:DISK7MOONMOON_UNDO.DBF ONLINE已选择8行。当需要向MOON表空间写入新的重要数据时,我们需要把这个表空间重新联机: alter tablespace moon online;ORACLEPR
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1