中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle 12.2 學習系列(一)CDB多租戶容器數據庫

發布時間:2020-08-13 07:45:17 來源:ITPUB博客 閱讀:280 作者:keungyu 欄目:關系型數據庫

CDB 多租戶容器數據庫

可插入數據庫的概念

Oracle Multitenant Container Database(CDB) ,即多租戶容器數據庫,是 Oracle 12C 引入的特性,指的是可以容納一個或者多個可插拔數據庫的數據庫,這個特性允許在 CDB 容器數據庫中創建并且維護多個數據庫,在 CDB 中創建的數據庫被稱為 PDB ,每個 PDB CDB 中是相互獨立存在的,在單獨使用 PDB 時,與普通數據庫無任何區別。

CDB 根容器數據庫的主要作用就是容納所有相關的 PDB 的元數據,以及在 CDB 中對所有的 PDB 進行管理。

多租戶環境的組成

ROOT 容器數據庫

Root 容器數據庫,是 CDB 環境中的根數據庫,在根數據庫中含有主數據字典視圖,其中包含了與 Root 容器有關的元數據和 CDB 中所包含的所有的 PDB 信息。在 CDB 環境中被標識為 CDB$ROOT 每個 CDB 環境中只能有一個 Root 容器數據庫

CDB seed

CDB seed PDB 的種子,其中提供了數據文件,在 CDB 環境中被標識為 PDB$SEED ,是創建新的 PDB 的模板,你可以連接 PDB$SEED ,但是不能執行任何事物,因為 PDB$SEED 是只讀的 ,不可進行修改。

PDBs

PDB 數據庫,在 CDB 環境中每個 PDB 都是獨立存在的,與傳統的 Oracle 數據庫基本無差別,每個 PDB 擁有自己的數據文件和 objects ,唯一的區別在于 PDB 可以插入到 CDB 中,以及在 CDB 中拔出,并且在任何一個時間點之上 PDB 必須拔出或者插入到一個 CDB 中,當用戶鏈接 PDB 時不會感覺到根容器和其他 PDB 的存在。

Oracle 12.2 學習系列(一)CDB多租戶容器數據庫

數據庫 CDB PDB 結構圖

 

通過以下的命令查詢當前數據庫中的 pdb

SQL> show pdbs
 
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        MOUNTED
SQL>

其中 PDB$SEED CDB seed ORCLPDB PDB 數據庫。

Application Containers

12cR2 版本中 ,Oracle 對多租戶功能進行了增強,在 CDB root 容器中可以創建一個叫做 Application root 的容器,可在其內創建多個依賴于 Application root Application PDBs ,架構圖如下:

Oracle 12.2 學習系列(一)CDB多租戶容器數據庫

12c R2 CDB PDB 結構圖(新增 Application Containers

 

CDB 環境中的用戶

CDB 環境中包含兩類用戶,公用用戶和本地用戶。

公用用戶

創建公用用戶

公用用戶是在 root 容器數據庫中和所有的 PDB 數據庫中都存在的用戶, 公用用戶必須在根容器中創建 ,然后此用戶會在所有的現存的 PDB 中自動創建, 公用用戶標識必須以 c## 或者 C## 開頭 sys system 用戶是 Oracle CDB 環境中自動創建的公用用戶。

舉例:

創建語句為:

SQL> create user c##mytest1 identified by mytest1;
        
User created.

小結:

(1)      公用用戶在 root 容器中創建

(2)      公用用戶名稱比較特殊,要以 c## 或者 C## 開頭

公用用戶賦權

創建完成公用用戶,需要為公用用戶賦予所有可插拔數據庫的權限,公用用戶才可以訪問其他 PDB ,如果在連接根容器時僅僅為公用用戶賦予了相關權限,那么該權限不會被傳遞到所有的可插拔數據庫中,必須為公用用戶賦予能夠傳遞到 PDB 中的權限,可以創建公用角色然后賦予公用用戶,或者在為公共用戶付權時指定子句 container=ALL;

小結:

(1)        公用用戶要連接 pdb 需要賦予對應權限

(2)        賦予的權限方式可以是加 container=all( container=pdb) ;也可以通過賦予 role 角色權限。

舉例:

賦予 c##mytest1 用戶基本的連接權限。

SQL> grant resource,connect to c##mytest1;
 
Grant succeeded.
 
SQL>
SQL> exit

測試 ”c##mytest1” 用戶的登錄情況,可以正常登錄

[oracle@linux14 ~]$ sqlplus /nolog
 
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 5 23:01:30 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
SQL> conn c##mytest1/mytest1;
Connected.
SQL>

 

在沒有賦予的訪問 pdb 的相關權限下,登錄失敗

SQL> alter session set container=orclpdb;
ERROR:
ORA-01031: insufficient privileges
 
 
SQL>

賦予 c##mytest1 用戶 pdb 訪問權限的 2 種方式

1 )在賦權的時候加 container=all
[oracle@linux14 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 5 23:08:15 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL> grant resource,connect to c##mytest1 container=all;
 
Grant succeeded.
 
SQL> conn c##mytest1/mytest1
Connected.
SQL>
SQL> alter session set container=orclpdb;
 
Session altered.
 
SQL>
2 )賦予已有的角色權限

