Oracle学习笔记之表空间等概念及用户权限


    Oracle数据库只是一些文件组成,Oracle实例是指有自己的系统全局区和相关数据库文件的Oracle服务器进程集。新装的Oracle数据库管理系统有一个预装的数据库(通常叫ORCL),同时会启动一个实例,以后的数据库连接,都默认是通过这个实例连接到该数据库。

    可以新建数据库,通过图形化或手工代码方式。新建的数据库与ORCL一样,可能只是取名不同(假设为newdb),也会启动newdb的一个实例。这就是说,一台机器上可以运行多个Oracle实例,在连接时,需要指定连接参数连接到不同的实例,或者通过ALTER   SESSION   SET   INSTANCE   =   newdb 的方式来指定连接到的实例。一般有一个默认实例!

    我理解大致可以这样来简单看待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 OSUSER default 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上百兆的空间就被耗光了。  

相关内容