问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我在安装Oracle 12c数据库到了这一步时,请问这几个账户别是做什么用...

发布网友 发布时间:2022-04-23 05:52

我来回答

2个回答

懂视网 时间:2022-04-10 02:14

Oracle 数据库 12 c 多租户选项允许单个容器数据库 (CDB) 来承载多个单独的可插拔数据库 (PDB)。
那么我们如何在容器数据库 (CDB) 和可插拔数据库 (PDB)管理用户权限。


背景:
当连接到多租户的数据库中,用户权限的管理相对传统的 Oracle 单数据库环境稍有不同。在多租户环境中有两种类型的用户。
共同用户(Common User): 该用户存在所有容器 (根和所有的 Pdb) 中。
本地用户(Local User): 用户只有在特定的 PDB 中存在。同样的用户名中可以存在多个Pdb中创建,但它们之间没有关系。
同样,有两种类型的角色。
共同角色(Common Role): 该角色在所有容器 (根和所有的 Pdb) 中。
本地角色(Local Role): 该角色只存在于特定的 PDB。可以在多个 Pdb中创建相同的角色名称,但它们之间没有关系。
一些 DDL 语句有扩充,以使他们能够定向到当前容器还是所有容器的CONTAINER子句。它的使用将在以下各节中进行演示。


一、创建和共同用户
条件:
1.必须连接到具有CREATE USER特权的共同用户。
2.在当前的数据库必须是根容器数据库。
3.常见的用户的用户名必须与"C##"或"c##"作为前缀,并包含唯一的 ASCII 或 EBCDIC 字符。
4.在所有容器该共同用户名必须是唯一的。
5.DEFAULT TABLESPACE、TEMPORARY TABLESPACE、QUOTA和PROFILE必须存在于所有容器中的所有引用对象。
您可以指定CONTAINER=ALL子句,或者忽略它,因为这是默认设置时,当前的容器是根。
6.公共用户可以在不同的CDB、PDB数据库中有不同的权限。
操作:
在 cdb 中创建公共用户的时候, pdbs 中也会创建相同用户。若CDB 下 GRANT 命令赋权,如果赋权时未指定container=all,则赋权只在CDB中生效,并不会在PDB中生效,这个用户要能够访问PDB,需要切换到 pdb 再赋权。。若赋权时指定 container=all,则赋权在CDB中生效,也在PDB中生效。


赋权时未指定container=all:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##andy02 identified by andy;
SQL> grant create session to c##andy02;
C:Usersandy>sqlplus c##andy02/andy@10.100.25.16:1521/andycdb
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
C:Usersandy>sqlplus c##andy02/andy@10.100.25.16:1521/pdb01
ERROR:
ORA-01045: user C##ANDY02 lacks CREATE SESSION privilege; logon denied
SQL> alter session set container=pdb01;
SQL> grant create session to c##andy02;
C:Usersandy>sqlplus c##andy02/andy@10.100.25.16:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


赋权时指定container=all:
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> create user c##andy identified by andy;
SQL> grant create session to c##andy container=all;
C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/andycdb
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production


二、创建本地用户
条件:
1.必须连接到具有CREATE USER特权的用户。
2.本地用户的用户名不必须与"C##"或"c##"作为前缀。
3.用户名必须是在 PDB 内是唯一的。
4.当前的容器是 PDB 的时候,您可以指定CONTAINER=CURRENT子句,或者忽略它,因为这是默认设置。
操作:
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> create user andy identified by andy;
SQL> grant create session to andy;
C:Usersandy>sqlplus andy/andy@10.100.25.16:1521/pdb01
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
-- 去 CDB 中查看 本地用户 ANDY 存在否,果真不存在。
SQL> show con_name


CON_NAME
------------------------------
CDB$ROOT
SQL> select username,created from dba_users where username=‘ANDY‘;
no rows selected


三、创建共同角色
类似于前面所述的用户,角色可以是共同的或本地的   。
Oracle 提供的所有角色在根容器中和所有的 Pdb可见。创建共同角色需要满足以下条件。
条件
1.必须连接到共同用户CREATE ROLE与通常授予的SET CONTAINER权限。
2.当前的容器必须是根容器。
3.常见角色的角色名称必须与"C##"或"c##"为前缀,并且包含唯一 ASCII 或 EBCDIC 字符。
4.在所有容器的角色名称必须是唯一的。
5.角色创建与CONTAINER=ALL子句
6.公共角色可以赋予公共用户或者本地用户
操作:
注意:在 CDB 赋予角色权限的时候,需要指定 container=all ,否则 PDB 中不可见。
SQL> show con_name
CON_NAME
-------------------
CDB$ROOT
SQL> create role c##role_andy;
公共角色赋权 To a common user:
SQL> grant select on dba_objects to c##role_andy container=all;
SQL> grant c##role_andy to c##andy container=all;