1. 創建 c##mytestprivs 的角色 -->

2. 賦予 resource,connect 權限 -->

3. 然后把 c##mytestprivs 賦予 c##mytest1-->

4. 然后 c##mytest1 就可以正常登錄 pdb

[oracle@linux14 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Sat Jan 5 23:19:16 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL>
SQL> create role c##mytestprivs container=all;
 
Role created.
 
SQL> grant resource,connect to c##mytestprivs container=all;
 
Grant succeeded.
 
SQL> grant c##mytestprivs to c##mytest1 container=all;
 
Grant succeeded.
 
SQL>
SQL> conn c##mytest1/mytest1
Connected.
SQL>
SQL> show user
USER is "C##MYTEST1"
SQL>
SQL> alter session set container=orclpdb;
 
Session altered.
 
SQL>

本地用戶

本地用戶指的是在 PDB 中創建的普通用戶,只有在創建它的 PDB 中才會存在該用戶,并且 PDB 中只能創建本地用戶。此用戶跟普通數據庫中的用戶一樣。

12.2 中關于 CDB 你需要了解的基礎知識

SYSTEM/SYSAUX 表空間

SYSTEM SYSAUX 表空間是獨立的 ,在 PDB root 容器數據庫中各自擁有,并非共用。

 

CDB$ROOT 容器數據庫中查詢結果:

SQL> show con_id con_name user;                  
 
CON_ID
------------------------------
1
 
CON_NAME
------------------------------
CDB$ROOT
USER is "SYS"
SQL>
SQL>
SQL> select tablespace_name,file_name from dba_data_files;
 
TABLESPACE_NAME                FILE_NAME
------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
USERS                          /data/oradata/orcl/users01.dbf
UNDOTBS1                       /data/oradata/orcl/undotbs01.dbf
SYSTEM                         /data/oradata/orcl/system01.dbf
SYSAUX                         /data/oradata/orcl/sysaux01.dbf

orclpdb pdb 數據庫中查詢結果為:

SQL> alter session set container=orclpdb;
 
Session altered.
 
SQL> show con_id con_name user;
 
CON_ID
------------------------------
3
 
CON_NAME
------------------------------
ORCLPDB
USER is "SYS"
SQL>
SQL> select tablespace_name,file_name from dba_data_files;
 
TABLESPACE_NAME                FILE_NAME
------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UNDOTBS1                       /data/oradata/orcl/orclpdb/undotbs01.dbf
SYSAUX                         /data/oradata/orcl/orclpdb/sysaux01.dbf
SYSTEM                         /data/oradata/orcl/orclpdb/system01.dbf
USERS                          /data/oradata/orcl/orclpdb/users01.dbf
 
SQL>

REDO 文件

1 redo 日志文件為公用的 ,存在于 root 容器中 CDB$ROOT REDO 中的條目標識 REDO 是來自哪個 PDB

2 )在 PDB 中無法執行 ALTER SYSTEM SWITCH LOGFILE 命令,只有公用用戶在 ROOT 容器中才可以執行該命令。

SQL> alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database

   (3)        另外 ALTER SYSTEM CHECKPOINT 命令是可以在 PDB 中執行的。

SQL> alter system checkpoint;
 
System altered.
 
SQL>

     歸檔日志是公用的

CDB 環境中所有的 PDB 共用 CDB 的歸檔模式,以及歸檔文件,不可以單獨為 PDB 設置自己的歸檔模式,只有特權用戶連接根容器之后才可以啟動歸檔模式。

UNDO MODE- -UNDO 表空間

(1)        12.2 之前的版本中,所有的 PDB 共用 CDB$ROOT 中的 UNDO 文件

(2)        12.2 之后的版本中 UNDO 的使用模式有兩種: SHARED UNDO MODE LOCAL UNDO MODE ,顧名思義, LOCAL UNDO MODE 就是每個 PDB 使用自己的 UNDO 表空間,但當 PDB 中沒有自己的 UNDO 表空間時,會使用 CDB$ROOT 中的公共 UNDO 表空間。  

