Oracle学习日志-2(用户与表空间)

表空间是数据库的逻辑存储空间,能够理解为表空间是数据库开辟的一个空间,用于存放数据库的对象。表空间是由一个或者多个数据文件构成的。咱们存放的表,数据库对象等,都是存放在表空间中的数据文件里的。
表空间分为永久表空间,临时表空间,UNDO表空间。数据库

  • 永久表空间主要存储数据库当中须要永久存储化的一些对象。好比表,视图等。
  • 临时表空间主要存储数据库在操做过程当中,中间执行的过程,当执行结束后,存放的内容就自动被释放掉。
  • UNDO表空间用于数据在被修改以前的数据,当一张表进行修改时,它会保存表以前的数据。用于回滚。

在oracle中,使用不一样用户登陆,所对应的表空间也有所不一样。首先介绍两个数据字典(数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述)数据结构

  • dba_tablespaces:针对系统管理员用户来查看的数据字典。
  • user_tablespaces:普通用户登陆后查看的数据字典。

用system用户链接到数据库后,查询dba_tablespaces。

查询结果表示dba_tablespaces这个数据字典有列名有TABLESPACE_NAME,NOT NULL表示不能为空,类型为可变字符类型,长度为30。列名为BOLOCK_SIZE的这一列不能为空,类型为NUMBER。后面的以此类推。
而后在查询一下表空间有哪些。
oracle

能够看到,用system登陆数据库后,默认的表空间就有5个。spa

  1. SYSTEM:主要sys用户存放表,视图,也叫系统表空间。
  2. SYSAUX:做为辅助表空间。
  3. UNDOTBS1:用于存放一些撤销信息,属于UNDO类型表空间。
  4. TEMP:用于存储一些SQL语句处理的表,和索引信息,属于临时表空间。
  5. USERS:存储数据库用户建立的数据库对象。
    普通用户登陆数据库只能查看user_tablespaces,不能查看dba_tablespace。user_tablespaces的表空间与dba_tablespace的名字同样。

每个用户对应着默认的表空间,能够多个用户共用同一个表空间。也能够指定一个用户只用某一个表空间,若是不指定,就默认为users表空间。
如今有两个链接,一个是system系统管理员用户登陆了数据库。一个是scott普通用户登陆数据库。
我建立scott用户的时候没有指定表空间,因此它指定的是默认表空间。用selcet查询一下

能够看到scott用户指定的表空间是默认的USERS表空间(scott用户的名字是C##scott),scott用户建立的表就默认放在USERS表空间
system用户的指定表空间为SYSTEM。

sys用户指定的表空间为SYSTEM。

sys、system管理员建立的表就放在SYSTEM表空间。视频


总结:

以前边看视频边查资料,对于表空间的理解仍是云里雾里,可是本身动手写了几个例子后,仍是有了一个大概的理解。首先表空间是划分数据库的逻辑空间。至关于数据库是一个大仓库。表空间就是地上画的粉笔线。用来区分存放物品的位置。用户就至关于使用仓库的人。sys和system都是管理员用户。至关于仓库管理员。能够划分新的表空间。也能够删除或者改动表空间。
一开始这个仓库(数据库)就划分了5个区域(表空间)。用来存放东西或者使用。仓库管理员(sys,system)就负责管理仓库的事物。除了管理员,还有普通的员工(普通用户)。好比今天新来了个员工小王,仓库管理员就告诉小王。我给你划了块地方(给用户指定表空间)。你之后干什么就用这块地。而后又来了个员工小张,仓库管理员也告诉小张“你和小王用同一块地就好了”(一个表空间能够被多个用户共用)。以后又有一个新员工小李。仓库管理员没有告诉他用哪里。小李就使用了默认的的一块地(默认使用USER表空间)。对象

blog

相关文章
相关标签/搜索