Oracle基础——第四章 用户管理及表空间

时间:2023-01-01 09:32:49

本章目标

 

数据库用户管理

数据库权限管理

数据库存储结构

 

数据库用户管理

 

1.        创建用户

a)        语法

 

可以使用CREATE USER语句创建用户

语法如下

CREATE USER user_name IDENTIFIED BY password

[DEFAULT TABLESPACE default_tablespace]

[TEMPORARY TABLESPACE temporary_tablespace];

说明

user_name:创建的用户名

password:用户密码

default_tablespace:用户的默认表空间,用于储存数据库对象。如果忽略此参数,则默认存储到SYSTEM表空间

temporary_tablespace:是临时对象默认存储的表空间,包括临时表。如果忽略此参数,则默认存储到SYSTEM表空间

             

b)        案例

创建jason用户

CREATE USER jason IDENTIFIED BY price;

创建用户,指定默认表空间和临时表空间

CREATE USER henry IDENTIFIED BY hooray

DEFAULT TABLESPACE users

TEMPORARY TABLESPACE temp;

2.        给用户授权

a)        如果想让用户在数据库里完成一些任务,需要相应的给用户授予权限

                        i.              如果想让用户连接到数据库,必须授予用户CREATE SESSION的系统权限。

                      ii.              授权必须通过一些特殊用户授权(例如SYSTEM),通过GRANT语句来完成

                    iii.              例如,给用户jason授予CREATE SESSION的权利

GRANT CREATE SESSION TO jason;

b)        下面再创建几个用户,以便后面使用

                        i.              CREATE USER steve IDENTIFIED BY button;

                      ii.              CREATE USER gail IDENTIFIED BY seymour;

                    iii.              GRANT CREATE SESSION TO steve, gail;

3.        修改用户密码

a)        可以使用ALTER USER语句修改用户密码

                        i.              例如,修改用户jason密码为marcus

ALTER USER jason IDENTIFIED BY marcus;

b)        可以通过PASSWORD命令修改当前登录用户的密码

                        i.              例如,jason用户登录之后,使用PASSWORD修改密码

CONN jason/marcus

PASSWORD

c)        执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

4.        查询用户

a)        在Oracle数据库中,可以通过DBA_USERS查询出包含与用户和用户特征相关的信息

b)       DBA_USERS包含用户名、加密的密码、账户状态以及默认的表空间

c)        例如

SELECT username,user_id,password,default_tablespace

FROM dba_users;

d)        查询结果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

5.        删除用户

a)        可以使用DROP USER语句对用户进行删除操作

                        i.              例如,删除jason用户

DROP USER jason;

                      ii.              执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

                    iii.              注意事项

在删除用户时,如果用户架构包含对象(如,表),那么在删除用户的时候可以在DROP USER语句的用户名后面使用CASCADE关键字进行级联删除。但是需要注意是的是,要确保用户中的这些对象没有其他用户还需要访问。

 

数据库权限管理

1.        系统权限

a)        拥有相关权限可以运行用户在数据库中完成相关操作,如执行DDL语句。

比如,如果用户需要创建表的话,那么就需要有CREATE TABLE的系统权限。

b)        权限可以组合在一起形成相关不同的角色。两个比较有用的角色是CONNECTRESOURCE角色

                        i.              CONNECT角色:允许用户连接数据库

                      ii.              RESOURCE角色:允许用户创建相关的数据库对象,如表、序列等

2.        常用系统权限

 

Oracle基础——第四章 用户管理及表空间

3.        给用户授权

a)        可以使用GRANT语句给用户授权

例如,给steve用户授予相关系统权限

GRANT CREATE SESSION, CREATE USER, CREATE TABLE TO steve;

执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

b)        可以使用WITH ADMIN OPTION选项允许用户将权限授予其他用户,例如,给steve用户授予相关权限并使用此选项

GRANT EXECUTE ANY PROCEDURE

TO steve WITH ADMIN OPTION;

说明

由于使用了WITH ADMIN OPTION,此时steve不仅拥有了EXECUTE ANY PROCEDURE权限,而且还可以将此权限授予其他用户

例如,steveEXECUTE ANY PROCEDURE权限授予gail

CONNECT steve/button

GRANT EXECUTE ANY PROCEDURE TO gail;

 

Oracle基础——第四章 用户管理及表空间

4.        查看给用户授权情况

a)        可以通过user_sys_privs视图查看给用户的授权情况

b)       user_sys_privs视图相关列

                        i.              username

当前用户

                      ii.              privilege

用户拥有的权利名称

                    iii.              admin_option

用户是否可以将该权利授予其他用户

c)        登录steve用户,查看其拥有系统权限情况