查看 UNDO 表空間的使用模式 (CDB$ROOT)

SQL> COL PROPERTY_NAME FOR A50
SQL> COL PROPERTY_VALUE FOR A50
SQL> COL DESCRIPTION FOR A50
SQL>
SQL> SELECT property_name, property_value
  2  FROM database_properties
  3  WHERE property_name='LOCAL_UNDO_ENABLED';
 
PROPERTY_NAME                                      PROPERTY_VALUE
-------------------------------------------------- --------------------------------------------------
LOCAL_UNDO_ENABLED                                 TRUE
 
SQL>
關閉 Local UNDO ( 操作需要重啟數據庫 )

直接關閉 local undo 會報錯:

SQL> alter database local undo off;
alter database local undo off
*
ERROR at line 1:
ORA-65192: database must be in UPGRADE mode for this operation

關閉數據庫,啟動到 upgrade 模式下關閉 local undo

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL> startup upgrade
ORACLE instance started.
 
Total System Global Area 1241513984 bytes
Fixed Size                  8792248 bytes
Variable Size             788531016 bytes
Database Buffers          436207616 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.
SQL>
SQL> alter database local undo off;
 
Database altered.

重啟數據庫后,查詢 local undo 已經關閉了

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
 
Total System Global Area 1241513984 bytes
Fixed Size                  8792248 bytes
Variable Size             788531016 bytes
Database Buffers          436207616 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.
SQL>
SQL> SELECT property_name, property_value
  2  FROM database_properties
  3  WHERE property_name='LOCAL_UNDO_ENABLED';
 
PROPERTY_NAME                                      PROPERTY_VALUE
-------------------------------------------------- --------------------------------------------------
LOCAL_UNDO_ENABLED                                 FALSE
 
SQL>
開啟 local UNDO( 操作需要重啟數據庫 )

直接開啟 local undo 也會報錯                                                                                                                                                                                                

SQL> alter database local undo on;                                                                  
alter database local undo on                                                                        
*                                                                                                    
ERROR at line 1:                                                                                    
ORA-65192: database must be in UPGRADE mode for this operation

重啟數據庫到 upgrade 模式,然后關閉 local undo                                                                   

SQL> shutdown immediate;                                                                            
Database closed.                                                                                    
Database dismounted.                                                                                
ORACLE instance shut down.                                                                          
SQL>                                                                                                 
SQL> startup upgrade                                                                                
ORACLE instance started.                                                                            
                                                                                                     
Total System Global Area 1241513984 bytes                                                           
Fixed Size                  8792248 bytes                                                            
Variable Size             788531016 bytes                                                           
Database Buffers          436207616 bytes                                                           
Redo Buffers                7983104 bytes                                                           
Database mounted.                                                                                   
Database opened.                                                                                     
SQL>                                                                                                
SQL> alter database local undo on;                                                                  
                                                                                                     
Database altered.

再次重啟數據庫,查詢 local undo 的開啟狀態                                                                                                       

SQL> shutdown immediate;                                                                            
Database closed.                                                                                     
Database dismounted.                                                                                
ORACLE instance shut down.                                                                          
SQL> startup                                                                                         
ORACLE instance started.                                                                            
                                                                                                     
Total System Global Area 1241513984 bytes                                                           
Fixed Size                  8792248 bytes                                                           
Variable Size             788531016 bytes                                                           
Database Buffers          436207616 bytes                                                           
Redo Buffers                7983104 bytes                                                            
Database mounted.                                                                                   
Database opened.                                                                                    
SQL>                                                                                                
SQL> SELECT property_name, property_value                                                           
  2  FROM database_properties                                                                        
  3  WHERE property_name='LOCAL_UNDO_ENABLED';                                                      
                                                                                                    
PROPERTY_NAME                                      PROPERTY_VALUE                                   
-------------------------------------------------- --------------------------------------------------
LOCAL_UNDO_ENABLED                                 TRUE                                              
                                                                                                    
SQL>

臨時文件

1 默認情況下臨時表空間也是獨立的 PDB root 容器數據庫各自擁有,

2 )如果 PDB 沒有自己的臨時表空間文件,那么, PDB 可以使用 CDB$ROOT 中的臨時表空間。

參數文件

參數文件是公用的

(1)        參數文件中只記錄了根容器的參數信息,沒有記錄 PDB 級別的參數信息,在根容器中修改初始化參數,會被繼承到所有的 PDB 中,

