12C R2 公用用户和本地用户的创建和授权

3 篇文章 0 订阅

公有用户是cdb级的,本地用户跟原来11g版本的用户是一致的没有变化下面示例说明创建公有用户的注意事项
创建公有用户需要以下几点
1、注意parameter common_user_prefix的值,这个参数可以修改,但一般不建议修改
show parameter common_user_prefix的前缀
实际创建用户时用C##和c##都可以,实际是C##
2、关键字container
container=all 指定为公有账户
container=current指定为本地账户

不满足这两个前提我们来创建用户
1)不带前缀
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter common

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
common_user_prefix                   string      C##
SQL> create user bcd identified by bcd account unlock;
create user bcd identified by bcd account unlock
            *
第 1 行出现错误:
ORA-65096: 公用用户名或角色名无效
2)container=current的情况
SQL> create user c##bcd identified by bcd account unlock container=current;
create user c##bcd identified by bcd account unlock container=current
            *
第 1 行出现错误:
ORA-65094: 本地用户名或角色名无效
3)带前缀,带container=all
SQL> create user c##bcd identified by bcd account unlock container=all;

用户已创建。
注意在cdb中 container=all是可以忽略的(默认)
SQL> create user c##abc identified by abc account unlock;

用户已创建。
3授权create session问题
4)只连接cdb问题
cdb$root
grant create session to c##abc; 默认container=current
SQL> grant create session to c##abc;

授权成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

GRANTE PRIVILEGE                                ADM COM INH
------ ---------------------------------------- --- --- ---
C##ABC CREATE SESSION                           NO  NO  NO

SQL> grant create session to c##abc;

授权成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

GRANTE PRIVILEGE                                ADM COM INH
------ ---------------------------------------- --- --- ---
C##ABC CREATE SESSION                           NO  NO  NO
SQL>  CONN C##ABC/abc@10.24.11.30:1521/orapdb
ERROR:
ORA-01045: 用户 C##ABC 没有 CREATE SESSION 权限; 登录被拒绝


警告: 您不再连接到 ORACLE。

5)只连接pdb问题
orapdb
grant create session to c##abc; 默认container=current
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> revoke create session from c##abc;

撤销成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

未选定行

SQL> alter session set container=orapdb;

会话已更改。

SQL> grant create session to c##abc;

授权成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

GRANTE PRIVILEGE                                ADM COM INH
------ ---------------------------------------- --- --- ---
C##ABC CREATE SESSION                           NO  NO  NO
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> revoke create session from c##abc;

撤销成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

未选定行

SQL> alter session set container=orapdb;

会话已更改。

SQL> grant create session to c##abc;

授权成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

GRANTE PRIVILEGE                                ADM COM INH
------ ---------------------------------------- --- --- ---
C##ABC CREATE SESSION                           NO  NO  NO
C:\Users\Administrator>sqlplus c##abc/abc@10.24.11.30:1521/oradb

SQL*Plus: Release 12.2.0.1.0 Production on 星期四 5月 30 10:45:00 2019

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

ERROR:
ORA-01045: 用户 C##ABC 没有 CREATE SESSION 权限; 登录被拒绝


请输入用户名:

6)既能连接cdb又能连接pdb
grant create session to c##abc container=all;

SQL> alter session set container=orapdb;

会话已更改。

SQL> revoke create session from c##abc;

撤销成功。
SQL> alter session set container=cdb$root;

会话已更改。

SQL> grant create session to c##abc container=all;

授权成功。

SQL> select * from dba_sys_privs where grantee='C##ABC';

GRANTE PRIVILEGE                                ADM COM INH
------ ---------------------------------------- --- --- ---
C##ABC CREATE SESSION                           NO  YES NO
注意com列的值,详细资料建议访问官网查看详细解释
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/DBA_SYS_PRIVS.html#GUID-384E578D-6506-4419-B943-612A7CF3465F


C:\Users\Administrator>sqlplus c##abc/abc@10.24.11.30:1521/orapdb

SQL*Plus: Release 12.2.0.1.0 Production on 星期四 5月 30 10:50:10 2019

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

上次成功登录时间: 星期四 5月  30 2019 10:49:48 +08:00

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

SQL> show con_name

CON_NAME
------------------------------
ORAPDB
SQL> show user
USER 为 "C##ABC"
C:\Users\Administrator>sqlplus c##abc/abc@10.24.11.30:1521/oradb

SQL*Plus: Release 12.2.0.1.0 Production on 星期四 5月 30 10:50:54 2019

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

上次成功登录时间: 星期四 5月  30 2019 10:50:11 +08:00

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

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> show user
USER 为 "C##ABC"

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是创建表空间、用户、目录及授权的详细步骤: 1. 创建表空间 在Oracle 12C中,创建表空间可以使用如下语句: ```sql CREATE TABLESPACE 表空间名 DATAFILE '数据文件路径' SIZE 初始大小 AUTOEXTEND ON NEXT 扩展大小 MAXSIZE 最大大小; ``` 例如,创建名为test_ts的表空间,数据文件路径为E:\oracle\oradata\XE\test_ts.dbf,初始大小为100M,扩展大小为10M,最大大小为500M,可以使用如下语句: ```sql CREATE TABLESPACE test_ts DATAFILE 'E:\oracle\oradata\XE\test_ts.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M; ``` 2. 创建用户 在Oracle 12C中,创建用户可以使用如下语句: ```sql CREATE USER 用户名 IDENTIFIED BY 密码 DEFAULT TABLESPACE 表空间名 QUOTA 空间限额 ON 表空间名; ``` 例如,创建名为test_user的用户,密码为123456,使用test_ts表空间,并给予该用户在test_ts表空间中使用100M的空间限额,可以使用如下语句: ```sql CREATE USER test_user IDENTIFIED BY 123456 DEFAULT TABLESPACE test_ts QUOTA 100M ON test_ts; ``` 3. 创建目录 在Oracle 12C中,创建目录可以使用如下语句: ```sql CREATE DIRECTORY 目录名 AS '目录路径'; ``` 例如,创建名为test_dir的目录,路径为E:\oracle\test_dir,可以使用如下语句: ```sql CREATE DIRECTORY test_dir AS 'E:\oracle\test_dir'; ``` 4. 授权 在Oracle 12C中,授权可以使用如下语句: ```sql GRANT 权限列表 TO 用户名; ``` 例如,给test_user用户授权可以使用test_dir目录下的所有文件,可以使用如下语句: ```sql GRANT READ, WRITE ON DIRECTORY test_dir TO test_user; ``` 以上就是Oracle 12C创建表空间、用户、目录及授权的详细步骤,希望能够对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值