




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第7章章 表空间与数据文件管理表空间与数据文件管理 内容提要n表空间的创建与管理维护表空间的创建与管理维护n一个oracle数据库是大量数据的集合,这些数据物理上存储于一个个数据文件中,而逻辑上却存储于一个个的表空间中。由此可见,表空间与数据文件之间有着非常紧密的联系,有着明确的对应关系,两者只是从不同角度看到的但却是同一个数据库的不同的组成部分。表空间是oracle数据库的逻辑构成,数据文件则是oracle数据库的物理组成。n作为dba,在需要的时候应该创建出更多的表空间,以分离不同类型的数据,比如,如果将表数据与索引数据存储在不同的表空间将有利于性能的提高。另外,随着数据的不断增长,表空
2、间的空闲空间会慢慢变少,这将要求:dba要对表空问的空间使用情况进行经常性监控,发现空间不足时及时进行扩展。7.1 表空间n oracle数据库通过表空间来组织数据库数据。一个数据库逻辑上由一个或多个表空间组成,一个表空间由一或多个段组成,一个段由一或多个区组成,一个区由多个连续的数据库块组成。n 而表空间物理上是由一个或多个数据文件组成的,并且一个数据文件只能属于一个表空间。表空间的空间大小是所有从属于它的数据文件大小的总和。如果一个表空问的空间不够用,可以通过添加数据文件的办法来增加表空问的大小。一旦数据文件加入到某个表空间之后,就不能从该表空间中删除该数据文件了。tablespaceda
3、tabase blocksextent84ksegment112kdatabasedatafilen数据库中的对象如表、索引及其数据必须存储于表空间中。而且表空间上数据的可用性是可以控制的。如果允许用户或应用程序访问,那么该表空间必须要处于联机状态(online),脱机(offline)状态下的表空间,其数据是不可用的。system表空间必须联机。n oracle根据区的管理方式,将表空间分为字典管理(dictionary)和本地管理(local)的表空间两种。如果将表空间中区的使用与空闲信息记录在数据字典中,就称为字典管理的表空间。如果区的使用与空闲信息是记录在了表空问对应的每个数据文件内的
4、位图中,则称为本地管理的表空间。n 但是从0racle9i r2开始,字典管理方式已经废弃。因为与字典管理方式相比,本地管n理的表空问具有明显优点:一方面,由于本地管理表空间的“自由空间”信息没有被记录n到数据字典,所以分配和释放区避免了访问数据字典,从而降低了在数据字典上的冲突;n另外,本地管理表空间会自动跟踪并合并相邻空闲空问,而字典管理表空间则可能需要手工合并空间碎片。7.2创建表空间n 当建立数据库时会自动建立system表空间,该表空间用于存放数据字典对象。尽管尽管system表空间也可以存放用表空间也可以存放用户数据,但户数据,但oracle建议用户数据应存放建议用户数据应存放在另
5、外的表空问中。在另外的表空问中。n 因此,建立数据库之后,dba应该建立其他表空间,以存放不同类型的数据。 n1.命令常用选项n 建立表空间的用户需具有create tablespace系统权限,使用create tablespace命令建立。该命令的常用格式如下:n create tablespace tablespace_namen datafile pathsize nk| mn ,pathsize nk|m,.n online l offlinen extent management dictionary |n local autoallocate |uniformsize nk l
6、mn (1)tablespace name:为表空间定义唯一的名字。n (2)datafile必须指定,列出表空间对应的每一个物理文件的信息,包括文件名称、路径以及大小。n (3)online:联机,表示表空间创建后立即可以使用;offline脱机,表空间创建后不能使用。默认值为online。n (4)extent management:指定表空间是字典管理的还是本地管理的,从oracle9i开始,默认为本地管理。如果是本地管理的表空间,则还可以继续指定区的大小情况:autoallocate表示由系统管理,用户无法指定区大小,这是默认设置;uniform表示区使用统一大小,大小由size指定,
7、默认size则大小为1mb。n 2.创建表空间示例n 以下举例说明各种表空间的创建方法与命令。n 【例7-1】 建立本地管理表空间test,文件位于d磁盘当前目录下,名字为test01.dbf,n200mb大小。n sqlcreate tablespace testn datafile。d:test01.dbf。size 200mn extent management local;n 最后一行的extent management local也可以省略,因为默认就是本地管理的。n【例7.2】建立本地管理表空间edu,其大小为1.5gb。假设使用2个数据文件edu01.dbfn与edu02.dbf
8、,分别位于d、e磁盘的子目录xxw下,区尺寸由oracle自动分配。n sqlcreate tablespace edun datafile d:xxwedu01.dbf size 1000m,n e:xxwedu02.dbf size 500mn extent management local autoallocate;n【例7-3】 建立本地管理表空间index_tbs,用于存放索引数据。其包含1个数据文件nindex01.dbf,区尺寸指定为统一大小128kb。n sqlcreate tablespace index_tbsn datafileindex01.dbf size 100mn
9、 extent management local uniform size 128k;n 【例7.4】 建立临时表空间tmp_tbs。临时表空间主要用来提高排序操作。nsqlcreate temporary tablespace tmp_tbs tempfile tmp.dbf size 300m;n使用如下的命令可以改变数据库的默认临时表空间:nsqlalter database default temporary tablespace tmp_tbs;n 【例7.5】 建立undo表空间und001。撤销表空间必须是本地管理的且不能指定区大小,区由系统管理。nsqlcreate undo
10、tablespace und001n datafile e:oracleoradatastudentund001.dbfsize 50m extent management local autoallocate;n 撤销表空间用于存放undo数据(也称为回退数据),它用于确保数据的一致性。当执行dml操作(insert、update、delete等)时,事务操作前的数据被称为undo记录,被存放于undo表空间中。当该事务结束时,undo数据才被删除。n 一个oracle数据库可以包含多个undo表空间,但同一时刻一个实例只能使用一个undo表空间。初始化参数undo_tablespace用于
11、指定实例所要使用的undo表空间,使用如下的命令可以启用新的undo表空间:n sqlalter system set undo_tablespace=und00 1;n 【例7.6】 创建字典管理表空间userdata,仅包含一个数据文件,大小100mb。因为从oracle9i开始,默认会创建本地管理表空间,因此在创建命令中必须用extent management dictionary指明是字典管理的。nsqlcreate tablespace userdatan datafilee:oracleoradatauserdata01.dbfsize 100m extent management
12、 dictionary;n注意,创建字典管理表空间命令只能在oracle 9.0.1.1.1或更低版本中执行。n3.查看表空间与数据文件信息 .n(1)使用如下命令可以获得所有表空间的名字列表。n sqlselect tablespace_name from dba_tablespaces;或n sqlselect name from v$tablespace;n(2)如果需要查询表空间edu对应的数据文件,应该使用dba_data_files数据字典。n sqlselect file name from dba_data_filesn where tablespace_name=edu;n
13、dba_data_files返回结果将不包括临时表空间的数据文件,临时文件信息只能从dba_tempfiles中查询得到,如下所示:n sqlselect file_name from dba_temp_files;n (3)查看各表空问的区管理方式是本地管理还是字典管理。n sqlselect tablespace_name,extent_management from dba_tablespaces;n (4)查看本地管理的表空间的区分配类型。system表示由系统管理,uniform表示指定区为统一大小。nsqlselect tablespace_name,allocation_type
14、n from dba_tablespacesn where extent_management=local;7.3表空间维护n在数据库使用过程中,有时候需要对表空间进行一些修改。比如出现了某种故障需要使表空间脱机,表空间存放的是一些历史数据禁止对其更改,表空间所在的磁盘损坏需要改变其物理位置,表空间的可用空间太少等,这些情况出现时,管理人员就需要进行相应的维护操作。7.3.1 改变表空间状态n1.使表空间联机或脱机 当建立表空间时,其默认状态为online。如果要对表空间执行恢复操作,往往需要将其改为offline脱机状态。nsqlalter tablespace edu offline; 恢
15、复完成后再将其联机:nsqlalter tablespace edu online; 由于表空间物理上由一个或多个数据文件组成,所以在将表空间脱机后,该表空间的 所有数据文件也会自动脱机。而将数据文件联机后,其所属的表空间并不会自动联机。 也可以使某个数据文件脱机不可用,命令为:n sqlalter database datafile d:xxwedu01.dbf offline;n 如下命令将一个数据文件进行联机:n sqlalter database datafile d:xxwedu01.dbf online;n 2.使表空间只读或可读写 按默认选项新建的表空间是处于联机状态的,此时用户
16、不仅可以做select查询操作,也可以对该表空间进行更改操作。但是根据维护的需要,有时会限制用户对某个表空间的访问,比如只允许查询,禁止修改。这样就涉及到表空间的只读或可读写状态的改变。n sqlalter tablespace edu read only;n sqlalter tablespace edu read write ;n 3.查看表空间状态n 通过如下命令可以了解每个表空间及其状态信息。status值可能为read only(联机但只读)、online(联机且可读写)、offline(脱机)。n sqlselect tablespace_name,status from dba_
17、tablespaces:n 7.3.2 监控表空间使用n为了掌握表空间的空问使用情况,便于在空间不够的情况下及时扩展,作为dba必须随时监控表空间,尤其是数据量增长比较迅速的表空间。n 表空间大小是其所包含的每一个数据文件大小的和。通过如下命令从dba_data-files数据字典中可以计算出每个表空间的总的大小:n sqlselect tablespace_name,sum(bytes)10241024 total mbn from dba_data_filesn group by tablespace_name;n 以上命令中,sum(bytes)10241024表达式用于将空间大小换算成
18、以mb为单位。n而数据字典dba_free_space可以反映每个表空间的空闲情况,如下命令所示:n sqlselect tablespace_name,sum(bytes)10241024 free mbn from dba_free_space group by tablespace_name;n n事实上,dba更习惯于直接看到每个表空间的空闲百分比,此时需要结合dba_data_illes与dba_free_space作连接查询,命令如下:n sqlselect b.tablespace_nametablespace”,n sum(b.bytes)10241024 total_mb”,
19、n sum(a.bytes)10241024 free_mb”,n round(sum(a-bytes)sum(b.bytes)*i00,1) ”freetotal”n from dba_free_space a,dba_data_files bn where a.file_id=b.file_idn group by b.tablespace name;7.3.3 改变表空间大小n 从图7.1看到,users表空间数据己满,仅空闲了0.2。导致用户插入数据时总是出现错误,但是可以查询该表数据。解决的办法是扩展该表空间的尺寸。n 通常可以采用两种办法予以扩展。 (1)更改现有数据文件的大小,无
20、论是自动还是手动。 (2)向表空间内添加数据文件。 n1.更改现有数据文件的大小n (1)现有数据文件允许自动扩展。dba可以为每个数据文件设置是否允许自动扩展。如果允许自动扩展,则当数据库数据占满了数据文件的所有空间,并且该数据文件不能容纳新数据时,系统会自动扩展该数据文件。n 查询dba_data_files数据字典可以了解某个数据文件的自动扩展选项是否允许:n sqlselect file_name,autoextensiblen from dba_data_filesn where tablespace_name=users; 显示结果中,autoextensible列的值如果为yes
21、,表示允许自动扩展,为no表示禁止自动扩展。使用alter database datafile命令,可以随时更改一个文件的自动扩展设置。例如:nsqlalter database datafile e:oracleoradatastudentusers01.dbf autoextend on next 10m maxsize 500m; 命令中通过autoextend on允许users01.dbf文件自动扩展,next指定扩展尺寸,maxsize指定数据文件的最大长度,若没有最大限制则设置为unlimited。如果文件现有大小为455mb,允许自动扩展之后则系统会根据需要来自动增大文件大小,
22、一次增加10mb,文件最大不超过500mb。以后任何时候可以在alter database datafile命令中用autoextend off选项关闭自动扩展功能。 实际上,在创建表空问时就可以对数据文件指定自动扩展,例如:n sqlcreate tablespace userdata02n datafile userdata02.dbf。 size 5m autoextend on next 2m;n(2)现有数据文件手工重置大小。尽管指定自动扩展选项,可以使得数据文件在数据充满的情况下自动扩展,但这会导致系统性能的下降。如果需要扩展的空间大小能大致估计出来,也可以重新指定文件的大小。例如
23、,users01.dbf文件现在大小455mb,现n在需要增加一大批数据,这批数据大致需要200mb空间,那么可以直接指定该文件大小为700mb。n sqlalter database datafile-e:oracleoradatastudentusers01.dbf resize 700m;n 将文件一次性扩充,然后再增加数据。值得注意的是,使用resize子句也可以缩减数据文件尺寸,但是,缩减后的大小应能容纳已有的数据库对象,否则会出错。n 2.添加新数据文件n 通过向表空间内添加新的数据文件,同样可以增加表空间。例如,users表空间需要扩充200mb的空间,但是原有数据文件所在的磁盘
24、e所剩空间已经不足200mb,这时无论是打开自动扩展功能还是手i增大,都无法扩充,只能用增加数据文件的方法,从其他n磁盘来分配空间。添加命令如下:n sqlalter tablespace usersn add datafile f:studentusers02.dbf size 200m;n n如果,担心200mb空间可能也不是很充裕,此时在添加时,也可以同时启用自动扩展选项,如:n sqlalter tablespace usersn add datafile f: studentusers02.dbfsize 200m autoextend on next 1 0m;n 添加数据文件的方
25、法不仅可以扩展表空间的大小,而且也可以分布表空问上数据对象(表、索引等)的数据,平衡io,提高系统性能。 随着数据量的增加,可能需要新增磁盘,此时需要将部分数据文件迁移到新增的硬盘上。或者某个磁盘被损坏,该磁盘上的数据文件必须迁移到其他位置。n 如果要迁移的是非system表空问的数据文件,遵照尽可能少地影响用户的原则,那n么就可以在数据库打开的情况下进行迁移。但是如果要迁移system表空间的数据文件,由于该表空间不可能脱机,因此只能关闭数据库进行移动。n 1.对非system表空间的数据文件进行移动n 移动时必须先将表空间脱机,然后使用操作系统命令把与表空间相应的数据文件复制到新位置,此时
26、也可以对文件重命名,在将表空间联机之前必须将位置更改的信息通知给控制文件。n 以users01.dbf为例,移动的具体步骤如下。n (1)使表空间脱机。nsqlalter tablespace users offline;n(2)使用操作系统命令以移动或者复制文件。nsqlhost copy e:oracleoradatastudentusers01dbfn f:studentusers01.dbf;n(3)执行alter tablespace rename datafile命令,通知控制文件。nsqlalter tablespace users rename datafilen e:orac
27、le0radatastudentusers01.dbf。n to tf.studentusers01.dbf;n(4)使表空间联机。n sqlalter tablespace users onlinen(5)必要时使用操作系统命令删除原文件。n 通过以上步骤,实现了将文件users01.dbf从磁盘e到磁盘f的位置移动。n 2.对system表空间的数据文件进行移动n 因为system表空间无法脱机,因此system表空间内的数据文件,必须使用如下方法进行移动。但是这种方法其实可以用来移动任何类型的数据文件以及联机日志文件。n 移动无法脱机的表空间内的文件,如system01.dbf,具体步骤
28、如下。n (1)关闭数据库。nsqlshutdown immediaten(2)使用操作系统命令移动文件。nsqlhost copy e:oracleoradatastudentsystem01dbfn f:studentsystem01.dbf;n(3)装载(m0unt)数据库。nsqlstartup mountn(4)执行alter database rename file命令,通知控制文件。nsqlalter database rename filen e.0racleoradatastudentsystem01.dbfn to f.studentsystem01.dbf;n(5)打开数
29、据库。nsqlalter database open;7.4删除表空间n当表空间损坏无法被恢复时,或者当表空间不再需要时,就可以删除该表空间了。删除表空间通常由dba或者具有系统权限droptablespace的用户来完成。n 删除表空间的命令语法如下:n drop tablespace tablespace_namen including contents and datafiles cascade constraintsn 其中n (1)including contents:如果表空间包含有数据库对象则必须带有该选项。 n(2)and datafiles:删除表空间通常只是从控制文件中逻辑
30、删除了表空间信息,而其数据文件还需要使用操作系统命令手工删除。若带上该选项,则同时删除表空间对应的操作系统文件。n (3)cascade constraints:删除参照完整性约束。如果两个表空间之间存在完整性约束关系则必须带有该选项。n 例如,如下命令将删除表空间tt,但是由于表空间内存有数据,因此提示了错误信息:nsqldrop tablespace tt;n drop tablespace ttn error位于第l行:n ora一01549:表空间非空,请使用including contents选项n使用如下命令,不仅能删除表空间tt,同时也删除了该表空间相关联的操作系统文件:nsqldrop tablespace tt includ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国工程机械金融租赁行业市场发展分析及前景趋势与投资研究报告
- 2025-2030中国工业高效液相色谱(HPLC)行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国工业微波加热设备行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国工业三角带行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国山梨糖醇单硬脂酸酯(CAS-1338-41-6)行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国富马酸卡培他滨行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国家畜饲料行业发展分析及投资风险预测研究报告
- 2025-2030中国室内真空吸尘器行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国宠物美容行业发展分析及发展趋势预测报告
- 2025-2030中国定型喷雾行业发展现状与未来趋势研究研究报告
- 趣味数学-高斯求和 完整版课件
- 花卉生产设施课件
- 高中体育与健康人教版高中必修全一册(新课标)第十章体操类运动-技巧模块计划
- 云南省主要矿产资源
- 临床试验疑难问题解答
- 中国传媒大学-导演手册-课件
- 健康状况询问与接种禁忌核查表
- 新电务系统作业标准汇编一1现场信号工
- 光伏发电工程施工组织设计施工工程光伏发电工程光伏发电施工组织设计
- 磁共振基础知识及3.0T磁共振1
- 酒店概论教案
评论
0/150
提交评论