Oracle 19c 之多租戶 PDB 鏈接與訪問(三)

做者 | JiekeXu
web

來源 | JiekeXu之路(ID: JiekeXu_IT)
sql

轉載請聯繫受權 | (微信ID:xxq1426321293)數據庫

你們好,我是 JiekeXu,很高興又和你們見面了,今天分享下 Oracle 19c 之多租戶 PDB 鏈接與訪問 本文首發於微信公衆號【JiekeXu之路】,歡迎點擊上方藍字關注我吧!

前面已經說過建立多租戶以及多租戶體系架構了,感興趣的小夥伴可查看歷史文章。今天下午微信公衆號又有重大的更新了,底部出現了分享、點贊、再看三個按鈕,因此發一篇試試新功能。首先看下圖,基本上就能夠看懂了 CDB、PDB 之間的訪問了。vim

使用 sqlplus / as sysdba 直接鏈接到根容器,或者經過網絡( sqlplus sys/oracle@IP:端口號/服務名)輕鬆鏈接方式等都可鏈接到根容器。微信

下面看一下如何直接登陸到 PDB
網絡

爲了演示,先使用模板在創建一個 JIEKEPDB1 吧,語法後面再具體介紹。session

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 後邊不寫全路徑,如上圖所示建立,默認會在 $ORACLE_HOME/dbs 下建立一個名爲 JIEKEPDB1 的目錄存放數據文件。架構

固然也可刪除後在使用上面命令重建
alter pluggable database JIEKEPDB1 close immediate;
drop pluggable database JIEKEPDB1 including datafiles;

**使用以下命令打開 JIEKEPDB1 **oracle

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 沒有出現 4 是因爲前面建立出現錯誤致使。

而後具體看一下直接鏈接到多租戶 PDB 的方法:

1)export ORACLE_PDB_SID=JIEKEPDB1app

不可使用 export ORACLE_SID=JIEKEPDB1 的方式鏈接 PDB,由於實例只有一個,對應的 SID 是 JiekeCDB,不存在 Jiekepdb1 實例。可是 18c 、19c 可使用  ORACLE_PDB_SID 來鏈接到 PDB,直接登陸到數據庫。

export ORACLE_PDB_SID=JIEKEPDB1sqlplus / as sysdba sho pdbs

2)ALTER 命令直接鏈接到 JIEKEPDB

固然也可使用 alter session set container=JIEKEPDB,以下圖演示。

3)export TWO_TASK=JIEKEPDB1

TWO_TASK 這個變量和前面的 ORACLE_PDB_SID 未在官方文檔中有過說明,但不少技術文檔中均使用這種方法,前提是 TWO_TASK 須要配置 tnsnames.ora 別名加用戶、密碼才能夠登陸。

vim $ORACLE_HOME/network/admin/tnsnames.ora 

配置和鏈接以下圖所示:

4)使用 tns 直接鏈接鏈接到 PDB

最後就是經過上面配置的 tns 網絡別名加用戶、密碼直接登陸到 PDB。

sqlplus sys/oracle@JIEKEPDB1 as sysdba


如上圖,當我使用 sqlplus 鏈接到 PDB 時,每行 SQL 前均會顯示所鏈接到的容器租戶以及用戶名稱,如 SYS@JIEKEPDB1> .這個命令提示符是能夠配置的。在 $ORACLE_HOME/sqlplus/admin 目錄下有一個 glogin.sql 文件,在最後添加 sqlprompt 相關的提示即可以了。


set linesize 200set pagesize 999define _editor=viset sqlprompt "_user'@'_connect_identifier> "



那麼,當鏈接到 PDB 後怎麼回切到 CDB 呢?很簡單,直接使用命令:conn / as sysdba  便可。注意:show 命令我這裏簡寫成了 sho 是沒有任何問題的。



最最後,親測,export ORACLE_PDB_SID 在12c 中不可用,不過 TWO_TASK=JIEKEXUPDB1 到時可使用。如上結果均爲新裝單機 RPM 包的 19.3 環境,無任何補丁包具體安裝可查看微信文章[Oracle 19c 之 RPM 包安裝初體驗(一)]

[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


總結:有時候,經過根容器而後在切換到某個 PDB,是比較麻煩的,那麼若是想直接鏈接到 PDB ,即可以配置環境變量 ORACLE_PDB_SID 它無疑是最方便的了,不過官方沒有直接說明能夠這麼用,但從各類技術論壇文章中看到仍是沒有任何問題的。TWO_TASK 和直接經過 tns 別名登陸到 PDB 的,須要多租戶容器 SYS 密碼,當不知道密碼時比較麻煩;那麼只有經過 sqlplus 先登陸到根容器而後再使用 alter session set container 命令切換到某個具體的 PDB。


好了,今天就到先這裏了,那麼,對於容器數據庫的切換,鏈接就說這麼多了,小夥伴們再見了。寫做不易,此文若是對你有幫助,請支持「在看」與轉發,您的支持即是我不斷寫做的最大的動力,實在吝嗇點個贊也行,微信公衆號之前的點贊又回來了,加油,讓咱們一塊兒努力作更好的本身!

 



Oracle 軟件包及補丁包免費下載及簡單說明

Oracle 19c 之 RPM 包安裝初體驗(一)

Oracle 12C 最新補丁下載與安裝操做指北

關於 Oracle ACFS 相關知識的簡單學習

Oracle 12CR2 安裝配置與基礎學習

Windows 環境下安裝 Oracle 19C


點亮在看,你最好看!

本文分享自微信公衆號 - JiekeXu之路(JiekeXu_IT)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索