创建数据库、创建表空间和用户权限管理

版权声明:原创内容是本人学习总结,仅限学习使用,禁止用于其他用途。如有错误和不足,欢迎评论指正补充。 https://blog.csdn.net/qian_qian_123/article/details/82792380

一、创建数据库

一般来说,在安装Oracle时会提示自动创建一个数据库,当然也可以在安装完成后,自己在动手创建一个数据库。

对于Oracle而言,创建数据库有两种方法,一种是通过图形界面,也就是Oracle数据库中的配置助手DBCA完成;另一种是在命令环境下使用CREATE DATABASE命令。

二、用SQL语言创建表空间

表空间是Oracle特殊的发明。从物理上讲,表空间由一个或多个数据文件组成;从逻辑上讲,是数据库中最大的逻辑单位,可进一步划分为小的逻辑存储单元。一个Oracle数据库至少包含一个表空间。

1、数据库存储结构的组成

数据库主要用于存储和检索相关信息。Oracle数据库包含逻辑结构物理结构。数据库的物理结构包含数据库中的一组操作系统文件。数据库的逻辑结构是指数据库创建之后形成的逻辑概念之间的关系。表空间就是数据库逻辑组件。一个表空间向上可以存放各种应用对象,如表,索引;向下由多个数据库文件组成。

表空间在Oracle 11g中被分为以下3类:

(1)永久性表空间:一般保存基表、视图、过程和索引等数据。SYSTEM、SYSAUX、USERS、EXALPLE表空间是默认安装的。

(2)临时性表空间:只用于保存系统中短期活动的数据,如排序数据等。

(3)撤销表空间:用来帮助回退未提交的事务数据,已提交了的数据在这里是可以恢复的。

一般不需要建临时和和撤销表空间,除非把它们转移到其他磁盘中以提高性能。

表空间的目的:

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

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

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

Oracle 11g版本默认创建的主要表空间:

(1)SYSTEM表空间:用于存放Oracle系统内部表和数据字典的数据,如表名、列名、用户名等。不建议将用户创建的表、索引等对象存放到SYSTEM表空间中。

(2)SYSAUX表空间:用于存放Oracle系统内部的常用样例用户的对象。一般不存储用户的数据,由Oracle系统内部自动维护。

(3)撤销表空间:用于存放撤销信息的表空间

当我们对数据库表的数据进行增加、删除、修改时,Oracle系统自动使用撤销表空间来临时存放修改前的数据。当所做的修改操作完成并提交后,Oracle系统可根据需要保留修改前数据时间长短来释放表空间的部分空间。一般在创建Oracle实例后,Oracle会自动创建一个名为UNDOTBS1的撤销表空间。

(4)USERS表空间:Oracle建议用户使用的表空间,可以在这个表空间上创建各种对象,如创建表、索引等、Oracle的基本样例用户SCOTT的对象就存放在USERS表空间中。

(5)TEMP表空间:用于存放临时数据的特殊表空间。例如:当操作中需要进行排序时,Oracle系统就将排序的数据临时放到该表空间内。排序处理完成后即可释放排序数据所占用的空间,因此称之为临时表空间。

2、SQL语言介绍

SQL语言是高级的结构化查询语言;

用户使用SQL语句进行数操操作时。只需要提出“做什么”,而不必指名“怎么做”,具体的执行过程由系统自动完成,大大减轻了用户负担;

是沟通数据库服务器和客户端的重要工具;

用于存取数据以及查询、更新和管理关系型数据库系统。

经过多年的发展,SQL语言已经成为关系型数据库的标准语言。SQL支持如下类别的命令:

>>>数据定义语言(DDL):CREATE(创建)、ALTER(更改)、DROP(删除)命令。

>>>数据操作语言(DML):INSERT(插入)、SELECT(选择)、DELETE(删除)、UPDATE(更新)命令。

>>>数据控制语言(DCL):GRANT(授予)、REVOKE(回收)命令。

>>>事务控制语言(TCL):COMMIT(提交)、SAVEPOINT(保存点)、ROLLBACK(回滚)命令。

3、创建表空间

语法:

