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 创建表插入数据