sql-表空间

表空间

编辑

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

Oracle数据库中至少存在一个表空间,即SYSTEM的表空间。

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

中文名
表空间
外文名
 tablespaces
软件类型
数据库
所属软件
Oracle数据库
优    势
表空间的设计理念
面向领域
服务器

目录

  1. 表空间的典型应用
  2. 建立表空间与建立用户的顺序关系

表空间的典型应用

编辑

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

在一些大型的数据库应用中,我们需要控制某个用户或者某一组用户其所占用的磁盘空间。这就好像在文件服务器中,需要为每个用户设置磁盘配额一样,以防止硬盘空间耗竭。所以,在数据库中,我们也需要限制用户所可以使用的磁盘空间大小。为了达到这个目的,我们就可以通过表空间来实现。

我们可以在Oracle数据库中,建立不同的表空间,为其设置最大的存储容量,然后把用户归属于这个表空间。如此的话,这个用户的存储容量,就受到这个表空间大小的限制。

典型应用二:控制数据库所占用的磁盘空间。

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

典型应用三:灵活放置表空间,提高数据库的输入输出性能。

数据库管理员还可以将不同类型的数据放置到不同的表空间中,这样可以明显提高数据库输入输出性能,有利于数据的备份与恢复等管理工作。因为我们数据库管理员在备份或者恢复数据的时候,可以按表空间来备份数据。如在设计一个大型的分销系统后台数据库的时候,我们可以按省份建立表空间。与浙江省相关的数据文件放置在浙江省的表空间中,北京发生业务记录,则记录在北京这个表空间中。如此,当浙江省的业务数据出现错误的时候,则直接还原浙江省的表空间即可。很明显,这样设计,当某个表空间中的数据出现错误需要恢复的时候,可以避免对其他表空间的影响。

另外,还可以对表空间进行独立备份。当数据库容量比较大的时候,若一下子对整个数据库进行备份,显然会占用比较多的时间。虽然说Oracle数据库支持热备份,但是在备份期间,会占用比较多的系统资源,从而造成数据库性能的下降。为此,当数据库容量比较大的时候,我们就需要进行设置多个表空间,然后规划各个表空间的备份时间,从而可以提高整个数据库的备份效率,降低备份对于数据库正常运行的影响。

典型应用四:大表的排序操作。

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

典型应用五:日志文件与数据文件分开放,提高数据库安全性。

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

当然,表空间的优势还不仅仅这些,企业对于数据库的性能要求越高,或者数据库容量越大,则表空间的优势就会越大。

建立表空间与建立用户的顺序关系

编辑

数据库设计的时候,我们建议数据库管理员按如下顺序设置表空间。

第一步:建立表空间。

在设计数据库的时候,首先需要设计表空间。我们需要考虑,是只建立一个表空间呢,还是需要建立多个表空间,以及各个表空间的存放位置、磁盘限额等等。

到底设计多少个表空间合理,没有统一的说法,这主要根据企业的实际需求去判断。如企业需要对用户进行磁盘限额控制的,则就需要根据用户的数量来设置表空间。当企业的数据容量比较大,而其又对数据库的性能有比较高的要求时,就需要根据不同类型的数据,设置不同的表空间,以提高其输入输出性能。

第二步:建立用户,并制定用户的默认表空间。

在建立用户的时候,我们建议数据库管理员要指定用户的默认表空间。因为我们在利用CREATE语句创建数据库对象,如数据库表的时候,其默认是存储在数据库的当前默认空间。若不指定用户默认表空间的话,则用户每次创建数据库对象的时候,都要指定表空间,显然,这不是很合理。

另外要注意,不同的表空间有不同的权限控制。用户对于表空间A具有完全控制权限,可能对于表空间B就只有查询权限,甚至连连接的权限的都没有。所以,合理为用户配置表空间的访问权限,也是提高数据库安全性的一个方法。

时间: 2024-08-11 03:24:35

sql-表空间的相关文章

oracle表空间的创建、修改、删除及一些参数解释

创建表空间 方法1:代码创建,如下:PL/SQL 建立表空间(一般建N个存数据的表空间和一个索引空间):      create tablespace 表空间名      datafile ' 路径(要先建好路径)\***.dbf  ' size *M      tempfile ' 路径\***.dbf ' size *M      autoextend on  --自动增长      extent management localSQL> / 表空间已创建.       方法2用sqlplu

