Oracle如何查看当前PDB容器信息

Oracle多租用户环境中,我们如何查看当前会话的容器信息呢?一般情况下,如果当前会话位于CDB$ROOT容器下,那么使用命令show pdbs可以查看所有的pdb数据库信息,如果当前会话位于某一个具体的PDB容器时,那么此时只能查看当前PDB的容器信息,具体如下所示:

sys@ctest> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PTESTUAT                       READ WRITE NO
         7 PDB3                           MOUNTED
sys@ctest> alter session set container=PDB1;

Session altered.

sys@ctest> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 PDB1                           READ WRITE NO
sys@ctest> alter session set container=CDB$ROOT;

Session altered.

sys@ctest> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO
         4 PDB2                           READ WRITE NO
         5 PTESTUAT                       READ WRITE NO
         7 PDB3                           MOUNTED
sys@ctest>

有时候,我们使用的账号不是sysdba角色,此时使用show pdbs命令时,会由于权限不够而报错SP2-0382: The SHOW PDBS command is not available)。另外,有些工具,例如PL/SQL Developer中没法使用show pdbs这些命令,此时我们也可以使用下面SQL来查看当前PDB容器库信息以及会话信息。

sys@ctest> alter session set container=PDB2;

Session altered.

sys@ctest> set line 232
sys@ctest> col os_pid for a7
sys@ctest> col tracefile for a80 
sys@ctest> col username for a15
sys@ctest> col con_name for a10
sys@ctest> col schemaname for a10
sys@ctest> SELECT distinct s.con_id
  2       , c.con_name
  3       , s.username
  4       , s.user#
  5       , s.sid
  6       , s.serial#
  7       , s.prev_hash_value
  8       , schemaname
  9       , p.spid os_pid
 10  FROM V$SESSION S, v$process p, v$active_services c,
 11  (SELECT sid FROM v$mystat WHERE rownum=1sid
 12   WHERE audsid = SYS_CONTEXT('userenv','sessionid')
 13   and p.addr = s.paddr
 14   and sid.sid = s.sid
 15   and s.username is not null
 16  and s.con_id=c.con_id
 17  and s.con_id=p.con_id
 18  /

    CON_ID CON_NAME   USERNAME             USER#        SID    SERIAL# PREV_HASH_VALUE SCHEMANAME OS_PID
---------- ---------- --------------- ---------- ---------- ---------- --------------- ---------- -------
         4 PDB2       SYS                      0        147      48906      1610794605 SYS        21336

1 row selected.

sys@ctest>


原文始发于微信公众号(DBA闲思杂想录):Oracle如何查看当前PDB容器信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/228076.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!