Oracle 的 表空间(Tablespace)、用户(User)、模式(Schema)

 

前面有整理了一篇 Oracle 数据库(database) 与 实例(instance) 的概念及关系整理 。

那接下来就往下整理一个数据库里面的一些其他几个东西之间的奇奇怪怪的关系。

一、表空间(Tablespace)

讲表空间的话我就想到Oracle的逻辑存储结构了。所以还是简单讲讲吧,有机会再单独总结(抄袭)一篇。

在计算机技术中,逻辑就是虚拟的意思,实际的数据存储在硬盘中那是物理级别的,也就是我们说的物理存储结构。之间的关系我直接从官方文档中截个图放着,连接线的用的是乌鸦脚表示法来表示一对多的关系,看着还是很明确的!

图中明显可以看出:

1、在oracle的物理逻辑存储结构中,从小到大都是的关系如下,然后从大到小都是一对多的关系:

Oracle data block(数据块)-->Extent(扩展区)-->Segment(段)-->Tablespace(表空间)

2、物理存储结构上,OS block(操作系统的存储块),windows系统上的话,其实也就是我们格式化硬盘的时候选的分配单元大小,Oracle数据块跟操作系统块是一对多的关系。然后,比较重要的一个,一个Oracle的表空间,可以对应多个数据文件。

(一)表空间概述

1、上面刚其实也已经提到,表空间就是个逻辑存储容器,在对应的物理级别上,表空间的数据内容是存储在一个或者多个数据文件或者临时文件中。

2、表空间主要有Permanent Tablespaces(永久表空间)、Temporary Tablespaces(临时表空间)、Undo Tablespaces(撤销表空间)三种,Oracle Database 11g r2在用dbca数据库管理助手创建数据库的时候,默认会创建三个永久表空间(SYSTEM、SYSAUX、USERS),一个临时表空间(TEMP),一个撤销表空间(UNDOTBS1)。

3、 Oracle数据库有几个缺省表空间,其中SYSTEM和SYSAUX 表空间是一个Oracle数据库必须有的。

4、表空间的模式,也可以称为状态,可以设置表空间的online(联机)或者offline(脱机),Read/write(读/写) 或者 Read-only(只读) 。

(二)永久表空间

用于存储数据库中的持久性模式对象,如表、索引、视图等,其数据在物理上对应一个或者多个数据文件。永久表空间也是我们实际中用的最多的一个类型的表空间。

(三)临时表空间

见名知意,不能进行永久对象的存储。其主要用途在于存储临时表的数据、提供空间进行排序操作、创建索引等等。

临时表的话,例如会话级临时表,往里面插入数据进行操作的时候数据使用的就是临时表空间。

创建Oracle数据库的时候可以设置一个叫sort_area_size的参数,默认值为65536,排序的时候会首先使用这部分内存,如果不足就会使用临时表空间。

(四)撤销表空间

撤销表空间主要用于DML语句的数据管理,当执行insert,update,delete的时候,旧的数据就会存放到undo表空间。undo表空间的4个常见作用。

1、事务回滚,我们对数据进行dml操作的时候,如果撤销修改,就会通过undo表空间记录的修改数据把数据恢复到修改前。有些存储过程中通过exception捕捉异常的时候经常会有一句rollback,也是这个作用,对当前事务的数据操作进行回滚恢复。

2、数据库恢复,数据库异常关闭,重新启动的时候会通过undo表空间将回退未提交的事务。

3、读一致性,在一个会话操作数据未提交的时候,通过undo表空间保证其他人访问的数据的一致性(就是未修改的样子)。

4、闪回查询,这是个很有趣的功能。可以查看某个时间点的时候的数据,经常,,算了,也不经常,主要用于误操作、误删数据等的恢复。

综上所述,这些东西日常来说基本都不用管。

(五)表空间模式

1、联机(online)和脱机(offline)表空间

这个其实应该说是表空间的联机状态,Oracle数据库再开启状态的时候,我们可以让除了SYSTEM 表空间和临时表空间外其他所有的表空间联机或者脱机,offline状态的表空间无法被除了Oracle外任何其他的应用程序访问和读写。当然,如果刚好有个会话在操作这个表空间中的部分数据,也不会有太大的影响,Oracle会有相应的处理机制,不详细说。