C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/andycdb
SQL> 
set lin 300;
set pagesize 300;
col username for a30;
col granted_role for a30;
select * from  USER_ROLE_PRIVS;


USERNAME                       GRANTED_ROLE                   ADM DEL DEF OS_ COM INH
------------------------------ ------------------------------ --- --- --- --- --- ---
C##ANDY                        C##ROLE_ANDY                   NO  NO  YES NO  YES NO
SQL> select count(*) from dba_objects;


  COUNT(*)
----------
     72635


C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/pdb01
set lin 300;
set pagesize 300;
col username for a30;
col granted_role for a30;
select * from  USER_ROLE_PRIVS;


USERNAME                       GRANTED_ROLE                   ADM DEL DEF OS_ COM INH
------------------------------ ------------------------------ --- --- --- --- --- ---
C##ANDY                        C##ROLE_ANDY                   NO  NO  YES NO  YES YES
SQL>  select count(*) from dba_objects;
  COUNT(*)
----------
     72629


公共角色赋权 To a local  user:
SQL> alter session set container=pdb01;
SQL> grant c##role_andy to andy;
C:Usersandy>sqlplus andy/andy@10.100.25.16:1521/pdb01
SQL> select count(*) from dba_objects;
  COUNT(*)
----------
     72629


四、创建本地角色
本地角色是以类似的方式到 pre-12 c 数据库创建的。每个 PDB 可以具有与匹配的名称,因为当地的作用范围仅限于当前 PDB 的角色。
必须满足以下条件。
条件:
1.必须连接到具有CREATE ROLE权限的用户。
2.如果您连接到公共用户,容器必须设置为本地 PDB。
3.角色名称为本地角色不必须与"C##"或"c##"作为前缀。
4.角色名称必须是唯一在 PDB 内。
5.本地角色可以赋权给公共用户(作用范围局限于pdb内操作,不影响CDB权限)或者本地用户。
操作:
SQL> alter session set container=pdb01;
create role pdb_role;
grant select on dba_tables to pdb_role; 


本地角色赋权 To a common user:
grant pdb_role to c##andy;
C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/pdb01
SQL> select count(*) from dba_tables;
  COUNT(*)
----------
      2106
C:Usersandy>sqlplus c##andy/andy@10.100.25.16:1521/andycdb
SQL> select count(*) from dba_tables;
select count(*) from dba_tables
                     *
ERROR at line 1:
ORA-00942: table or view does not exist


本地角色赋权 To a local user:
grant pdb_role to andy;
C:Usersandy>sqlplus andy/andy@10.100.25.16:1521/pdb01
SQL> select count(*) from dba_tables;
  COUNT(*)
----------
      2106


Oracle12c多租户管理用户、角色、权限

标签:特权   erp   ror   user   count   logo   匹配   10.10   关系   

热心网友 时间:2022-04-09 23:22

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 oracle12c是真正的分布式吗 Oracle 12c时间格式问题 ORA-04036怎么解决oracle12c? oracle 12c 要配哪个pl/sq版本l oracle12c和10g varchar类型的区别 Oracle数据库的12c版本是不是发布了 请问一下什么是oracle 12c grid? 手机被刷屏 中国移动手机该怎么刷屏? 手机自动刷屏 手机刷屏是什么意思 手机为什么总是自动刷屏 华为手机怎么刷屏 什么是手机刷屏 什么是手机刷屏机刷屏是怎么回事?荣耀v9手机,媒体音量小怎么办? 华为手机怎么刷屏? 什么叫手机刷屏!有啥好处? 手机刷屏了怎么恢复 oppo手机怎么刷屏? 不锈钢锅干烧变黑后,复合锅底长锈有办法去除吗? oracle 12c 的c是什么意思 如何连接64位oracle12c oracle 12c 点链接时报错 错误代码 excel 是否可以连接Oracle 12C 请问下Oracle 12c,打localhost:5500/em连不上 oracle12c建立连接数据库时没有oracle provider for ole db选项_百度知... 怎么让皮肤变白变嫩 六个民间偏方让你拥有白皙肌肤 有什么方法让皮肤变白嫩 怎样才能让皮肤更自然的白? 怎样使身体的皮肤变的白皙嫩滑? 怎样在短时间内让皮肤变白,不用擦粉之类的,就用自然的方法变白 不需要花很多钱,哪些美白方法,也可以让皮肤变白变嫩? 怎样才能让自己的皮肤变白·变嫩 为什么我的手机设置不了锁屏壁纸? 怎样能让皮肤变白,变的光滑,细嫩? 锁屏壁纸不能切换了 电脑锁屏壁纸无法修改 为什么更改不了锁屏壁纸? 我的手机不能设置锁屏壁纸? 当前主题不支持更换锁屏壁纸该怎么办?