Oracle数据库中表空间管理

2018-12-15 10:33李凡
卷宗 2018年30期
关键词:数据文件

李凡

摘 要:为了管理数据文件,Oracle提出了表空间的概念。本论文通过先引入数据库表逻辑结构和物理结构的比对,及两者之间的关系,再讲解如何使用DBA熟练操纵表空间管理,最后对创建表空间的方法及修改表空间的状态与权限进行了说明,并对数据文件的管理趋势进行了展望。

关键词:表空间;DBA;数据文件

1 逻辑结构和物理结构

Oracle数据库具有跨平台特性,在一个数据库平台上开发的数据库可以不加修改地移植到另一个操作系统平台上。这样Oracle就不会直接操作底层操作系统的数据文件,而是提供一个中间层,这个中间层就是Oracle的逻辑结构,它与操作系统的平台无关,而中间层到数据文件的映射通过DBMS来完成。逻辑结构从上到下是包含关系,也是一对多的关系,即一个数据库有一个或多个表空间,一个表空间由多个操作系统数据库块组成。而物理结构中表空间有多个数据文件,一个数据文件物理上由操作系统块组成。

2 表空间的分类

Oracle数据库把表空间分为两类:系统表空间和非系统表空间。系统表空间是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数据库必须的表空间。

非系统表空间是用户根据业务需求而创建的表空间,通过创建用户自定义的表空间,使得数据库的管理更加灵活、方便。

3 表空间的创建

在一个生产数据库中,往往存在大量的表空间,根据业务需要将用户表或其他对象保存在表空间中,以实例说明。创建一个表空间,表空间名为user_data,该表空间用来存储用户表,表空间就包含一个数据文件,大小100M,文件名为d:\userdata\userdata1.dbf。程序代码如下:SQL> create tablespace user_data

2 datafile ‘d:\userdata\userdata1.dbf size 100 M

这样就完成了表空间的创建。

4 临时表空间的创建

在Oracle数据库中临时表空间用于用户的特定会话活动。如用户会话的排序操作,排序的中间结果需要存储在某个区域,这个区域就是临时表空间,临时表空间的排序段是在实例启动后有第一个排序操作时创建的。临时表空间是使用当前数据库的多个用户共享使用的,临时表空间中的区段在需要时按照创建临时表空间时的参数或管理方式进行扩展。下面用程序代码形式展示临时表空间的创建过程。

代码如下:SQL> Create temporary tablespace user_temp

2 tempfile ‘d:\usertemp\user_temp.dbf size 20 M

3 extent management lacal

4 uniform size 1M;

这样就完成了临时表空间的创建。

5 大文件表空间的创建

大文件表空间由一个大文件组成,而不是由多个传统的小文件组成,随着数据库的升级,使得Oracle有能力创建和管理大文件。使用大文件表空间在数据库开启时和与DBWR进程的性能相比会有显著的提高,从而简化了数据文件的管理。创建大文件表空间,须定义初始区段,然后使用CREATE TABLESPACE BIGFILE 子句创建大文件空间,程序代码如下:

SQL> Create bigfile tablespace bigfilebs

2 datafile ‘d:\bigfile_tbs\bfile_tbs01.dbf size 2G

这样大文件表空间就创建完成。

6 表空间的管理

表空间的管理主要是它的状态管理,根据状态可分为脱机管理与只读管理。脱机管理的表空间无法实现数据访问,此时可以完成一些如脱机备份等操作,处于只读状态的表空间,用户或应用程序可以访问这些表空间,但是无法更改表空间中的数据,如果一个表空间中的数据不会变化,属于静态数据,这样就可以把相应表空间改为只读,只读表空间不產生变化的数据。当一个表空间处于脱机状态,Oracle不允许执行任何的SQL语句,用户试图访问存储在该表空间中的对象会报错。当表空间脱机联机时,这个事件会记录在数据字典和控制文件中。只读管理就是把表空间置为只读状态,这样的表空间中的数据只能被用户读取,而不能做任何修改或插入操作,在数据库设计时,如果有的数据是静态数据,则可以将存储这些数据的表放在一个表空间中,只读管理的表空间不被重做日志保护,减少重做日志文件的

