Lab 2 : Oracle Authorization

1.准备

本实验假定您已安装docker并设置了oracle容器,如“ Oracle Docker Overview”实验中所示。 此外,还应下载SQL Developer

如果Oracle docker容器当前未运行,请启动它

docker run --name oracle-xe -d -p 51521:1521 -v oracle_vol:/opt/oracle/oradata kamiljedrzejuk/oracle18c-xe-initialized

 

2.创建可插拔数据库

在命令提示符下,启动到Oracle docker容器的交互式shell

docker exec -it oracle-xe /bin/sh

设置SQL plus路径

echo "export PATH=$PATH:$ORACLE_HOME/bin/">/home/oracle/.bashrc

以sys帐户启动SQLPlus

su oracle 
sqlplus / as sysdba

创建一个名为SALESPDB的可插拔数据库。 我们将SEED可插拔数据库(/ opt / oracle / oradata / XE / pdbseed)用作创建新鲜可插拔数据库的模板,并指定新PDB的数据文件位于/ opt / oracle / oradata / XE / SALESPDB在容器内。

CREATE PLUGGABLE DATABASE SALESPDB ADMIN USER salesadm IDENTIFIED BY oracle FILE_NAME_CONVERT ('/opt/oracle/oradata/XE/pdbseed','/opt/oracle/oradata/XE/SALESPDB');

创建PDB后检查状态。 您可以使用sqlplus中的column命令将“名称”列的列宽格式设置为30个字符宽

column name format a30 
select name, open_mode FROM v$PDBS;

 执行以下语句以打开PDB进行读写

ALTER PLUGGABLE DATABASE salespdb open;

 

3.在SALESPDB下创建表空间

在SQL Developer中以系统用户身份登录。 更改为可插入数据库SALESPDB

alter session set container=SALESPDB;

 显示表空间

select tablespace_name from dba_tablespaces;

新建表空间USERS

CREATE TABLESPACE USERS DATAFILE '/opt/oracle/oradata/XE/SALESPDB/users.dbf' SIZE 1m ;

现在,USERS表空间将出现在可插入数据库SALESPDB的dba_tablespaces中。

The USERS tablespace will now appear in dba_tablespaces inside the pluggable database SALESPDB.

 

 显示与创建的表空间关联的数据文件

select file_name, tablespace_name from DBA_DATA_FILES;

 

4.用户和特权

4.1创建用户mickey

作为系统用户,使用创建的表空间作为默认表空间,用密码“ mickey”创建用户“ mickey”

create user mickey identified by mickey default tablespace users temporary tablespace temp;

4.2登录Mickey

在主机计算机上打开命令提示符,尝试使用sqlplus以micky身份登录

sqlplus mickey/mickey@localhost:51521/SALESPDB

 “ mickey”帐户当前没有“创建会话”权限。

4.3授予创建会话系统特权

作为SYSTEM用户,向micky授予权限

grant create session to mickey ;

通过查询DBA_SYS_PRIVS视图显示授予的系统特权

select * from DBA_SYS_PRIVS where GRANTEE = 'MICKEY';

4.4以Micky身份登录

在主机的命令提示符下,尝试再次以mickey身份登录。 登录应该成功。但是创建表时权限不足

4.5将资源分配给Micky

以系统用户身份,显示与“ RESOURCE”角色相关联的系统特权。

select * from dba_sys_privs where grantee='RESOURCE';

将资源角色授予Mickey

验证角色已成功授予Mickey

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'MICKEY';

验证角色已成功授予Mickey

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'MICKEY';

让user拥有修改表和数据的权利

grant RESOURCE to mickey;
ALTER USER mickey quota 1M on USERS;
grant unlimited tablespace to mickey;

4.6 创建表插入数据

 

posted @ 2020-10-18 23:28  Heinrich♣  阅读(308)  评论(0编辑  收藏  举报