一、 表空间

Oracle数据库包含逻辑结构和物理结构。

数据库的物理结构指的是构成数据库的一组操作系统文件。

数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系。

表空间是数据库逻辑结构的一个重要组件。

表空间可以存放各种应用对象,如表、索引等。

而每一个表空间由一个或多个数据文件组成。

1. 表空间的分类

表空间可分为3类:

  • 永久性表空间:一般保存表、上天、过程和索引等数据。system、sysaux、users、example表空间是默认安装的。
  • 临时性表空间:只用于保存系统中短期活动的数据,如排序数据等。
  • 撤销表空间:用来帮助回退未提交的事务数据,已提交了的数据在这里是不可以恢复的。一般不需要创建临时和撤销表空间,除非把它们转移到其它磁盘中以提高性能。

2. 表空间的目的

(1) 对不同的用户分配不同的表空间,对不同的模式对象分配不同的表空间,方便对用户数据的操作、对模式对象的管理。

(2) 可以将不同数据文件创建到不同的磁盘中,有利于管理磁盘空间、有利于提高I/O性能、有利于备份和回复数据等。

(3) 一般在完成Oracle系统的安装并创建Oracle实例后,Oracle系统会自动建立多个表空间。

3. 创建表空间

创建表空间,语法如下:

  1. 1 CREATE TABLESPACE tablespaceName 2 DATAFILE 'filename' 3 [SIZE integer [K | M]] 4 [AUTOEXTEND [OFF | ON]];

在语法中:

  • tablespaceName是需创建的表空间名称;
  • DATAFILE指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔;
  • filename是数据文件的路径和名称;
  • SIZE指定文件的大小,用K指定千字节大小,用M指定兆字节大小;
  • AUTOEXTEND子句用来启用或禁用数据文件的自动扩展,设置为ON则空间使用完毕会自动扩展,设置为OFF则很容易出现表空间剩余容量为0的情况,使数据不能存储到数据库中。

实例:创建一个自动增长的表空间geeksss的SQL语句如下:

  1. 1 CREATE TABLESPACE geeksss 2 DATAFILE 'D:\ORACLE\DATA\GEEKSSS.DBF' 3 SIZE 10M 4 AUTOEXTEND ON;

4. 删除表空间

可以通过DROP语句(DROP TABLESPACE 加上表空间的名称)来删除用户自定义的表空间。

语法:

  1. 1 DROP TABLESPACE tablespaceName;

删除表空间之前最好对数据库进行备份。

二、 自定义用户管理

当创建一个新数据库时,Oracle将创建一些默认数据库用户,如sys、system和scott等。 sys和system用户都是Oracle的系统用户,而scott用户是Oracle数据库的一个示范账户,里面包含一些测试样例表。

下面简单介绍一个sys、system和scott用户的模式。

1. sys

sys用户是Oracle中的一个超级用户。

数据库中的所有数据字典和视图都存储在sys模式中。 数据字典存储了用来管理数据库对象的所有信息,是Oracle数据库中非常重要的系统信息。

sys用户主要用来维护系统信息和管理实例。sys用户只能以sysoper或sysdba角色登录系统。

2. system

system用户是Oracle中默认的系统管理员,它拥有dba权限。

该用户拥有Oracle管理工具使用的内部表和视图,通常通过system用户管理Oracle数据库的用户、权限和存储等。

不建议system模式中创建用户表,system用户不能以sysoper或sysdba角色登录系统,只能以默认的方式登录。

3. scott

scott用户是Oracle数据库的一个示范用户,一般在数据库安装时创建。

scott用户模式包含4个示范表,其中一个是emp表,使用USERS表空间存储模式对象。

通常情况下,出于安全考虑,对于不同的数据表需要设置不同的访问权限。

此时,就需要创建不同的用户。Oracle中的CREATE USER命令用于创建新用户。

每个用户都有一个默认表空间和一个临时表空间。 如果没有指定,Oracle就将USERS设为默认表空间,将TEMP设为临时表空间。

创建用户语法如下所示:

  1. 1 CREATE USER username 2 IDENTIFIED BY password 3 [DEFAULT TABLESPACE tablespaceName] 4 [TEMPORARY TABLESPACE tablespaceName]

