实验2:Oracle用户及权限管理

实验介绍了如何在Oracle中创建新角色con_res_role,包含connect,resource和CREATEVIEW权限,并为用户sale分配空间及角色。sale用户成功创建表、视图,且能被hr用户查询。实验展示了角色简化权限管理的作用。
摘要由CSDN通过智能技术生成

实验2:Oracle用户及权限管理

  • 学号:111,姓名:XXX,班级:

实验目的

掌握用户管理、角色管理、权根维护与分配的能力,掌握用户之间共享对象的操作技能。

实验内容

Oracle有一个开发者角色resource,可以创建表、过程、触发器等对象,但是不能创建视图。本训练要求:

  • 在pdborcl插接式数据中创建一个新的本地角色con_res_role,该角色包含connect和resource角色,同时也包含CREATE VIEW权限,这样任何拥有con_res_role的用户就同时拥有这三种权限。
  • 创建角色之后,再创建用户sale,给用户分配表空间,设置限额为50M,授予con_res_role角色。
  • 最后测试:用新用户sale连接数据库、创建表,插入数据,创建视图,查询表和视图的数据。

实验步骤

对于以下的对象名称con_res_role,sale,在实验的时候应该修改为自己的名称。

  • 第1步:以system登录到pdborcl,创建角色con_res_role和用户sale,并授权和分配空间:

SQL*Plus: Release 12.2.0.1.0 Production on 星期二 418 16:30:20 2023

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

上次成功登录时间: 星期二 307 2023 16:25:59 +08:00

连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> CREATE ROLE con_res_role;

角色已创建。

SQL> GRANT connect,resource,CREATE VIEW TO con_res_role;

授权成功。

SQL> CREATE USER sale IDENTIFIED BY 123 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;

用户已创建。

SQL> ALTER USER sale default TABLESPACE "USERS";

用户已更改。

SQL> ALTER USER sale QUOTA 50M ON users;

用户已更改。

SQL> GRANT con_res_role TO sale;

授权成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AcHQ0Ezv-1681867481334)(./a1.png)]

语句“ALTER USER sale QUOTA 50M ON users;”是指授权sale用户访问users表空间,空间限额是50M。

  • 第2步:新用户sale连接到pdborcl,创建表customers和视图customers_view,插入数据,最后将customers_view的SELECT对象权限授予hr用户。
$ sqlplus sale/123@pdborcl
SQL> show user;
USER"SALE"
SELECT * FROM session_privs;
SELECT * FROM session_roles;

PRIVILEGE
----------------------------------------
CREATE SESSION
CREATE TABLE
CREATE CLUSTER
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
SET CONTAINER

已选择 11 行。

SQL> 
ROLE
--------------------------------------------------------------------------------
CON_RES_ROLE
CONNECT
RESOURCE
SODA_APP

CREATE TABLE customers (id number,name varchar(50)) TABLESPACE "USERS" ;
INSERT INTO customers(id,name)VALUES(1,'zhang');
INSERT INTO customers(id,name)VALUES (2,'wang');
CREATE VIEW customers_view AS SELECT name FROM customers;
GRANT SELECT ON customers_view TO hr;
SELECT * FROM customers_view;

表已创建。

SQL> 
已创建 1 行。

SQL> 
已创建 1 行。

SQL> 
视图已创建。

SQL> 
授权成功。

SQL> 
NAME
--------------------------------------------------
zhang
wang

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyRAO0sr-1681867481336)(./a2.png)]

  • 第3步:用户hr连接到pdborcl,查询sale授予它的视图customers_view
$ sqlplus hr/123@pdborcl
SQL> SELECT * FROM sale.customers;
SELECT * FROM sale.customers
                   *1 行出现错误:
ORA-00942: 表或视图不存在


SQL> SELECT * FROM sale.customers_view;

NAME
--------------------------------------------------
zhang
wang

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKmWLwSU-1681867481336)(./a3.png)]

测试一下用户hr,sale之间的表的共享,只读共享和读写共享都测试一下。

数据库和表空间占用分析

当实验做完之后,数据库pdborcl中包含了新的角色con_res_role和用户sale。
新用户sale使用默认表空间users存储表的数据。
随着用户往表中插入数据,表空间的磁盘使用量会增加。

查看数据库的使用情况

以下样例查看表空间的数据库文件,以及每个文件的磁盘占用情况。

$ sqlplus system/123@pdborcl
SQL> SELECT tablespace_name,FILE_NAME,BYTES/1024/1024 MB,MAXBYTES/1024/1024 MAX_MB,autoextensible FROM dba_data_files  WHERE  tablespace_name='USERS';

TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
	MB     MAX_MB AUT
---------- ---------- ---
USERS
/home/oracle/app/oracle/oradata/orcl/pdborcl/users01.dbf
	 5 32767.9844 YES


SELECT a.tablespace_name "表空间名",Total/1024/1024 "大小MB",
 free/1024/1024 "剩余MB",( total - free )/1024/1024 "使用MB",
 Round(( total - free )/ total,4)* 100 "使用率%"
 from (SELECT tablespace_name,Sum(bytes)free
        FROM   dba_free_space group  BY tablespace_name)a,
       (SELECT tablespace_name,Sum(bytes)total FROM dba_data_files
        group  BY tablespace_name)b
  8   where  a.tablespace_name = b.tablespace_name;

表空间名                           大小MB     剩余MB     使用MB    使用率%
------------------------------ ---------- ---------- ---------- ----------
SYSAUX				      440    94.8125   345.1875      78.45
UNDOTBS1			      100	  35	     65 	65
USERS					5     3.9375	 1.0625      21.25
SYSTEM				      260     7.8125   252.1875 	97

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c8YLbRvO-1681867481337)(./a4.png)]

  • autoextensible是显示表空间中的数据文件是否自动增加。
  • MAX_MB是指数据文件的最大容量。

实验结束,删除用户和角色

$ sqlplus system/123@pdborcl
SQL>
drop role con_res_role;
drop user sale cascade;

实验结论

  • 用户创建后不能直接登录数据库及对数据库进行操作,需要赋予用户一定的权限才可以进行相应的操作。
  • 角色是一组相关权限的命名集合,使用角色最主要的目的是简化权限管理。将一组权限打包到角色中,赋权时可直接将角色赋予用户,代表将角色下得所有权限都赋予了用户,简化了赋权操作
  • 权限分为两类
    • 系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
    • 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等
  • 通过这次实验,我了解到了Oracle中的一些有关用户操作的功能,例如用户管理、角色管理、权根维护与分配的能力,在实验过程中我还掌握了用户之间共享对象的操作技能。在实验完成后,能够独自完成一些简单的oracle数据库用户操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值