不想打了,直接从官方文档摘抄一段:

表空间可以自动或手动脱机。例如,您可以将表空间脱机,以进行维护或备份与恢复。数据库在遇到某些错误时会自动将一个表空间脱机,比如数据库写进程 (DBWn)多次试图写入数据文件但遭遇失败时。当用户试图访问一个脱机表空间中的表时,将收到一个错误。

(六)表空间创建语法

放一个永久表空间的创建语法及几个常用的属性对应的注释吧

  1.  
    CREATE TABLESPACE "WEIXIN" --表空间名WEIXIN
  2.  
    LOGGING --启动重做日志
  3.  
    DATAFILE 'D:\app\oradata\orcl\WEIXIN.DBF' --指定对应的数据文件,可以一个或者多个
  4.  
    SIZE 512M --数据文件大小
  5.  
    AUTOEXTEND ON --数据文件自动扩展
  6.  
    NEXT 1024K --一次扩展的大小
  7.  
    MAXSIZE UNLIMITED --数据文件最大容量:无限
  8.  
    EXTENT MANAGEMENT LOCAL --表空间本地管理
  9.  
    SEGMENT SPACE MANAGEMENT AUTO ; --存储管理方式,AUTO为自动方式

二、用户(User) & 模式(Schema)

(一)用户

数据库中的用户,其实就是一个认证登录的东西,用来连接和访问数据库的。

我们先看下创建用户的语法:

  1.  
    CREATE USER "WEIXIN" --创建用户WEIXIN
  2.  
    PROFILE "DEFAULT" --忽略对profile中的一些资源限制(什么鬼)
  3.  
    IDENTIFIED BY "weixin" --密码为weixin
  4.  
    DEFAULT TABLESPACE "WEIXIN" --默认表空间WEIXIN,即数据默认存此表空间
  5.  
    ACCOUNT UNLOCK; --解锁用户
  6.  
     
  7.  
    --通常建完用户后会给用户授予一些基本的权限
  8.  
    Grant connect, resource to weixin;
  9.  
     
  10.  
    --或者直接再授个管理员权限
  11.  
    GRANT "DBA" TO "WEIXIN" WITH ADMIN OPTION;
  12.  
    --with admin option 表示在获得权限的同时也获得了将这个权限授予其他用户的能力。

好,用户就讲到这。还有一个需要注意的是,oracle的安全策略方面默认一个用户的密码有效期为180天,我们可以直接把这个有效期调成永久。

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

(二)模式(scheam)

我们再偷偷搬运一下官方文档的说法:数据库模式是逻辑数据结构(并非我们上面说的逻辑存储结构哈)或模式对象的集合。 数据库模式由一个数据库用户拥有,并与用户名具有相同的名称。

其实就是,我们在创建用户的时候,Oracle会自动创建一个与用户名相同的数据库模式,然后,该用户下所有的对象(也称为模式对象,如表、序列、视图、同义词、存储过程等等等等),都是归属到这个数据库模式。

简单点可以说,模式是对象的集合,对象(表、存储过程、视图等等)是模式的元素?大概可以这么理解。欢迎纠正!

所以,数据库模式是用来管理对象的。对象就是表呀、视图呀这些,也被称为数据库的逻辑数据结构。

(有点乱。。。看好几个关键字:模式、对象、逻辑数据结构)

举个大家比较常用的例子,很多语言都会提供一个英文句号 "." 这么个东西,在很多IDE上,想调用一个对象的某个东西的时候,我们可以打个对象名,然后点一下,后面就会自动联想出对象所有的变量呀,方法呀什么的。在oracle中也一样,我们可以通过  模式.对象名的形式去访问或者调用对象。

如下面的sql,就是通过指定模式名,然后点,后面跟上表名,就能查询到lhy模式下的emps表。这个主要用于跨用户的查询。日常开发中用户和模式的概念并不会分得很清楚,口头上也就是说,查一下lhy用户下的emps表,其实就是lhy用户对应的lhy模式里面的emps表。

select * from lhy.emps;