(2)        PDB 中修改參數后, PDB 的參數會覆蓋 CDB 級別的參數, PDB 級別的參數記錄在根容器的 pdb_spfile$ 視圖中,但并不是所有的參數都可以在 PDB 中修改,

(3)        可以通過 v$system_parameter 視圖查看 PDB 中可修改的參數:

SELECT name FROM v$system_parameter
WHERE ispdb_modifiable = 'TRUE'
ORDER BY name;

控制文件

控制文件是公用的

CDB 環境中只有一組控制文件,所有的 PDB 共用這組公共的控制文件,從任何 PDB 中添加數據文件都會記錄到公共控制文件當中,公用用戶連接根容器時,可對控制文件進行管理。

SQL> show parameter control_files;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      /data/oradata/orcl/control01.c
                                                 tl, /data/flash_recovery_area/
                                                 orcl/control02.ctl
SQL>

告警日志以及跟蹤文件

告警日志和跟蹤文件是公用的

CDB 中所有的 PDB 共用一個告警日志和一組跟蹤文件,所有的 PDB 告警信息都會寫入同一個告警日志中。

時區

CDB 環境中可以為 CDB 以及所有的 PDB 設置相同的時區,也可以為每個 PDB 設置單獨的時區。

查詢時區語句:

SQL> select dbtimezone from dual;
 
DBTIME
------
+00:00

字符集

CDB 中定義字符集也可以應用于它所含有的 PDB 中,每個 PDB 也可以有自己的字符集設置。

查詢字符集的語句:

SELECT a.value || '_' || b.value || '.' || c.value NLS_LANG
  FROM nls_database_parameters a,
       nls_database_parameters b,
       nls_database_parameters c
 WHERE a.parameter = 'NLS_LANGUAGE'
   AND b.parameter = 'NLS_TERRITORY'
   AND c.parameter = 'NLS_CHARACTERSET';

數據字典視圖與動態性能視圖

(1)        CDB 環境中引入了 CDB 級別的數據字典視圖,它的級別高于 DBA_/ALL_/USER_ CDB 級別的數據字典視圖含有所有 PDB 的元數據信息,其中增加了 con_id 列, con_id CDB 中所有容器唯一標識符,

(2)        其中 con_id 的是 CDB$ROOT con_id 2 的是 PDB$SEED ,每個 PDB CDB 中都會分配一個唯一的 con_id

(3)        如果要想查看 CDB 級別的數據字典視圖,必須使用公用用戶在跟容器中查看,并且要查看的 PDB 必須處于 open 狀態,才可以看到 PDB 中的信息。

CDB 的操作和管理

管理 CDB 通常也是使用 sys 用戶,其連接和操作方式跟非 CDB 數據庫相同。

登錄 CDB PDB 數據庫的方法

oracle 12c 中使用 tnsname 的方式來進行登錄 CDB PDB

tnsnames.ora 的舉例配置

[oracle@linux14 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/app/oracle/product/12c/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
 
LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = linux14)(PORT = 1521))
 
 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux14)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
 
ORCLPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = linux14)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclpdb)
    )
  )

其中的 ORCL 的配置是用于登錄 CDB cdb$root 容器數據庫

ORCLPDB 的配置是用于登錄 PDB orclpdb 數據庫

 

使用 orcl 來登錄 cdb$root 數據庫:

[oracle@linux14 admin]$ sqlplus sys/oracle@orcl as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 8 22:13:15 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL> show con_id con_name user;
 
CON_ID
------------------------------
1
 
CON_NAME
------------------------------
CDB$ROOT
USER is "SYS"

使用 orclpdb 來登錄 pdb 數據庫

[oracle@linux14 admin]$ sqlplus sys/oracle@orclpdb as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 8 22:14:37 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL> show con_id con_name user;
 
CON_ID
------------------------------
3
 
CON_NAME
------------------------------
ORCLPDB
USER is "SYS"
SQL>

查詢當前連接容器的信息:

(1)        方式 1

SQL> show con_id con_name user;
 
CON_ID
------------------------------
1
 
CON_NAME
------------------------------
CDB$ROOT
USER is "SYS"
SQL>

(2)     方式 2

SQL> COL CON_ID FOR A10
SQL> COL CUR_CONTAINER FOR A25
SQL> COL CUR_USER FOR A25
SQL> SELECT
  2  sys_context('USERENV','CON_ID')con_id,
  3  sys_context('USERENV','CON_NAME') cur_container,
  4  sys_context('USERENV','session_user') cur_user
  5  FROM dual;
 