在语法中:

  • username是用户名,用户名必须是一个标识符;
  • password是用户口令,口令必须是一个标识符,且不区分大小写;
  • DEFAULT或TEMPORARY TABLESPACE为用户确定默认表空间或临时表空间。

实例:一下代码演示了如何创建名称为martin的用户:

  1. 1 CREATE USER martin 2 IDENTIFIED BY martinpwd 3 DEFAULT TABLESPACE geeksss 4 TEMPORARY TABLESPACE temp;

上述命令将创建一个名为martin、口令为martinpwd的用户,默认表空间为geeksss,临时表空间为temp。

实例:将martin的口令修改为mpwd:

  1. 1 ALTER USER martin 2 IDENTIFIED BY mpwd;

Oracle的DROP USER命令可用于删除用户,但当用户拥有模式对象时则无法删除用户。 而必须使用CASCADE选项删除用户和用户模式对象。

实例:如何删除用户martin:

  1. 1 DROP USER martin CASCADE;

三、 数据库权限管理

权限是用户对一项功能的执行权利。 在Oracle中,根据系统管理方式的不同,可将权限氛围系统全新啊与对象权限两类。

1. 系统权限

系统权限是指被授权用户是否可以连接到数据库上及在数据库中可以进行哪些系统操作。

系统权限是在数据库中执行某种系统级别的操作,或者针对某一类的对象执行某种操作的权利。

例如:在数据库中创建表空间的权利,或者在数据库中创建表的权利,这些都属于系统权限。

常见的系统权限如下:

  • CREATE SESSION:链接到数据库
  • CREATE TABLE:创建表
  • CREATE VIEW:创建视图
  • CREATE SEQUENCE:创建序列

2. 对象权限

对象权限是指用户对数据库中具体对象所拥有的权限。

对象权限是针对某个特定的模式对象执行操作的权利。

只能针对模式对象未设置和管理对象权限,如数据库的表、视图、序列、存储过程、存储函数等。

Oracle数据库用户有两种途径获得权限:

(1) 管理员直接向用户授予权限。

(2) 管理员将权限授予角色,然后再将角色授予给一个或多个用户。

使用角色能够更加方便和高效地对权限进行管理,所以数据库管理员通常使用角色向用户授予权限,而不是直接向用户授予权限。

在Oracle数据库系统中预定义了很多的角色,其中最常用的有CONNECT角色、RESOURCE角色、DBA角色等等。

一般程序使用的用户只要授予CONNECT和RESOURCE两个角色即可。

DBA角色具有所有的系统权限,并且可以给其他用户、角色授权。由于DBA角色权限比较多,这里就不列出来了。

Oracle中常用的系统预定义角色如下:

  • CONNECT:需要连接上数据库的用户,特别是那些不需要创建表的用户,通常授予该角色。
  • RESOURCE:更为可靠和正式的数据库用户可以授予该角色,可以创建表、触发器、过程等。
  • DBA:数据库管理员角色,拥有管理数据库的最高权限,一个具有DBA角色的用户可以撤销任何别的用户甚至别的DBA权限,这是很危险的,所以不要轻易授予该角色。

(1) 授予权限语法如下:

  1. 1 GRANT 权限|角色 TO 用户名;

(2) 撤销权限的语法如下:

  1. 1 REVOKE 权限|角色 FROM 用户名;

实例:如何授予和撤销martin用户的CONNECT和RESOURCE两个角色:

  1. 1 GRANT connection,resource to martin; -- 授予CONNECTIONRESOURCE两个角色 2 REVOKE connection, resource FROM martin; -- 撤销CONNECTIONRESOURCE两个角色 3 GRANT SELECT ON SCOTT.emp TO martin; -- 允许用户查看emp表中的记录 4 GRANT UPDATE ON SCOTT.emp TO martin; -- 允许用户更新emp表中的记录

数据库用户安全设计原则:

  • 数据库用户权限授权按照最小分配原则;
  • 数据库用户要分为管理、应用、维护、备份四类用户;
  • 不允许使用sys和system建立数据库应用对象;
  • 禁止GRANT dba TO user。

