表空间的概念和使用

概念:表空间实质是组织数据文件的一种途径,Oracle就是通过表空间这个数据库对象完成对数据的组织的。在将数据插入Oracle数据库之前,必须首先建立表空间,然后将数据插入表空间的一个对象中。

解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。

目的和意义:方便管理,就像每个城市会划分成很多区,每个区又有很多街道一样

目的和意义具体体现在他的用途上:

-目录表空间
每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的。目录表空间被 DB2 命名为 SYSCATSPACE,它保存了系统目录表。总是在创建数据库时创建该表空间。

-常规表空间
常规表空间保存表数据和索引。它还可以保存诸如大对象(Large Object,LOB)之类的长数据,除非这些数据显式地存储在长表空间中。如果某些表空间是数据库管理的空间(Database Managed Space,DMS),则可以将表及其索引分别放到单独的常规表空间中。我们将在本文后面定义 DMS 和系统管理的空间(System Managed Space,SMS)之间的区别。每个数据库中必须至少有一个常规表空间。创建数据库时指定该表空间的缺省名为 USERSPACE1。

-长表空间
长表空间用于存储长型或 LOB 表列,它们必须驻留在 DMS 表空间中。它们还可以存储结构化类型的列或索引数据。如果没有定义长表空间,那么将把 LOB 存储在常规表空间中。长表空间是可选的,缺省情况下一个都不创建。

-系统临时表空间
系统临时表空间用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据。每个数据库必须至少有一个系统临时表空间。随数据库创建的系统临时表空间的缺省名为TEMPSPACE1。

-用户临时表空间
用户临时表空间存储已声明的全局临时表。创建数据库时不存在用户临时表空间。至少应当创建一个用户临时表空间以允许定义已声明的临时表。用户临时表空间是可选的,缺省情况下一个都不创建。

 

 

 

 理解大致可以这样来简单看待Oracle的组成层次:

    数据库--表空间--某一个用户的表集--一张表--行、列……,对表的引用和授权,常是以用户为单位的。当然,实质上表空间是物理概念,而用户表是数据库中的对象,只是存于某一个表空间下的一块空间中。

表空间、段、区间和数据库对象

    Oracle数据库的物理存储结构由数据文件组成,但在逻辑上,Oracle将数据库所有数据文件占用的磁盘空间划分为一个或多个表空间进行存储管理。一个表空间可包含多个数据文件,但一个数据文件只能属于一个表空间。

    Oracle的逻辑存储结构大致有以下几个层次:表空间--段--区间--数据块。平常用到的主要是表空间、段和区间,段有数据段、索引段、临时段和回滚段几种。Oracle对象中的表,索引等便是存储在这不同的段里面。而一张数据库表,只属于数据段,但它可能跨越多个区间(Extent),因为区间包括固定的若干个数据块大小,一个区间未必放得下一张表,划分区间只是为了空间分配与回收的方便。

新增用户及其授权

    在Oracle数据库中新加入一个用户时,主要有以下几步:

    一、新建表空间(如新用户的默认表空间使用现有的表空间如USERS表空间,则不需要新建)。创建表空间时,需要指定数据文件等一些表空间的参数。

    二、新建用户。刚新建的用户可以没有指定任何权限属性,也可以指定其默认表空间等。

    三、用户授权。指定用户的默认表空间、将create session(连接数据库)、create table、select talbe等权限授予用户。这样用户便可以在自己默认表空间下进行各种操作了。如果需要将其它用户的表权限授予新用户,也可在此时完成。

    四、分配空间限额。一定要有这一步,否则将无法进行创建表的操作。分配每个用户在某个表空间的空间限额,是为了使用户对空间的利用更加合理。

    五、用户可进行操作了。

    下面是在网上找的一段实例:

  1. 1.建表空间    
  2. create tablespace OSDB datafile 'F:\Oracle\oradata\glsqjz\OSDB.ora' size 100m reuse default storage(initial 500k next 500k pctincrease 20);    
  3. 2.建用户    
  4. create user OSUSER identified by OSUSER;//identified by 后面的是密码,前面的是用户名    
  5. 3.用户授权    
  6. grant resource,connect,RECOVERY_CATALOG_OWNER to OSUSER ;    
  7. grant create table to OSUSER ;    
  8. alter user OSUSER quota unlimited ON OSDB;    
  9. alter user OSUSEdefault tablespace OSDB;    
  10. 4.删除表空间    
  11. DROP TABLESPACE TableSpaceName INCLUDING CONTENTS AND DATAFILES;    
  12. 5.删除用户    
  13. DROP USER User_Name CASCADE    
  14. 6.删除表的注意事项    
  15. 在删除一个表中的全部数据时,须使用TRUNCATE TABLE 表名;因为用DROP TABLE,DELETE * FROM 表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。  

猜你喜欢

转载自squall140.iteye.com/blog/1669007