pdb连接数_Oracle 19c 之多租户 PDB 连接与访问(三)
作者 | JiekeXu
來源 |?JiekeXu之路(ID: JiekeXu_IT)
轉(zhuǎn)載請(qǐng)聯(lián)系授權(quán) |?(微信ID:xxq1426321293)
大家好,我是 JiekeXu,很高興又和大家見面了,今天分享下?Oracle 19c 之多租戶 PDB 連接與訪問
。
本文首發(fā)于微信公眾號(hào)【JiekeXu之路】,歡迎點(diǎn)擊上方藍(lán)字關(guān)注我吧!
前面已經(jīng)說過創(chuàng)建多租戶以及多租戶體系架構(gòu)了,感興趣的小伙伴可查看歷史文章。今天下午微信公眾號(hào)又有重大的更新了,底部出現(xiàn)了分享、點(diǎn)贊、再看三個(gè)按鈕,所以發(fā)一篇試試新功能。首先看下圖,基本上就可以看懂了 CDB、PDB 之間的訪問了。
使用 sqlplus / as sysdba 直接連接到根容器,或者通過網(wǎng)絡(luò)( sqlplus sys/oracle@IP:端口號(hào)/服務(wù)名)輕松連接方式等均可連接到根容器。
下面看一下如何直接登錄到?PDB
為了演示,先使用模板在建立一個(gè) JIEKEPDB1 吧,語法后面再具體介紹。
#使用如下命令創(chuàng)建一個(gè)JIEKEPDB1
create pluggable database JIEKEPDB1 admin
user pdbadmin identified by pdbadmin
roles=(DBA) default tablespace users
file_name_convert =
('/u01/app/oracle/oradata/JIEKECDB/pdbseed','/u01/app/oracle/oradata/JIEKECDB/JIEKEPDB1');
–注意,如果 file_name_convert 后邊不寫全路徑,如上圖所示創(chuàng)建,默認(rèn)會(huì)在 $ORACLE_HOME/dbs 下創(chuàng)建一個(gè)名為 JIEKEPDB1 的目錄存放數(shù)據(jù)文件。
當(dāng)然也可刪除后在使用上面命令重建
alter pluggable database JIEKEPDB1 close immediate;
drop pluggable database JIEKEPDB1 including datafiles;
**使用如下命令打開 JIEKEPDB1 **
SYS@JIEKECDB> alter pluggable database JIEKEPDB1 open;
SYS@JIEKECDB> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JIEKEPDB READ WRITE NO
5 JIEKEPDB1 READ WRITE NO
--注意 CON_ID 沒有出現(xiàn) 4 是由于前面創(chuàng)建出現(xiàn)錯(cuò)誤導(dǎo)致。
然后具體看一下直接連接到多租戶 PDB 的方法:
1)export ORACLE_PDB_SID=JIEKEPDB1
不可以使用 export ORACLE_SID=JIEKEPDB1 的方式連接 PDB,因?yàn)閷?shí)例只有一個(gè),對(duì)應(yīng)的 SID 是 JiekeCDB,不存在 Jiekepdb1 實(shí)例。但是 18c 、19c 可以使用 ?ORACLE_PDB_SID 來連接到 PDB,直接登錄到數(shù)據(jù)庫(kù)。
export ORACLE_PDB_SID=JIEKEPDB1sqlplus?/?as?sysdbasho pdbs
2)ALTER?命令直接連接到 JIEKEPDB
當(dāng)然也可以使用 alter session set container=JIEKEPDB,如下圖演示。
3)export TWO_TASK=JIEKEPDB1
TWO_TASK 這個(gè)變量和前面的 ORACLE_PDB_SID 未在官方文檔中有過說明,但很多技術(shù)文檔中均使用這種方法,前提是?TWO_TASK 需要配置 tnsnames.ora 別名加用戶、密碼才可以登錄。
vim?$ORACLE_HOME/network/admin/tnsnames.ora
配置和連接如下圖所示:
4)使用 tns 直接連接連接到 PDB
最后就是通過上面配置的 tns 網(wǎng)絡(luò)別名加用戶、密碼直接登錄到 PDB。
sqlplus?sys/oracle@JIEKEPDB1 as sysdba
如上圖,當(dāng)我使用 sqlplus 連接到 PDB 時(shí),每行 SQL 前均會(huì)顯示所連接到的容器租戶以及用戶名稱,如 SYS@JIEKEPDB1> .這個(gè)命令提示符是可以配置的。在?$ORACLE_HOME/sqlplus/admin 目錄下有一個(gè) glogin.sql 文件,在最后添加?sqlprompt?相關(guān)的提示便可以了。
set linesize 200set pagesize 999define _editor=viset sqlprompt "_user'@'_connect_identifier> "
那么,當(dāng)連接到 PDB 后怎么回切到 CDB 呢?很簡(jiǎn)單,直接使用命令:conn /as sysdba即可。注意:show 命令我這里簡(jiǎn)寫成了 sho 是沒有任何問題的。
最最后,親測(cè),export ORACLE_PDB_SID 在12c 中不可用,不過 TWO_TASK=JIEKEXUPDB1 到時(shí)可以使用。如上結(jié)果均為新裝單機(jī) RPM 包的 19.3 環(huán)境,無任何補(bǔ)丁包具體安裝可查看微信文章[Oracle 19c 之 RPM 包安裝初體驗(yàn)(一)]
[oracle@JiekeXu admin]$ export ORACLE_PDB_SID=JIEKEXUPDB
[oracle@JiekeXu admin]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 星期二 6月 23 09:15:52 2020
Copyright (c) 1982, 2016, Oracle. All rights reserved.
連接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SYS@JiekeXu> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JIEKEXUPDB READ WRITE NO
4 JIEKEXUPDB1 READ WRITE NO
SYS@JiekeXu> show con_name
CON_NAME
------------------------------
CDB$ROOT
總結(jié):有時(shí)候,通過根容器然后在切換到某個(gè) PDB,是比較麻煩的,那么如果想直接連接到 PDB ,便可以配置環(huán)境變量 ORACLE_PDB_SID 它無疑是最方便的了,不過官方?jīng)]有直接說明可以這么用,但從各種技術(shù)論壇文章中看到還是沒有任何問題的。TWO_TASK 和直接通過 tns 別名登錄到 PDB 的,需要多租戶容器 SYS 密碼,當(dāng)不知道密碼時(shí)比較麻煩;那么只有通過 sqlplus 先登錄到根容器然后再使用 alter session set container 命令切換到某個(gè)具體的 PDB。
好了,今天就到先這里了,那么,對(duì)于容器數(shù)據(jù)庫(kù)的切換,連接就說這么多了,小伙伴們?cè)僖娏恕懽鞑灰?#xff0c;此文如果對(duì)你有幫助,請(qǐng)支持“在看”與轉(zhuǎn)發(fā),您的支持便是我不斷寫作的最大的動(dòng)力,實(shí)在吝嗇點(diǎn)個(gè)贊也行,微信公眾號(hào)以前的點(diǎn)贊又回來了,加油,讓我們一起努力做更好的自己!
點(diǎn)亮在看,你最好看!
總結(jié)
以上是生活随笔為你收集整理的pdb连接数_Oracle 19c 之多租户 PDB 连接与访问(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql groupby 取值_mys
- 下一篇: web开发的java语言步骤_java