CONNECT steve/button

SELECT *

FROM user_sys_privs

ORDER BY privilege;

执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

5.        撤销系统权限

a)        可以使用REVOKE撤销用户的相关系统权限

b)        例如,撤销steveCREATE TABLE的权限

REVOKE CREATE TABLE FROM steve;

c)        撤销steveEXECUTE ANY PROCEDURE权限

REVOKE EXECUTE ANY PROCEDURE FROM steve;

d)        再次查看gail拥有的权限

 

Oracle基础——第四章 用户管理及表空间

e)        说明

虽然撤销了steve EXECUTE ANY PROCEDURE权限,但是steve之前授予给gailEXECUTE ANY PROCEDURE权限仍然保留

6.        对象权限

a)        对象权限允许用户执行某些数据库对象操作,如表上执行DML语句

比如,store.products表上的INSERT权限,允许用户对products表进行插入数据的操作

b)        常见对象权限如下所示

 

Oracle基础——第四章 用户管理及表空间

7.        将对象权限授予用户

a)        使用GRANT可以将对象权限授予用户

b)        例如,授予steveproducts表上的SELECTINSERTUPDATE的对象权限和在employees表上的SELECT对象权限

GRANT SELECT, INSERT, UPDATE ON store.products TO steve;

GRANT SELECT ON store.employees TO steve;

c)        授予steve更新last_name列和salary列的权限

GRANT UPDATE (last_name, salary) ON store.employees TO steve;

d)        在授予对象权限给用户的同时,也可以设置允许被授权用户将权限授予其他用户,例如给steve授予customers表的SELECT权限

GRANT SELECT ON store.customers

TO steve WITH GRANT OPTION;

e)       stevegail授予customers表的SELECT权限

CONNECT steve/button

GRANT SELECT ON store.customers TO gail;

8.       user_tab_privs_made视图

a)        可以通过user_tab_privs_made视图查看用户授予他人的表权限。视图相关列描述:

grantee:被授权者

table_name:表名

grantor:授权者

privilege:对象权限名称

grantable:被授权者是否能给其他用户授予该权限

hierarchy:该权限是否形成层次关系

b)        例如

SELECT *

FROM user_tab_privs_made

WHERE table_name = 'PRODUCTS';

c)        执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

9.       user_col_privs_made视图

a)        可以通过user_col_privs_made视图查看用户授予他人的列权限。视图相关列如下

grantee:被授权者

table_name:表名

column_name:列名

grantor:授权者

privilege:权限名

grantable:被授权者是否能够给其他用户授予该权限

b)        例如

SELECT *

FROM user_col_privs_made;

c)        执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

10.    user_tab_privs_recd视图

a)        可以通过user_tab_privs_recd视图查看用户获得的表权限。视图相关列如下

owner:对象的拥有者

table_name:被授权的对象名

grantor:授权者

privilege:对象权限名

grantable:是否允许该权限拥有者给其他用户授予此权限

hierarchy:该权限是否形成层次关系

b)        例如

CONNECT steve/button

SELECT *

FROM user_tab_privs_recd

ORDER BY privilege;

c)        执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

11.    user_col_privs_recd视图

a)        可以通过user_col_privs_recd视图查看用户获得的列权限。视图相关列如下

owner:拥有该对象的用户

table_name:权限所在的表名

column_name:权限所在的列名

grantor:授权者

privilege:权限名

grantable:该权限的拥有者是否能给其他用户授予该权限

b)        例如

CONN steve/button

SELECT *

FROM user_col_privs_recd;

c)        执行效果如下图所示

 

Oracle基础——第四章 用户管理及表空间

12.    撤销对象权限

a)        使用REVOKE撤销对象权限

                        i.              例如,撤销steve用户在products表上的INSERT权限

CONNECT store/password

REVOKE INSERT ON products FROM steve;

                      ii.              执行效果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

                    iii.              撤销steve用户对于customers表的SELECT权限

REVOKE SELECT ON store.customers FROM steve;

                     iv.              说明

当撤销steve用户对customers表上的SELECT权限,那么之前steve授予gail的该权限也被撤销

 

数据库存储结构

 

1.        数据库存储结构概念

a)        数据库存储结构包括两部分

                        i.              逻辑存储结构

Oracle数据库的逻辑部分包括表空间(tablespace)、方案(schema)对象、段(segment)、区间(extent)和数据块(data block)等。数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段组成,段由区组成,区由数据块组成。

                      ii.              物理存储结构

Oracle数据库中的数据最终是保存在物理文件中的,包括用户数据、系统管理数据和日志数据等。每个物理文件由数据块组成,主要包括数据文件、控制文件和日志文件三类文件。这些文件为数据提供真正的物理存储。