CREATE TABLESPACE tablespaceName--表空间名称
DATAFILE 'fileName'--指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔
SIZE INTEGER K/M--指定文件的大小,用K表示千字节大小,用M指定兆字节大小
AUTOEXTEND OFF/ON;--启用或禁用数据文件的自动扩展,设置为OFF时很容易造成表空间剩余容量为0的情况,造成数据不能存放到数据库中

创建完表空间后,可以对表空间进行相应的管理,主要包括以下操作:

(1)调整表空间大小

ALTER DATABASE DATAFILE '<数据文件全路径>' RESIZE <新的大小>;

(2)改变表空间的读写状态

ALTER TABLESPACE <表空间名> READ WRITE;--使表空间可读写
ALTER TABLESPACE <表空间名> READ ONLY;--使表空间为只读

(3)删除表空间

ALTER TABLESPACE tablespaceName;

三、创建用户并分配权限

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

(1)SYS

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

SY用户主要用来维护系统信息和管理实例。SYS用户只能以SYSOPER或SYSDBA角色登录系统。

(2)SYSTEM

SYSTEM用户是Oracle中默认的系统管理员,拥有DBA权限。该用户拥有Oracle管理工具使用的内部表和视图。通常通过SYSTEM用户管理Oracle数据库的用户,权限和存储等。

不建议在SYSTEM模式中创建用户表。SYSTEM用户不能以SYSOPER和SYSDBA角色登录系统,只能以默认方式登录。

(3)SCOTT

SCOTT用户是Oracle数据库的一个示范账户,一般在数据库安装时创建。SCOTT用户模式包含4个示范表。使用USER表空间存储模式对象。

1、创建用户

通常情况下,出于安全考虑,对于不同的数据表需要不同的访问权限,此时,就需要创建不同的用户。Oracle中的CREATE USER命令用于创建新用户。每个用户都有一个默认表空间和一个临时表空间。如果没有指定,Oracle就将USER设为默认表空间,将TEMP设为临时表空间。在Oracle 11g 版本中,用户可以修改默认表空间,一旦修改了默认表空间,则创建用户时如果没有指定表空间,则修改后的表空间为用户默认表空间。

CREATE USER zhang--用户名
IDENTIFIED BY 123456--密码
DEFAULT TABLESPACE tablespaceName1--设置默认表空间
TEMPORARY TABLESPACE tablespaceName2; --设置临时表空间 

创建新口令:

ALTER zhang IDENTIFIED BY 654321;--更改登录密码

删除一个用户时,若用户模式中包含模式对象,则所有这些对象也将立即删除。Oracle中的DROP USER命令可用于删除用户,当用户拥有模式对象时必须使用CASCADE选项以删除模式对象。以下代码演示了如何删除用户:

DROP USER zhang CASCADE;--删除表空间和其中的模式对象

2、数据库权限管理

权限是用户对一项功能的执行权利。在Oracle中,根据系统管理方式的不同。权限分为系统权限与对象权限两类。

(1)系统权限

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

系统权限是在数据库中执行某种系统级别的操作,或者针对某一类的对象执行某种操作的权利。例如,在数据库中创建表空间的权利,在数据库中创建表的权利,这些都属于系统权限。

常见系统权限如下:

CREATE SESSION:连接到数据库

CREATE TABLE:创建表

CREATE VIEW:创建视图

CREATE SEQUENSE:创建序列

(2)对象权限

对象权限是指用户对具体的数据库中的对象所拥有的权限。对象权限是针对某个特定的模式对象执行操作的权利。只能针对模式对象来设置和管理对象权限。包括数据库中的表、视图、序列、存储过程、存储函数等。例如,对某个表的数据进行操作,对存储过程的执行操作等。

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

(1)系统管理员直接向用户授予权限;

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

使用角色能更加方便和高效地对权限进行管理,所以数据库管理员应该习惯于使用角色向用户授予权限,而不是直接向用户授予权限。在Oracle中数据库系统中预定义了很多的角色,其中常用的主要有CONNECT角色和RESOURSE角色、DBA角色等。一般程序员使用的用户只要授予CONNECT和RESOURSE两个角色即可。DBA角色具有所有的系统权限,并且可以给其他用户、角色授权。

授予权限语法:

GRANT 权限|角色 TO 用户名;

撤销权限语法:

REVOKE 权限|角色 FROM 用户名;

猜你喜欢

转载自blog.csdn.net/qian_qian_123/article/details/82792380