CON_ID     CUR_CONTAINER             CUR_USER
---------- ------------------------- -------------------------
1          CDB$ROOT                  SYS
 
SQL>

啟動和關閉 CDB 數據庫

啟動和關閉 CDB 數據庫的方式跟普通的非 CDB 數據庫一致,其中 PDB 的數據庫不會隨著 CDB 一起其中,只會到 mounted 狀態:

[oracle@linux14 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 8 20:47:24 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup
ORACLE instance started.
 
Total System Global Area 1241513984 bytes
Fixed Size                  8792248 bytes
Variable Size             788531016 bytes
Database Buffers          436207616 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.
SQL>
SQL> show pdbs;
 
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        
MOUNTED
SQL> 
alter pluggable database orclpdb open;
 
Pluggable database altered.
 
SQL>

手工啟動 PDB open

alter pluggable database orclpdb open; -->指定某個pdb啟動,比如orclpdb
alter pluggable database all open; -->所有的pdb數據庫都啟動

關閉 CDB 的命令:

SQL> shutdown immediate;

查詢 CDB 數據庫的表空間使用情況

with generator0 as
 (select cf.con_id, cf.tablespace_name, sum(cf.bytes) / 1024 / 1024 frm
    from cdb_free_space cf
   group by cf.con_id, cf.tablespace_name),
generator1 as
 (select cd.con_id, cd.tablespace_name, sum(cd.bytes) / 1024 / 1024 usm
    from cdb_data_files cd
   group by cd.con_id, cd.tablespace_name),
generator2 as
 (select g0.con_id, c.name con_name, g0.tablespace_name, g0.frm, g1.usm
    from generator0 g0, generator1 g1, v$containers c
   where g0.con_id = g1.con_id
     and g0.tablespace_name = g1.tablespace_name
     and c.con_id = g1.con_id
  union
  select c.con_id,
         c.name,
         ct.tablespace_name,
         null,
         sum(ct.bytes) / 1024 / 1024
    from v$containers c, cdb_temp_files ct
   where c.con_id = ct.con_id
   group by c.con_id, c.name, ct.tablespace_name)
select con_id,
       case
         when con_name = LAG(con_name, 1)
          OVER(PARTITION BY con_name ORDER BY tablespace_name) THEN
          null
         ELSE
          con_name
       END con_name,
       tablespace_name,
       frm || 'M' freemb,
       usm || 'M' usemb
  from generator2
 order by con_id;

結果如圖所示:

Oracle 12.2 學習系列(一)CDB多租戶容器數據庫

切換容器的操作

正常情況下都是用 公用用戶 來做操作

使用 公用用戶 連接 CDB 后,可以使用 alter session 的方式切換不同的容器。

例如:

alter session set container=orclpdb;
alter session set container = cdb$root;
實驗:

pdb 數據庫 orclpdb 中創建了 mytest1 用戶,用此用戶進行切換容器,會報沒有權限的錯誤

[oracle@linux14 admin]$ sqlplus mytest1/mytest1@orclpdb ;
 
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jan 8 22:01:09 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
Last Successful login time: Tue Jan 08 2019 21:50:33 +08:00
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL>
SQL> alter session set container=cdb$root;
ERROR:
ORA-01031: insufficient privileges

嘗試用 sys 用戶給 mytest1 用戶賦予權限,也出現了報錯

SQL> conn sys/oracle as sysdba
Connected.
SQL> show con_id user;
 
CON_ID
------------------------------
1
USER is "SYS"
SQL>
SQL>
SQL> alter session set container=orclpdb;
 
Session altered.
 
SQL>
SQL> show con_id user;
 
CON_ID
------------------------------
3
USER is "SYS"
SQL>
SQL>
SQL> grant dba to mytest1 container=all;
grant dba to mytest1 container=all
*
ERROR at line 1:
ORA-65030: cannot grant a privilege commonly to a local user or role
 
 
SQL>

因此建議, CDB 容器數據庫的操作使用公用用戶來進行相關的操作。

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台北县| 荥经县| 垦利县| 焦作市| 任丘市| 华蓥市| 株洲县| 沙河市| 大厂| 突泉县| 波密县| 祁门县| 青海省| 南召县| 加查县| 元氏县| 南安市| 韶关市| 周至县| 班玛县| 贡嘎县| 屯昌县| 怀安县| 大连市| 沙雅县| 富民县| 商河县| 萝北县| 长子县| 五家渠市| 松溪县| 樟树市| 闻喜县| 平昌县| 宁安市| 荔浦县| 介休市| 安丘市| 白银市| 衡水市| 云南省|