2.        逻辑存储结构

 

Oracle基础——第四章 用户管理及表空间

3.        物理存储结构

 

Oracle基础——第四章 用户管理及表空间

4.        表空间

a)        数据库可以分为若干个逻辑存储单元,这些存储单元被称为表空间。

                        i.              每个数据库都至少有一个系统表空间(SYSTEM表空间)

                      ii.              创建表时,需要定义保存表的表空间。

b)       Oracle的表空间

 

Oracle基础——第四章 用户管理及表空间

                        i.              大文件表空间

大文件表空间可以包含一个单独的大文件,是为超大数据库设计的,使用大数据文件可以减少文件的数量,从而减少更新时间

                      ii.              SYSTEM表空间

每个Oracle数据库都包含一个SYSTEM表空间,当数据库创建时,SYSTEM表空间会自动创建。

当数据库打开时,SYSTEM表空间始终在线。

SYSTEM表空间包含整个数据库的数据字典还有一些PL/SQL程序单元

                    iii.              SYSAUX表空间

数据库组件将SYSAUX表空间作为存储数据的默认位值,因此当数据库创建或升级时,SYSAUX表空间会自动创建。SYSAUX表空间不允许被删除,也不允许对其进行改名操作

                     iv.              Undo表空间

每个数据库都可以包含多个undo表空间。在自动撤销各类模式中,每个Oracle实例都指定(且只有一个)undo表空间。撤销的数据在undo表空间中使用undo区间来管理

                       v.              临时表空间

临时表空间用于存储临时数据,例如SQL语句执行排序操作时会创建临时数据。当数据库创建时将得到一个临时表空间。TEMP表空间是默认的临时表空间

5.        在SQL*Plus中查看表空间信息

a)        使用SYSSYSDBA的身份登录SQL*Plus,视图V$TABLESPACE可以显示控制文件中的表空间信息

SELECT *

FROM v$tablespace;

查询结果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

b)        也可以访问视图DBA_TABLESPACE,获取并显示所有表空间的属性和在线状态信息

 SELECT TABLESPACE_NAME,CONTENTS,STATUS

FROM DBA_TABLESPACES;

查询结果如下图所示:

 

Oracle基础——第四章 用户管理及表空间

6.        表空间状态

a)        可以读写状态

用户可以读写表空间

b)        只读状态

用户只能读取表空间数据,不能写入。当用户不希望对数据库修改时可以设置为只读状态

c)        脱机状态

在此状态下,用户不能访问。这种状态用于控制表空间维护或要恢复与表空间对应的数据文件

7.        修改表空间的状态

a)        可以使用ALTER TABLESPACE命令修改表空间的状态,语法如下

ALTER TABLESPACE <tbl_name> [ONLINE|OFFLINE|READ ONLY|READ WRITE]

例如,将表空间EXAMPLE设置为脱机状态

ALTER TABLESPACE example OFFLINE;

通过视图查看表空间的状态

 

Oracle基础——第四章 用户管理及表空间

b)        可以使用以下命令把表空间EXAMPLE设置为不同的状态

设置为在线状态ONLINE

ALTER TABLESPACE example ONLINE;

设置为只读状态READ ONLY

ALTER TABLESPACE example READ ONLY;

设置为读写状态READ WRITE

ALTER TABLESPACE example READ WRITE;

c)        系统表空间、撤销表空间和临时表空间不能被设置为脱机状态。

8.        创建表空间

a)        创建表空间的语法如下

CREATE TABLESPACE tablespacename

DATAFILE 'filenane' [SIZE integer [K|M]]

[AUTOEXTEND [OFF|ON]]

b)        说明

tablespacename:需要创建表空间的名称

DATAFILE:指定组成表空间的一个或多个数据文件,当有多个数据文件时使用逗号分隔

filenane:是表空间中数据文件的路径和名称

SIZE:用来指定文件的大小,用K表是千字节大小,M表示兆字节大小

AUTOEXTEND:用来启用或禁用数据文件的自动扩展

c)        案例

                        i.              创建名称为STORE的表空间

CREATE TABLESPACE STORE

DATAFILE 'D:\ORACLE11G\STORE.MDB' SIZE 5M;

9.        删除表空间

a)        使用DROP TABLESPACE语句删除表空间

DROP TABLESPACE  <tablespacename>

b)        例如,删除store表空间

DROP TABLESPACE store

INCLUDING CONTENTS AND DATAFILES;

本章总结

 

数据库用户管理

数据库权限管理

数据库存储结构

 

 

Oracle基础——第四章 用户管理及表空间 Oracle基础——第四章 用户管理及表空间  Oracle基础——第四章 用户管理及表空间
@Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]