Oracle 表空间和用户权限管理【转】的更多相关文章

  1. Oracle 表空间和用户权限管理

    一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...

  2. linux系统下创建oracle表空间和用户权限查询

    创建用户和表空间: 1.登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户) 2.以sysdba方式来打开sqlplus,命令 ...

  3. Oracle SQL 基本操作之 用户权限管理方法

     Oracle SQL 基本操作之 用户权限管理方法 最近把有关用户操作和权限管理的东西整理了一下,虽然不少博客都有过类似的整理,但是自己发现他们的内容或多或少都有些错误.于是,本人亲自对每条语句进行 ...

  4. Oracle表空间,用户,用户授权

    一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客“怎样玩转千万级 ...

  5. Oracle表空间概述及其基本管理

    最近在工作中遇到有同事对Oracle表空间的理解有问题,所以写了这篇文章.我会从概念,管理及特别需要关注的点等几个维度对表空间进行一些介绍.本文以介绍表空间为主,涉及到的其他概念不展开描述.有问题的地 ...

  6. Oracle 表空间、用户

    一.表空间 临时表空间 创建临时表空间范例 CREATE TEMPORARY TABLESPACE duke_temp /* 临时表空间名称:duke_temp */ tempfile 'C:\ora ...

  7. oracle 表空间,用户的创建及授权,表空间基本操作

    参考地址:https://www.cnblogs.com/zhaideyou/articles/5845271.html Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可 ...

  8. Linux下Oracle表空间及用户创建

    记录详细过程以备使用 Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as sys@i ...

  9. Oracle 表空间的创建与管理

    Oracle数据库创建之后有一些默认的表空间随之被创建,查询数据字典 dba_data_files 可以得到数据库当前的所有表空间信息. select * from v$tablespace; sel ...

随机推荐

  1. Web开发框架对比

    Web开发框架能极大地提升开发效率,下面对一些常用的框作一些更深层次的对比. JSF JSF不是极好的快速开发原型,代码生成不是内置功能,并且原型开发应用需要开发完整应用程序那么多的配置.这真的不是J ...

  2. 一步步学习Python-django开发-Mac下搭建Python-Django环境

    首先确定学习那一个版本,以之前对Python的接触,Python2.x 的版本仍然占据很大的市场.但作为初学者我还是决定学习新的版本,相信未来会逐渐转向3.x版本的. 其实搭建Python不是一件很难 ...

  3. S3C2440之IIC裸机驱动

    花了两天的时间终于把这个搞定了,其实I2C的原理还是比较简单的,只是几个细节性的东西还是需要特别的注意,主要是需要注意一下几点: 1.rIICCON &= ~0x10; 清中断必须要在rIIC ...

  4. 使用HttpURLConnection实现多线程下载

    HttpURLConnection继承了URLConnection,因此也可用于向指定网站发送GET请求.POST请求,而且它在URLConnection基础上提供了如下便捷方法: 实现多线程下载的步 ...

  5. 结构-行为-样式-Css笔记

     0.常见的行级元素和块级元素: 行级元素:div,table,form ,ul,ol,p,h1-h6,hr; 块级元素:a,select,input,textarea,img,label,br,i, ...

  6. MySQL分表

    一.概念 1.为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询 ...

  7. c#-委托,匿名方法,lambda表达的关系

    什么是委托: 包含单个方法的委托和函数指针是相似的,不同的是,委托是面向帝乡的并且是类型安全的 声明委托类型: delegate void mydel(int x); 声明委托和声明方法差不多,两个不 ...

  8. 如何在标题栏的title前添加网站logo

    之前在哪个网上看到的,今天没事给写下来了: 1.将像素大小为16*16的图片命名为 favicon.ico,(图片使用的颜色好像不能超过16色),放到网站根目录下就可以了; 2.在head标签中添加代 ...

  9. .net在网页中生成二维码和条形码

    二维码: 1.下载ThoughtWorks.QRCode.dll文件 2.创建Web项目,添加引用刚才下载的文件 3.在项目中添加aspx窗体,编写代码如下 <%@ Page Language= ...

  10. 【CSS学习笔记】字体的控制

    关于font-family: "无衬线体"(Sans-serif),比如黑体,微软雅黑 "有衬线体"(Serif),比如宋体,新宋 程序员设置的字体,客户电脑上 ...