大小。

另外还有表空间的内容管理,它涉及到表空间的大小、删除表空间以及修改表空间的存储参数。其中修改表空间的存储参数只对数据字典的表空间有效,在删除表空间后,该数据库中不再有该表空间的任何数据,数据库不再管理这些数据文件,但只读状态的表空间和表空间的区段仍然可以顺利删除。

具体来说,修改表空间有四种方法:第一种方法是使用AUTOEXTEND ON字句使得表空间在需要时可以自动扩展;第二种方法是在创建表空间后使用ALTER DATABASE DATAFILE修改不能自动扩展的表空间的数据文件;第三种方法是在表空间中增加数据文件;第四种方法是重新设置表空间中某个数据文件的大小。

7 数据表文件的管理

数据文件逻辑地存放在表空间中,管理数据文件涉及修改数据文件的大小、迁移数据文件等,其中涉及迁移数据文件的部分最为关键。迁移数据文件是指把当前表空间中的数据文件迁移到其他磁盘空间,可以想象在生产数据库中,当一个表空间所在的磁盘满时,为了使数据库系统正常运行,必须将其中的数据文件迁移到其他空闲磁盘。迁移数据文件主要分为两种,即迁移系统表空间中的文件和迁移非系统表空间中的文件,使用ALTER DATABASE RENAME FILE指令迁移数据文件,打开数据库根据MOUNT状态获知数据库做了哪些数据迁移和数据迁移地点及在哪里打开过数据文件。而对于非系统表空间的迁移,需要没有活跃的还原段、临时段、排序段等,这样非系统表空间才可以迁移。

8 数据字典的管理

数据字典管理的方式是将每个数据字典表空间的使用情况记录在数据字典的表中,当有数据变动时,就隐含使用SQL语句对表记录进行修改,由于变动频繁会引起数据的不稳定,效率也低下,所以对该管理进行改进,以本地管理的方式结合数据字典进行数据的变动,就是以位图的方式表示数据块,通过操作系统对位图进行置换来进行数据的修改,这样提高了效率,解决了数据字典管理带来的空闲块多等问题,瓶颈问题得到了很好的解决。

9 小结

表空间管理是Oracle数据库中非常重要的概念。表空间是一个逻辑概念,它和段、区段和数据库块组成了数据库的逻辑结构,而数据文件和操作系统块组成了数据库的物理结构,采用逻辑结构和物理结构的模式是Oracle为了满足其在不同操作系统之间能够方便地移植而设计的。本论文讲解了表空间的逻辑结构和物理结构之间的关系,从而理解Oracle如何操作数据文件以及操作系统如何管理和操作数据文件。Oracle把表空间的管理方式分为数据字典管理的表空间和本地管理的表空间,而本地管理的表空间是Oracle推荐的方式。表空间的维护是DBA的一项重要任务,同时对表数据文件的修改也是建立在数据字典管理有效性上的,对表空间的修改删除要谨慎对待,因为一旦删除数据很难恢复。

参考文献

[1]王丽.Oracle数据库表空间的维护[J].科技与企业,2016,2.

[2]刘年国,王芬.Oracle数据库表空间的检测[J].数字技术与应用,2016,9.

[3]刘畅.Oracle数据库的性能优化[J].江苏科技信息,2016,1.

猜你喜欢
数据文件
通过数据文件共享方式开发汽轮机CAD应用软件
基于表空间和数据文件探讨MIS中数据库架构设计
数据文件恢复专题问答
数据文件安全管控技术的研究与实现
SQL数据文件恢复工具
地面气象观测软件数据质量控制
Tekla Structure数据文件交互格式分析
浅谈路线工程纵横断面图的绘制方法
气象数据文件异机备份程序浅析