【Oracle】表空间、用户、权限、角色、审计

觉得oracle很难深入.每天一二小时,坚持吧! ---结构体系与原理 Dba_data_files:数据文件 Dba_tablespaces:表空间 Dba_segments:段信息 Dba_extents:块信息 Dba_free_space:表空间可用信息 Dba_objects:对象信息 V$datafile:来自控制文件的信息 用户权限与系统权限视图: 查看用户角色: select * from dba_role_privs; select * from user_role_privs

一个sql导致temp表空间爆掉

Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写了一个sql: select t1.* from test1 t1, test2 t2 where t1.col1 = t2.col1(+) and t1.col2 = t2.col2(+) and t1.col3 = t2.col3(+) and t2.col1 is null; 因为是在线系统,

SQL创建Oracle表空间、用户以及给用户赋权的方法

//创建表空间 Create tablespace examination//创建表空间examination datafile 'c:\Oracle\zhangwei\examination.dbf'//与表空间关联的文件存放位置(要预先手动建好文件夹) size 100m//文件初始大小,千万不要写成mb(这里以下可略) autoextend on//文件大小可自动拓展 next 30m//每次拓展30m maxsize unlimited//不限制文件大小的上限 logging//生成对于

Sql 学习之表空间

注意:sql语句一定要有一个 : 结尾,不然会报错. Oracle数据库内种特殊表DualDual表Oracle实际存表任何用户均读取用没目标表SelectDual表由Oracle连同数据字典同创建所用户都用名称DUAL访问该表表列DUMMY该列定义VARCHAR2(1)类型行值XDUAL表选择数据用通SELECT语句计算数表达式由于DUAL行数据所数返 ? 调节字体: http://zhidao.baidu.com/link?url=eLV_2Ng8wT7EXRCk4V6xTsAAj44wGu

zbb20170816 oracle Oracle 查看表空间、数据文件的大小及使用情况sql语句

oracle Oracle 查看表空间.数据文件的大小及使用情况sql语句 --表空间 --1G=1024MB --1M=1024KB --1K=1024Bytes --1M=11048576Bytes --1G=1024*11048576Bytes=11313741824Bytes SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) &qu

查看表空间使用的两条常用SQL

1. 查看表空间大小: SELECT tablespace_name, SUM(bytes)/1024/1024 total FROM DBA_FREE_SPACE GROUP BY tablespace_name ORDER BY 2 DESC; SQL> SELECT tablespace_name, SUM(bytes)/1024/1024 || 'MB' total FROM DBA_FREE_SPACE GROUP BY tablespace_name ORDER BY 2 DESC;

Oracle使用SQL传输表空间

源环境:RHEL 6.4 + Oracle 11.2.0.4目的环境:RHEL 6.4 + Oracle 11.2.0.4 DG双机要求:使用SQL传输表空间DBS_D_JINGYU从源环境到目的环境. 1.创建目录 2.检查表空间自身的一致性 3.expdp导出表空间的元数据 4.转储文件和数据文件复制到目的数据库服务器 5.在目的数据库上,impdp导入表空间 6.表空间设为读写(源数据库和目的数据库) 1.创建目录 --源数据库 create directory src_dpump_dir

SQL语句创建表空间

--创建表空间xxxcreate tablespace xxxloggingdatafile 'D:\oracle\product\10.2.0\oradata\orcl\xxx.ora'size 128mautoextend onnext 8m maxsize 512mextent management local;指定权限:grant connect,resource to dyds2010 SQL语句创建表空间

[转] 使用SQL脚本查看表空间使用率和使用dba_tablespace_usage_metrics视图的区别

传统的SQL脚本查看表空间使用率,使用的关键视DBA_DATA_FILE和DBA_FREE_SPACE.Oracle 11g引入了DBA_TABLESPACE_USAGE_METRICS视图.事实上,Oracle 10g中就已经引入了该视图,可以使用,但在10g官方文档中查不到,11g官方文档对该视图作了说明. Oracle 11g 官方文档中对DBA_TABLESPACE_USAGE_METRICS视图的说明: DBA_TABLESPACE_USAGE_METRICS describes ta