Oracle的表空间、用户和模式
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)多次试图写入数据文件但遭遇失败时。当用户试图访问一个脱机表空间中的表时,将收到一个错误。
(六)表空间创建语法
放一个永久表空间的创建语法及几个常用的属性对应的注释吧
- CREATE TABLESPACE "WEIXIN" --表空间名WEIXIN
- LOGGING --启动重做日志
- DATAFILE 'D:\app\oradata\orcl\WEIXIN.DBF' --指定对应的数据文件,可以一个或者多个
- SIZE 512M --数据文件大小
- AUTOEXTEND ON --数据文件自动扩展
- NEXT 1024K --一次扩展的大小
- MAXSIZE UNLIMITED --数据文件最大容量:无限
- EXTENT MANAGEMENT LOCAL --表空间本地管理
- SEGMENT SPACE MANAGEMENT AUTO ; --存储管理方式,AUTO为自动方式
二、用户(User) & 模式(Schema)
(一)用户
数据库中的用户,其实就是一个认证登录的东西,用来连接和访问数据库的。
我们先看下创建用户的语法:
- CREATE USER "WEIXIN" --创建用户WEIXIN
- PROFILE "DEFAULT" --忽略对profile中的一些资源限制(什么鬼)
- IDENTIFIED BY "weixin" --密码为weixin
- DEFAULT TABLESPACE "WEIXIN" --默认表空间WEIXIN,即数据默认存此表空间
- ACCOUNT UNLOCK; --解锁用户
- --通常建完用户后会给用户授予一些基本的权限
- Grant connect, resource to weixin;
- --或者直接再授个管理员权限
- GRANT "DBA" TO "WEIXIN" WITH ADMIN OPTION;
- --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参数决定。当然,创建表的时候你也可以单独制定这个表存在哪个表空间下面。
Oracle的表空间、用户和模式的更多相关文章
- oracle创建表空间-用户-角色-授权
1.创建数据表空间: SQL> create tablespace rusky_data datafile 'D:\rusky\rusky_data01,dbf' size 10M autoex ...
- Oracle创建 表空间 用户 给用户授权命令
//创建表空间 create tablespace ACHARTSdatafile 'D:\oradata\orcl\ACHARTS01.DBF' size 800mautoextend on nex ...
- oracle 创建表空间用户
1.创建普通表空间和用户 //创建临时表空间create temporary tablespace oa_temptempfile 'D:\app\Administrator\oradata\orcl ...
- Oracle建立表空间和用户
Oracle建立表空间和用户 建立表空间和用户的步骤: 用户 建立:create user 用户名 identified by "密码"; 授权:grant create sess ...
- oracle 表空间 用户
Oracle创建表空间.创建用户以及授权.查看权限 创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\ ...
- Oracle创建表空间、用户管理、角色管理
内容:Oracle创建表空间.用户管理.角色管理 1.用系统用户登录Oracle 默认的系统用户: sys/system.sysman.scott sys:权限最大,超级用户,可以完成所有任务, 默认 ...
- Oracle数据库表空间与用户的关系是 ( )
Oracle数据库表空间与用户的关系是 ( )? A.一对一 B.一对多 C.多对一 D.多对多 解答: D 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用.
- oracle下表空间、用户创建以及用户授权流程
Oracle,表空间的建立.用户创建以及用户授权 主要是以下几步,挑选需要的指令即可: # 首先以scott用户作为sysdba登陆 conn scott/tiger as sysdba #创建用户 ...
- oracle中的sys用户(修改密码)/////Oracle删除表空间的同时删除数据文件 ///// Oracle中如何保证用户只有一个session登录
oracle中的sys用户(修改密码) (2011-07-01 09:18:11) 转载▼ 标签: it 分类: oracle 概念: SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用 ...
随机推荐
- 1级搭建类102-Oracle 11g 单实例 FS(11.2.0.4+RHEL 7)公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- Java对MongoDB进行分组操作并统计各个分组的数量
最近在检索MongoDB的数据时需要用到分组操作,由于没有现成的说明文档可参考,只能是在代码中不断调试.摸索前进:目前已现实了Java对MongoDB的分组操作,并统计各个分组的数量.现通过示例详细解 ...
- AcWing 1058. 股票买卖 V
//初始状态(入口)转移到手中无货的第>=2天 //最终状态(出口)可能从手中无货的第一天转移过来,或者从手中无货的第>=2天 //f[i,0]表示走到第i天,且位于手中有货的状态 //f ...
- 第一章 - HTTP概述
1.1 HTTP——因特网的多媒体信使 可靠的数据传输协议 1.2 Web客户端和服务器 Web内容都是存储在Web服务器上的,使用HTTP协议,因此也称为HTTP服务器 HTTP客户端发出请求,提供 ...
- Wannafly Camp 2020 Day 6M 自闭 - 模拟
按题意模拟,又乱又烦,没什么可说的 #include <bits/stdc++.h> using namespace std; #define int long long int n,m, ...
- [JSOI2010]快递服务
Description Luogu4046 BZOJ1820 Solution 暴力DP很好想,\(f[i][j][k][l]\)表示处理到第\(i\)个任务,三个人在\(i,j,k\)的方案数.显然 ...
- redis 有序集合(set),无需集合(zset)
1.set(无序集合)无序集合每个元素都是string元素的唯一性,不能重复没有修改操作 1.增加 sadd key value1 value2 value3... 2.获取 smembers key ...
- Leetcode数组题*3
目录 Leetcode数组题*3 66.加一 题目描述 思路分析 88.合并两个有序数组 题目描述 思路分析 167.两数之和Ⅱ-输入有序数组 题目描述 思路分析 Leetcode数组题*3 66.加 ...
- Ubuntu 安装交叉编译器出错问题
安装教程网上有很多,可参考:Ubuntu14.04(64位)下gcc-linaro-arm-linux-gnueabihf交叉编译环境搭建 但是我的问题一直是路径搭好了,就是找不到文件:反复查找,花了 ...
- 08 部署nginx web服务器(转发fastDFS请求)
先准备两个文件: fastdfs-nginx-module-master.tar.gz:fastDFS nginx安装包 nginx-1.17.3.tar.gz:nginx安装包 注:这两个包文件要匹 ...