做者 | 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源创计划”,欢迎正在阅读的你也加入,一块儿分享。