如何在Oracle 12+中切换到唯一的PDB?

问题描述 投票:1回答:1

使用Oracle的vagrant boxes,您可以通过将它们放置在userscripts目录中来轻松添加在安装后运行的脚本。我想创建我的标准用户,这很容易(CREATE USER etc...)。但是,这些用户需要在PDB中创建,而不是在CDB $ ROOT中创建。

所以,如何从连接到CDB $ ROOT的sys / as sysdba切换到数据库中唯一的一个PDB?由于PDB的名称是由Vagrantfile中的参数控制的,因此不应对其进行硬编码。该脚本应成功运行而无需干预。

我到现在为止,这段代码正在工作,但是非常丑陋:

COLUMN pdb_name NEW_VALUE mypdb
SELECT pdb_name
  FROM (
        SELECT pdb_name,
               RANK() OVER (ORDER BY CREATION_SCN) r
          FROM dba_pdbs p1
         WHERE pdb_name <> 'PDB$SEED'
       )
 WHERE r = 1;

ALTER SESSION SET CONTAINER=&mypdb; 

必须有一种更简单的方法...

oracle oracle12c pluggable-database
1个回答
0
投票

如果确实是“唯一的” pdb,为什么要全部排序?您不只是需要

COLUMN pdb_name NEW_VALUE mypdb
SELECT pdb_name
FROM dba_pdbs p1
WHERE pdb_name <> 'PDB$SEED'

但是由于您使用的是流浪者文件,因此可以让脚本执行

grep ORACLE_PDB Vagrantfile | awk ...

获取PDB的名称,然后设置TWO_TASK或类似的名称。

© www.soinside.com 2019 - 2024. All rights reserved.