Oracle 12c系列(一)|多租戶容器資料庫
Oracle 12.1釋出至今已有多年,但國內Oracle 12C的使用者並不多,隨著12.2在去年的釋出,選擇安裝Oracle 12c的客戶量明顯增加,在接下來的一兩年中,Oracle 12c將逐步得到普及。
目前關於12C新特性的文章很多,但大多都不成體系,本次的文章是一個非常完整、連貫的系列,將帶你全面的從基礎到深入全方位的理解Oracle 12C。
本篇為Oracle 12c系列的開篇文章《Oracle 12c系列(1)Multitenant Container》。
可插入資料庫的概念
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的存在。
CDB with PDBs
sys. ora12c>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORA12CPDB READ WRITE NO
4 PDB2 MOUNTED
5 PDB1 MOUNTED
6 PDB3 READ WRITE NO
sys. ora12c>
PDB$SEED為CDB seed,ORA12CPDB/PDB1/PDB2/PDB3為PDB資料庫。
Application Containers
在12cR2版本中,Oracle對多租戶功能進行了增強,在CDB root容器中可以建立一個叫做Application root的容器,可在其內建立多個依賴於Application root的Application PDBs,架構圖如下:
Application
Containers in a CDB
“Application”
更多的關於Application Containers相關內容請參考之前的Application Containers系列:
《Oracle12cR2版本Application Containers特性(1)》
《Oracle12cR2版本Application Containers特性(2)》
《Oracle12cR2版本Application Containers特性(3)》
CDB環境中的使用者
CDB環境中包含兩類使用者,公用使用者和本地使用者。
-
公用使用者
公用使用者是在root資料庫中和所有的PDB資料庫中都存在的使用者,公用使用者必須在根容器中建立,然後此使用者會在所有的現存的PDB中自動建立,公用使用者標識必須以c##或者C##開頭,sys和system使用者是Oracle在CDB環境中自動建立的公用使用者。
create user c##yyh identified by yyh;
建立完成公用使用者,需要為公用使用者賦予所有可插拔資料庫的許可權,公用使用者才可以訪問其他PDB,如果在連線根容器時僅僅為公用使用者賦予了相關許可權,那麼該許可權不會被傳遞到所有的可插拔資料庫中,必須為公用使用者賦予能夠傳遞到PDB中的許可權,可以建立公用角色然後賦予公用使用者,或者在為公共使用者付權時指定子句container=ALL;
例如:
create role c##dbaprivs container=all;
grant dba to c##dbaprivs container=all;
grant c##dbaprivs to c##yyh container=all;
或者
grant dba to c##yyh container=all; -
本地使用者
本地使用者指的是在PDB中建立的普通使用者,只有在建立它的PDB中才會存在該使用者,並且PDB中只能建立本地使用者。
CDB中你需要再次瞭解的基礎知識
SYSTEM/SYSAUX
在CDB的資料庫環境中,SYSTEM/SYSAUX表空間並不是公用,CDB$ROOT以及每個PDB都擁有自己的SYSTEM和SYSAUX表空間。
REDO檔案
在CDB環境中所有的PDB共用CDB$ROOT中的REDO檔案,REDO中的條目標識REDO來自那個PDB。
在PDB中無法執行ALTER SYSTEM SWITCH LOGFILE命令,只有公用使用者在ROOT容器中才可以執行該命令。
另外ALTER SYSTEM CHECKPOINT命令是可以在PDB中執行的。
歸檔
在CDB環境中所有的PDB共用CDB的歸檔模式,以及歸檔檔案,不可以單獨為PDB設定自己的歸檔模式,只有特權使用者連線根容器之後才可以啟動歸檔模式。
UNDO MODE
在12.2之前的版本中,所有的PDB共用CDB$ROOT中的UNDO檔案,在12.2之後的版本中UNDO的使用模式有兩種:SHARED UNDO MODE和LOCAL UNDO MODE,顧名思義,LOCAL UNDO MODE就是每個PDB使用自己的UNDO表空間,但當PDB中沒有自己的UNDO表空間時,會使用CDB$ROOT中的公共UNDO表空間。
檢視UNDO表空間的使用模式(CDB$ROOT):
COL PROPERTY_NAME FOR A50
COL PROPERTY_VALUE FOR A50
COL DESCRIPTION FOR A50
SELECT property_name, property_value
FROM database_properties
WHERE property_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
-------------------- --------------------
LOCAL_UNDO_ENABLED TRUE
在建立CDB時使用了SHARED UNDO MODE方式,如果後續想更改為LOCAL UNDO MODE,我們可以使用如下命令更改UNDO MODE為LOCAL UNDO MODE:
startup upgrade
alter database local undo on;
shutdown immediate
startup
更改為local undo後CDB中的所有的PDB會自動建立自己的UNDO表空間。
臨時檔案
每個PDB都有自己的臨時表空間,如果PDB沒有自己的臨時表空間檔案,那麼,PDB可以使用CDB$ROOT中的臨時表空間。
08:42:46 sys. woqu>select con_id, tablespace_name from cdb_temp_files;
CON_ID TABLESPACE_NAME
---------- --------------------
1 TEMP
3 TEMP
Elapsed: 00:00:00.11
08:43:02 sys. woqu>
引數檔案
引數檔案中只記錄了根容器的引數資訊,沒有記錄PDB級別的引數資訊,在根容器中修改初始化引數,會被繼承到所有的PDB中,在PDB中修改引數後,PDB的引數會覆蓋CDB級別的引數,PDB級別的引數記錄在根容器的pdb_spfile$檢視中,但並不是所有的引數都可以在PDB中修改,可以通過v$system_parameter檢視檢視PDB中可修改的引數:
SELECT name FROM v$system_parameter
WHERE ispdb_modifiable = 'TRUE'
ORDER BY name;
pdb_spfile$:
08:37:58 sys. yyh>show parameter open_cursors
NAME TYPE VALUE
------------------------------------ ----------- -----
open_cursors integer 999
08:38:04 sys. yyh>show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ----------------
local_listener string PDB_YYH
08:38:08 sys. yyh>select pdb_uid, name, value$ from pdb_spfile$;
PDB_UID NAME VALUE$
---------- ------------------ ------------------
1167267009 open_cursors 999
1167267009 local_listener 'PDB_YYH'
Elapsed: 00:00:00.00
08:38:11 sys. yyh>
這裡在PDB:1167267009中更改了open_cursors/ local_listener兩個引數。
控制檔案
CDB環境中只有一組控制檔案,所有的PDB共用這組公共的控制檔案,從任何PDB中新增資料檔案都會記錄到公共控制檔案當中,公用使用者連線根容器時,可對控制檔案進行管理。
20:51:03 sys. woqu>show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/woqu/c
ontrol01.ctl, /u01/app/oracle/
oradata/woqu/control02.ctl
20:51:06 sys. woqu>
20:50:55 sys. woqupdb>show parameter control_files
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/app/oracle/oradata/woqu/c
ontrol01.ctl, /u01/app/oracle/
oradata/woqu/control02.ctl
20:51:23 sys. woqupdb>
告警日誌以及跟蹤檔案
在CDB中所有的PDB共用一個告警日誌和一組跟蹤檔案,所有的PDB告警資訊都會寫入同一個告警日誌中。
時區
在CDB環境中可以為CDB以及所有的PDB設定相同的時區,也可以為每個PDB設定單獨的時區。
20:51:50 sys. woqu>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 WOQUPDB READ WRITE NO
20:52:00 sys. woqu>select dbtimezone from dual;
DBTIME
------
+00:00
Elapsed: 00:00:00.00
20:52:01 sys. woqu>
20:51:53 sys. woqupdb>select dbtimezone from dual;
DBTIME
------
+08:00
Elapsed: 00:00:00.00
20:52:02 sys. woqupdb>
字符集
在CDB中定義字符集也可以應用於它所含有的PDB中,每個PDB也可以有自己的字符集設定。
20:52:33 sys. woqu>SELECT a.value || '_' || b.value || '.' || c.value NLS_LANG
20:52:33 2 FROM nls_database_parameters a, nls_database_parameters b, nls_database_parameters c
20:52:33 3 WHERE a.parameter = 'NLS_LANGUAGE' AND b.parameter = 'NLS_TERRITORY' AND c.parameter = 'NLS_CHARACTERSET';
NLS_LANG
----------------------------------------
AMERICAN_AMERICA.AL32UTF8
Elapsed: 00:00:00.06
20:52:33 sys. woqu>20:52:33 sys. woqu>
20:52:36 sys. woqupdb>SELECT a.value || '_' || b.value || '.' || c.value NLS_LANG
20:52:36 2 FROM nls_database_parameters a, nls_database_parameters b, nls_database_parameters c
20:52:36 3 WHERE a.parameter = 'NLS_LANGUAGE' AND b.parameter = 'NLS_TERRITORY' AND c.parameter = 'NLS_CHARACTERSET';
NLS_LANG
----------------------------------------
AMERICAN_AMERICA.ZHS16GBK
Elapsed: 00:00:00.08
20:52:36 sys. woqupdb>20:52:36 sys. woqupdb>
資料字典檢視與動態效能檢視
在CDB環境中引入了CDB級別的資料字典檢視,它的級別高於DBA_/ALL_/USER_,CDB級別的資料字典檢視含有所有PDB的後設資料資訊,其中增加了con_id列,con_id為CDB中所有容器唯一識別符號,其中con_id為0的是CDB$ROOT,con_id為2的是PDB$SEED,每個PDB在CDB中都會分配一個唯一的con_id。如果要想檢視CDB級別的資料字典檢視,必須使用公用使用者在跟容器中檢視,並且要檢視的PDB必須處於open狀態,才可以看到PDB中的資訊。
20:53:42 sys. woqu>show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 WOQUPDB READ WRITE NO
20:53:45 sys. woqu>
20:54:40 sys. woqu>select con_id, pdb_id, pdb_name, dbid, status from cdb_pdbs;
CON_ID PDB_ID PDB_NAME DBID STATUS
---------- --------- ------------------------------ --------------
2 2 PDB$SEED 2834527297 NORMAL
3 3 WOQUPDB 3238406520 NORMAL
20:54:43 sys. woqu>
CDB的建立
如果要使用可插拔資料庫的功能,需要在建立資料庫時專門指定啟用可插拔資料庫,建立CDB通常有如下兩種方式:
-
使用DBCA圖形工具建立CDB
這裡需要注意的是Oracle 12.2之後支援LOCAL UNDO,這裡注意需要手動要勾選LOCAL UNDO選項。 -
CREATE DATABASE語句建立CDB
在使用指令碼建立CDB時Oracle提供了兩種方法,一種是使用OMF,另外一種是非OMF的方式,注意引數檔案中需要將ENABLE_PLUGGABLE_DATABASE設定為TRUE。
這裡演示使用非OMF方式建立CDB,資料名稱為ora12c:
1.設定ENABLE_PLUGGABLE_DATABASE引數為TRUE,引數檔案如下:
audit_file_dest='/u01/app/oracle/admin/ora12c/adump'
audit_trail='none'
compatible='12.2.0'
control_files='/u01/app/oracle/oradata/ora12c/control01.ctl','/u01/app/oracle/oradata/ora12c/control02.ctl'
db_block_size=8192
db_domain='linux.com'
db_name='ora12c'
diagnostic_dest='/u01/app/oracle'
enable_pluggable_database=true
memory_target=801m
nls_language='AMERICAN'
nls_territory='AMERICA'
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
2.建立相應目錄以及設定環境變數
export ORACLE_SID=ora12c
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/perl/bin:$ORACLE_HOME/jdk/bin:$PATH
3.CREATE DATABASE指令碼createdb.sql如下:
CREATE DATABASE ora12c
USER SYS IDENTIFIED BY oracle
USER SYSTEM IDENTIFIED BY oracle
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/ora12c/redo01a.log','/u01/app/oracle/oradata/ora12c/redo01b.log')
SIZE 100M BLOCKSIZE 512,
GROUP 2 ('/u01/app/oracle/oradata/ora12c/redo02a.log','/u01/app/oracle/oradata/ora12c/redo02b.log')
SIZE 100M BLOCKSIZE 512,
GROUP 3 ('/u01/app/oracle/oradata/ora12c/redo03a.log','/u01/app/oracle/oradata/ora12c/redo03b.log')
SIZE 100M BLOCKSIZE 512
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 1024
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/ora12c/system01.dbf'
SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SYSAUX DATAFILE '/u01/app/oracle/oradata/ora12c/sysaux01.dbf'
SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
DEFAULT TABLESPACE deftbs
DATAFILE '/u01/app/oracle/oradata/ora12c/deftbs01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/ora12c/temp01.dbf'
SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1
DATAFILE '/u01/app/oracle/oradata/ora12c/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
ENABLE PLUGGABLE DATABASE
SEED
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ora12c/',
'/u01/app/oracle/oradata/ora12c/pdbseed/')
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
SYSAUX DATAFILES SIZE 100M
USER_DATA TABLESPACE usertbs
DATAFILE '/u01/app/oracle/oradata/ora12c/pdbseed/usertbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
這段程式碼中只有紅色字型部分與PDB有關,其他部分與建立傳統的Oracle資料庫語句均相同。
FILE_NAME_CONVERT 子句指定了使用'/u01/app/oracle/oradata/ora12c/'中的檔名在'/u01/app/oracle/oradata/ora12c/pdbseed/'中生產CDB seeds。
USER_DATA_TABLESPACE 子句可以在容器中建立額外的表空間,這個表空間在後續使用PDB$SEED建立PDB時會被複制到PDB中。
4.將資料庫啟動到nomount狀態,然後執行上面createdb.sql指令碼建立CDB
startup nomount;
@createdb.sql
當資料庫建立成功之後可以看到新建立的資料庫被加入到/etc/oratab檔案中。
#cat /etc/oratab
+ASM:/u01/app/11.2.0/grid:N
ora12c:/u01/app/oracle/product/12.2.0/dbhome_1:N
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N # line added by Agent
newdb:/u01/app/oracle/product/12.2.0/dbhome_1:N
yyh:/u01/app/oracle/product/12.2.0/dbhome_1:N
5.檢視監聽,根容器的服務ora12c.linux.com已經被註冊到監聽中。
Service "ora12c.linux.com" has 1 instance(s).
Instance "ora12c", status READY, has 1 handler(s) for this service...
6.執行catcdb.sql指令碼建立CDB相關檢視:
@?/rdbms/admin/catcdb.sql
注意事項:
1.在catcdb.pl執行過中需要輸入兩個引數,文件中並沒有指出是什麼引數.
第一個引數應輸入:$ORACLE_HOME/rdbms/admin
第二個引數應輸入:catcdb.pl
2.環境變數中必須將$ORACLE_HOME/perl/bin指定到PATH中,否則報如下錯誤:
Can't locate Term/ReadKey.pm
3.需要將$ORACLE_HOME/perl/lib/5.22.0/x86_64-linux-thread-multi/Hash中的catcdb.pl檔案內容:
use Data::Dumper;
use util qw(trim, splitToArray);
use catcon qw(catconSqlplus);
更改為
use Data::Dumper;
use Util qw(trim, splitToArray);
use catcon qw(catconSqlplus);
4.切換到$ORACLE_HOME/perl/lib/5.22.0/x86_64-linux-thread-multi/Hash目錄中,然後sqlplus連線到資料,在執行catcdb.sql,否則報如下錯誤:
Can't locate Util.pm
7.開啟local undo mode(因為上面再建立CDB時沒有加入local undo mode子句)
sys. ora12c>shutdown immediate
sys. ora12c>startup upgrade
sys. ora12c>alter database local undo on;
Database altered.
Elapsed: 00:00:00.72
檢視是否為local undo mode:
SELECT property_name, property_value
FROM database_properties
WHERE property_name='LOCAL_UNDO_ENABLED';
PROPERTY_NAME PROPERTY_VALUE
-------------------- --------------------
LOCAL_UNDO_ENABLED TRUE
Elapsed: 00:00:00.02
sys. ora12c>
重啟資料庫
shutdown immediate
startup
啟動資料庫的過程中會在PDB$SEED中自動建立UNDO表空間,提供給後來採用PDB$SEED方式建立PDB所使用。
PS:如果CDB中已經存在多個PDB,當在根容器中使用alter database local undo on;開啟local undo mode時會自動為每個PDB建立local undo。
8.檢查CDB是否已經建立成功
sys. ora12c>SELECT dbid, name, open_mode, cdb, con_id FROM v$database;
DBID NAME OPEN_MODE CDB CON_ID
---------- --------- -------------------- --- ----------
323027068 ORA12C READ WRITE YES 0
Elapsed: 00:00:00.11
sys. ora12c>
此時CDB中含有兩個容器:根容器CDB$ROOT和種子容器PDB$SEED,如下:
sys. ora12c>SELECT con_id, dbid, con_uid, guid, name FROM v$containers;
CON_ID DBID CON_UID GUID NAME
------ ---------- ---------- --------------------------------- ----------
1 323027068 1 50A57CDEFD150C96E0530838A8C0206E CDB$ROOT
2 1453953285 1453953285 50A57CDEFD160C96E0530838A8C0206E PDB$SEED
Elapsed: 00:00:00.00
sys. ora12c>SELECT con_id, tablespace_name, file_id, file_name
FROM cdb_data_files;
CON_ID TABLESPACE_NAME FILE_ID FILE_NAME
------ --------------- ------- --------------------------------------------
1 SYSTEM 1 /u01/app/oracle/oradata/ora12c/system01.dbf
1 SYSAUX 3 /u01/app/oracle/oradata/ora12c/sysaux01.dbf
1 UNDOTBS1 5 /u01/app/oracle/oradata/ora12c/undotbs01.dbf
1 DEFTBS 6 /u01/app/oracle/oradata/ora12c/deftbs01.dbf
Elapsed: 00:00:00.01
sys. ora12c>show con_id con_name user
CON_ID
------------------------------
1
CON_NAME
------------------------------
CDB$ROOT
USER is "SYS"
sys. ora12c>
CDB的管理
管理CDB時,通常需要使用sys使用者連線根容器資料庫,在操作方式上與非CDB資料庫同樣。
當前連線容器的資訊
1.
23:03:31 sys. woqu>show con_id con_name user
CON_ID
------------------------------
1
CON_NAME
------------------------------
CDB$ROOT
USER is "SYS"
23:03:33 sys. woqu>
2.
COL CON_ID FOR A10
COL CUR_CONTAINER FOR A25
COL CUR_USER FOR A25
SELECT
sys_context('USERENV','CON_ID') con_id,
sys_context('USERENV','CON_NAME') cur_container,
sys_context('USERENV','session_user') cur_user
FROM dual;
CON_ID CUR_CONTAINER CUR_USER
---------- ------------------------- -------------------------
1 CDB$ROOT SYS
啟動和停止CDB
只有公用使用者才可以連線根容器,並且啟動和停止CDB,停止和啟動與普通資料庫的處理過程相同,當公用使用者連線PDB時,無法啟動和停止CDB。
sys. ora12c>startup
預設情況下啟動CDB時不會自動啟動PDBs,我們可以使用手工的方式啟動PDB:
ALTER PLUGGABLE DATABASE [pdb_name] OPEN;
ALTER PLUGGABLE DATABASE ALL OPEN; --開啟所有PDB
sys. ora12c>shutdown immediate
在關閉CDB時,CDB中正在執行PDSs會也會關閉,連線CDB與PDBs的session均會斷開。
檢視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 freemb, usm usemb
from generator2
order by con_id;
CON_ID CON_NAME TABLESPACE_NAME FREEMB USEMB
------ ------------ --------------- ---------- ----------
1 CDB$ROOT SYSAUX 28 470
1 SYSTEM 6.5625 810
1 TEMP 33
1 UNDOTBS1 1.9375 60
1 USERS 4 5
3 ORA12CPDB SYSAUX 18.125 360
3 SYSTEM 1.25 250
3 TEMP 64
3 UNDOTBS1 33 100
3 USERS 4 5
切換容器
使用公用使用者連線CDB後可以使用alter session的方式切換不同的容器
alter session set container=pdb1;
alter session set container = cdb$root;
在切換容器時無需執行監聽器和密碼檔案。只要公用使用者擁有相關許可權就可以切換到另外的容器中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2154400/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c 多租戶專題|CDB後設資料內幕Oracle
- oracle 12c 多租戶體系結構概念Oracle
- Oracle 20C 多租戶_1.2 資料庫與例項介紹Oracle資料庫
- 12C多租戶rman備份文件
- Part I CDB中容器概述01-Oracle多租戶管理員指南Oracle
- 技術解讀資料庫如何實現“多租戶”?資料庫
- Part II 配置和管理多租戶環境概述-Oracle多租戶管理員指南Oracle
- MaxCompute多租戶資料安全體系
- 1.2.2. 多租戶對於資料庫整合的好處資料庫
- oracle 12c 多租戶體系結構概念之資料字典、服務、使用者、角色與許可權Oracle
- Oracle 20C 多租戶_新特性Oracle
- Oracle多租戶架構優勢分析Oracle架構
- Oracle 12c資料庫安裝Oracle資料庫
- 資料庫租戶能力大調研資料庫
- 多租戶
- Oracle:容器資料庫簡介Oracle資料庫
- Oracle 12C RAC CDB資料庫部署Oracle資料庫
- 2.10.1 在non-CDB(非多租戶)環境中克隆資料庫資料庫
- 探索 Python/Django 支援分散式多租戶資料庫,如 Postgres+CitusPythonDjango分散式資料庫
- Part I CDB中表空間和資料庫檔案的概述05-Oracle多租戶管理員指南資料庫Oracle
- Oracle多租戶管理員指南-CDB共性概念03Oracle
- 12C多租戶關於CDB、PDB的常用SQL語句SQL
- ORACLE 12C RAC資料庫的啟停Oracle資料庫
- 大資料體系下的多租戶管理方案大資料
- Oracle 12c系列(九) | 通過unplug與plug方式升級pdb資料庫Oracle資料庫
- Oracle Database 12cR2多租戶權威指南OracleDatabase
- Part III PDB建立概述-Oracle多租戶管理員指南Oracle
- 【Dataguard】Oracle多租戶環境對Dataguard的影響Oracle
- 【Oracle 12c資料庫支援閃回庫功能】實驗Oracle資料庫
- Part I 應用程式容器中的應用程式概述03-Oracle多租戶管理員指南Oracle
- 一種Django多租戶解決方案Django
- Oracle 18c新特性詳解-多租戶專題Oracle
- Oracle 18c新特性:多租戶艦隊 CDB FleetOracle
- Oracle 20C 多租戶_體系結構介紹Oracle
- Oracle資料庫12c最新安全工具Data RedactionFPOracle資料庫
- 多租戶解析與Demo
- 如何獲得一個Oracle 23ai資料庫(docker容器)OracleAI資料庫Docker
- Oracle 資料庫的眾多 “NAME”Oracle資料庫