还有一点,就是模式下面的对象所存储的表空间,通常是由创建用户的时候的default tablespace参数决定。当然,创建表的时候你也可以单独制定这个表存在哪个表空间下面。

转自:https://blog.csdn.net/Huay_Li/article/details/80575538

Oracle的表空间、用户和模式的更多相关文章

  1. oracle创建表空间-用户-角色-授权

    1.创建数据表空间: SQL> create tablespace rusky_data datafile 'D:\rusky\rusky_data01,dbf' size 10M autoex ...

  2. Oracle创建 表空间 用户 给用户授权命令

    //创建表空间 create tablespace ACHARTSdatafile 'D:\oradata\orcl\ACHARTS01.DBF' size 800mautoextend on nex ...

  3. oracle 创建表空间用户

    1.创建普通表空间和用户 //创建临时表空间create temporary tablespace oa_temptempfile 'D:\app\Administrator\oradata\orcl ...

  4. Oracle建立表空间和用户

    Oracle建立表空间和用户 建立表空间和用户的步骤: 用户 建立:create user 用户名 identified by "密码"; 授权:grant create sess ...

  5. oracle 表空间 用户

    Oracle创建表空间.创建用户以及授权.查看权限 创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\ ...

  6. Oracle创建表空间、用户管理、角色管理

    内容:Oracle创建表空间.用户管理.角色管理 1.用系统用户登录Oracle 默认的系统用户: sys/system.sysman.scott sys:权限最大,超级用户,可以完成所有任务, 默认 ...

  7. Oracle数据库表空间与用户的关系是 ( )

    Oracle数据库表空间与用户的关系是 ( )? A.一对一 B.一对多 C.多对一 D.多对多 解答: D 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用.

  8. oracle下表空间、用户创建以及用户授权流程

    Oracle,表空间的建立.用户创建以及用户授权 主要是以下几步,挑选需要的指令即可: # 首先以scott用户作为sysdba登陆 conn scott/tiger as sysdba #创建用户 ...

  9. oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录

    oracle中的sys用户(修改密码) (2011-07-01 09:18:11) 转载▼ 标签: it 分类: oracle 概念: SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用 ...

随机推荐

  1. H5-安卓和ios调用相机和相册

    <input v-if="ipshow" type="file" accept="image/*" name="file1& ...

  2. Wannafly Winter Camp 2020 Day 5G Cryptographically Secure Pseudorandom Number Generator - 分块

    多组数据,给定质数 \(p\) ,求所有 \(x\) 使得 \(f(x)=\min_{k=2}^x f(k)\) ,其中 \(f(x)=x^{-1}\) 所有 \(p\) 在 \([1,10^9]\) ...

  3. laravle中常见的数据库加密

    // 1.md5加密 $str=md5('123456'); // 2.base64_decode加密 $str2=base64_encode('123456'); // 2.1 base64_解密 ...

  4. java开发就业招聘管理系统 ssh源码

    开发环境:    Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+MySql数据库 此项目分为 用户 企业  管理员三种角色 运行效果图

  5. codeforces 99999/553 Sultan's Pearls Solution 珍珠 题解

    文章目录 珍珠 题意 分析 增加限定条件 去掉限定条件 Code 珍珠 题意 一共n课珍珠,m颗悬挂,其余在桌子上.如图所示. 仆人每天从某一端"借"一颗珍珠珠.主人每天都会检查悬 ...

  6. Linux安装U盘启动报错Failed to load ldlinux.c32

    报错信息 使用U盘安装linux无法正常启动 Start booting from USB device... SYSLINUX 5.10 EDD 2013-06-04 Copyright (C) 1 ...

  7. jQuery---html方法和text方法

    html方法和text方法 //html:innerHTML text:innerText console.log($("div").html());//<h3>我是标 ...

  8. Eclipse 连接 SQL Server 2012数据库 教程

    教程:https://wenku.baidu.com/view/78b9957e0066f5335a8121b7.html

  9. 单调栈(POJ2559)

    Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base l ...

  10. 文件上传过waf的方法

    原文链接: https://www.cesafe.com/8411.html 原始请求包: ——WebKitFormBoundary2smpsxFB3D0KbA7D Content-Dispositi ...