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

公有用户是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/[email protected]: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/[email protected]: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/[email protected]: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/[email protected]: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"

你可能感兴趣的:(12c,oracle)