12c后的sqlprompt显示设置的研究
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,如大家所了解的,oracle 12c的CDB,PDB新特性中可以通过alter session set container=XXX的方式来变更当前容器,我就在想,那么有没有直观的办法在sqlpromp
千家信息网最后更新 2025年02月04日12c后的sqlprompt显示设置的研究如大家所了解的,oracle 12c的CDB,PDB新特性中可以通过alter session set container=XXX的方式来变更当前容器,我就在想,那么有没有直观的办法在sqlprompt中直观的显示出这种容器的变化呢,以此为由有了下面的一系列实验。
首先,我们需要了解怎么判断当前容器
第一种:show con_name
SQL> alter session set container=pdb1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
PDB1
第二种:SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;
SQL> alter session set container=pdb2;
Session altered.
SQL> SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','CON_NAME')
--------------------------------------------------------------------------------
PDB2
于是我就在考虑怎么在sqlprompt中直观的显示这种容器上的变化
首先是修改glogin.sql文件
[oracle@home01 admin]$ vi glogin.sql
Define _editor = 'vi'
set time on
set termout off
column propmt_c new_value propmt_c
SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') as propmt_c FROM DUAL;
set sqlprompt "_user'@'_connect_identifier(&propmt_c)> "
然后登入sqlplus测试
[oracle@home01 admin]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sun Oct 15 15:34:40 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics
and Real Application Testing options
15:34:40 SYS@PRODCDB(CDB$ROOT)> alter session set container=pdb1;
Session altered.
15:35:12 SYS@PRODCDB(CDB$ROOT)> show con_name
CON_NAME
------------------------------
pdb1
结果是虽然容器被改变了,但是sqlprompt仍然显示的是旧的CDB$ROOT
用connect的方式登陆不同的容器
15:37:16 SYS@PRODCDB(CDB$ROOT)> conn sys/oracle@pdb2 as sysdba
Connected.
15:37:42 SYS@pdb2(PDB2)> show con_name
CON_NAME
------------------------------
PDB2
15:37:49 SYS@pdb2(PDB2)>
这次成功了,通过connect的方式登陆的情况下,sqlprompt的显示发生了变化,但是connect_identifier也对应的变成了容器库。。。
实验总结:可以看出来这个sqlprompt,只在刚进sqlplus的时候作校验,之后不会再发生变动,如果使用alter session set container的方式来修改当前容器的话,结果就是sqlprompt不会跟着意识到容器的变化,而是维持刚登入时获得的con_name,但是如果用conn sys/oracle@pdbprod1 as sysdba的方式重新登入,sqlprompt就会发生改变
大家加油!
首先,我们需要了解怎么判断当前容器
第一种:show con_name
SQL> alter session set container=pdb1;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
PDB1
第二种:SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;
SQL> alter session set container=pdb2;
Session altered.
SQL> SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;
SYS_CONTEXT('USERENV','CON_NAME')
--------------------------------------------------------------------------------
PDB2
于是我就在考虑怎么在sqlprompt中直观的显示这种容器上的变化
首先是修改glogin.sql文件
[oracle@home01 admin]$ vi glogin.sql
Define _editor = 'vi'
set time on
set termout off
column propmt_c new_value propmt_c
SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') as propmt_c FROM DUAL;
set sqlprompt "_user'@'_connect_identifier(&propmt_c)> "
然后登入sqlplus测试
[oracle@home01 admin]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Sun Oct 15 15:34:40 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics
and Real Application Testing options
15:34:40 SYS@PRODCDB(CDB$ROOT)> alter session set container=pdb1;
Session altered.
15:35:12 SYS@PRODCDB(CDB$ROOT)> show con_name
CON_NAME
------------------------------
pdb1
结果是虽然容器被改变了,但是sqlprompt仍然显示的是旧的CDB$ROOT
用connect的方式登陆不同的容器
15:37:16 SYS@PRODCDB(CDB$ROOT)> conn sys/oracle@pdb2 as sysdba
Connected.
15:37:42 SYS@pdb2(PDB2)> show con_name
CON_NAME
------------------------------
PDB2
15:37:49 SYS@pdb2(PDB2)>
这次成功了,通过connect的方式登陆的情况下,sqlprompt的显示发生了变化,但是connect_identifier也对应的变成了容器库。。。
实验总结:可以看出来这个sqlprompt,只在刚进sqlplus的时候作校验,之后不会再发生变动,如果使用alter session set container的方式来修改当前容器的话,结果就是sqlprompt不会跟着意识到容器的变化,而是维持刚登入时获得的con_name,但是如果用conn sys/oracle@pdbprod1 as sysdba的方式重新登入,sqlprompt就会发生改变
大家加油!
容器
方式
变化
直观
结果
实验
登陆
不同
成功
办法
可以通过
就是
情况
意识
文件
时候
特性
而是
跟着
面的
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发研究生论文题目
梦幻2020服务器现在还火吗
查询系统内数据库口令mysql
联通宽带玩电信服务器还卡嘛
西京学院计算机网络技术
致远协同软件开发
嘉兴营销网络技术有哪些
服务器没d盘
vpn服务器填什么
延庆区信息网络技术推广
期货软件开发
管理服务器app
新型网络安全攻击事件危害
我国网络安全的重要议题
大数据时代网络安全隐患
图片存入数据库安全吗
服务器时间不对
鲁东大学买的外文数据库
湖南智能化软件开发收费
计算机网络技术教材十三五
怎么用代码修改数据库中的信息
戴尔r930服务器价位
广西佳宇网络技术有限公司刘琨
数据库sql语言外键怎么写
软件开发经营
怎么辨别是不是三星服务器内存
人员组织架构数据库设计
宝山区工商软件开发价格优惠
我国网络安全发展的主要特点
计算机三级网络技术哪个网站