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是一个用 ...
随机推荐
- Python-Django学习笔记(四)-views的编写以及urls分发器的配置
MTV中的V表示的是Views,视图函数(或简称视图)只是一个Python函数,它接受Web请求并返回Web响应. 通俗的理解可以理解为后端控制器. (响应可以是网页的HTML内容,重定向,404错误 ...
- mysql 数据库优化的几种方法
1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...
- js -- 移动端pc端自动切换
1. 判断浏览器类型 浏览器判断使用的github开源项目current-device,下面是地址: https://github.com/matthewhudson/current-device 在 ...
- The sklearn preprocessing
Recently, I was writing module of feature engineering, i found two excellently packages -- tsfresh a ...
- 第一个安卓app——计算器
几天前,我花了一天时间,结合这段时间所学知识开发出了一个简单的计算器,它由两个TextView和23个Button组成,代码会放在文章结尾. TextView TextView:上面一个TextVie ...
- 2020年,最新NGINX的ngx_http_geoip2模块以精准禁止特定国家或者地区IP访问
1.0 geoip2核心识别库 安装geoip2 lib步骤: cd /usr/local/src .tar.gz wget https://github.com/maxmind/libmaxmind ...
- 【python&pycharm的安装使用】
一.Python3.7安装 1. 运行python3.7.exe 2. 检查是否安装成功:命令窗口输入python -V 二.Pycharm安装 1. 运行pycharm.exe(社区版) 2. 配置 ...
- CenterOS下 Mysql数据库中数据字符乱码
1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create ...
- 洛谷P1582 倒水 二进制的相关应用
https://www.luogu.org/problem/P1582 #include<bits/stdc++.h> using namespace std; long long N,K ...
- H5与native 普及
H5与native 普及: H5是基于web,native基于客户端native是使用原生系统内核的,相当于直接在系统上操作.,是我们传统意义上的软件,更加稳定.但是H5的APP先得调用系统的浏览器内 ...