Oracle中的表空间-阿里云开发者社区

开发者社区> 徐胖子> 正文

Oracle中的表空间

简介:   表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。    SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。
+关注继续查看

 

表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。
  

SQL Server数据库与Oracle数据库之间最大的区别要属表空间设计。Oracle数据库开创性地提出了表空间的设计理念,这为Oracle数据库的高性能做出了不可磨灭的贡献。可以这么说,Oracle中很多优化都是基于表空间的设计理念而实现的。 

 

 

典型应用一:控制用户所占用的表空间配额

  在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬盘空间耗竭。所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。为了达到这个目的,我们就可以通过表空间来实现。
  我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属于这个表空间。如此的话,这个用户的存储容量,就受到这个表空间大小的限制。

 

典型应用二:控制数据库所占用的磁盘空间
  有时候,在Oracle数据库服务器中,可能运行的不止一个服务。除了数据库服务器外,可能还有邮件服务器等应用系统服务器。为此,就需要先对Oracle数据库的磁盘空间作个规划,否则,当多个应用程序服务所占用的磁盘空间都无限增加时,最后可能导致各个服务都因为硬盘空间的耗竭而停止。所以,在同一台服务器上使用多个应用程序服务,我们往往需要先给他们进行磁盘空间的规划和分配。各个服务都不能够超过我们分配给他的最大限额,或者超过后及时的提醒我们。只有这样,才能够避免因为磁盘空间的耗竭而导致各种应用服务的崩溃。

 

典型应用三:灵活放置表空间,提高数据库的输入输出性能
  数据库管理员还可以将不同类型的数据放置到不同的表空间中,这样可以明显提高数据库输入输出性能,有利于数据的备份与恢复等管理工作。因为我们数据库管理员在备份或者恢复数据的时候,可以按表空间来备份数据。如在设计一个大型的分销系统后台数据库的时候,我们可以按省份建立表空间。与浙江省相关的数据文件放置在浙江省的表空间中,北京发生业务记录,则记录在北京这个表空间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表空间即可。很明显,这样设计,当某个表空间中的数据出现错误需要恢复的时候,可以避免对其他表空间的影响。
  另外,还可以对表空间进行独立备份。当数据库容量比较大的时候,若一下子对整个数据库进行备份,显然会占用比较多的时间。虽然说Oracle数据库支持热备份,但是在备份期间,会占用比较多的系统资源,从而造成数据库性能的下降。为此,当数据库容量比较大的时候,我们就需要进行设置多个表空间,然后规划各个表空间的备份时间,从而可以提高整个数据库的备份效率,降低备份对于数据库正常运行的影响。

 

典型应用四:大表的排序操作
  我们都知道,当表中的记录比较多的时候,对他们进行查询,速度会比较慢。第一次查询成功后,若再对其进行第二次重新排序,仍然需要这么多的时间。为此,我们在数据库设计的时候,针对这种容量比较大的表对象,往往把它放在一个独立的表空间,以提高数据库的性能。

 

典型应用五:日志文件与数据文件分开放,提高数据库安全性
  默认情况下,日志文件与数据文件存放在同一表空间。但是,这对于数据库安全方面来说,不是很好。所以,我们在数据库设计的过程中,往往喜欢把日志文件,特别是重做日志文件,放在一个独立的表空间中,然后把它存放在另外一块硬盘上。如此的话,当存放数据文件的硬盘出现故障时,能够马上通过存放在另一个表空间的重做日志文件,对数据库进行修复,以减少企业因为数据丢失所带来的损失。

 

 

下面来看一个实例

 

第1步 创建临时表空间 
create temporary tablespace user_temp 
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local;  
 
第2步  创建数据表空间
create tablespace test_data 
logging 
datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf'
size 50m 
autoextend on 
next 50m maxsize 20480m 
extent management local;  
 
第3步 创建用户并指定表空间
create user username identified by password 
default tablespace user_data 
temporary tablespace user_temp;  
 

第4步 给用户授予权限
grant connect,resource,dba to username;

 

 

原帖地址

http://baike.baidu.com/view/70152.htm

http://www.cnblogs.com/netsql/articles/1745978.html

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
为什么 OAuth 里除了 Access Token 之外,还需要 Refresh Token?
为什么 OAuth 里除了 Access Token 之外,还需要 Refresh Token?
4 0
ECS使用体验
在阿里云领取了一个服务器,分享一下使用体验
5 0
OAuth 2.0 协议学习笔记
OAuth 2.0 协议学习笔记
4 0
ECS使用心得体验
强烈的编程爱好让我在编程的道路上越走越远,也让我学到了非常多的知识,同时也发现,学得越多,自己不懂的就越多,只有不断的学习,才能让自己跟上时代发展的步伐。由于在学习过程中使用到了云服务器,然后通过学长学姐的推荐,我了解到了“飞天加速计划•高校学生在家实践”活动,也因此第一次使用了ECS,由此产生了一些使用心得。
5 0
Chrome View Source Code 那些事
Chrome View Source Code 那些事
5 0
关于对ESC的体验结果
我是一名大二的学生,因着对云服务器有着浓厚的,之前使用过,听说阿里云这里的云服务器还是不错的,就想先申请免费使用两个月试一试。
5 0
Git教程5(bug分支和多人协作及标签管理)
在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。 比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下:
4 0
mysql执行计划explain属性解析
所谓执行计划就是看sql执行情况,有没有走索引啊之类的 很简单,在你的select语句前面加个EXPLAIN就行
3 0
微前端(Micro Frontend ) 落地实施的一些具体例子
微前端(Micro Frontend ) 落地实施的一些具体例子
3 0
清华AI研究院里程碑事件:成立「智能人机交互研究中心」,发布四大开放平台
昨日(5 月 21 日),清华大学「智能人机交互研究中心」成立仪式在清华大学李兆基科技大楼举行。这是继「知识智能研究中心」、「听觉智能研究中心」、「基础理论研究中心」后,清华大学 AI 研究院第四个研究中心。
5 0
+关注
515
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载