Как перейти на единственную PDB в Oracle 12+?
Используя бродячие блоки Oracle, вы можете легко добавлять сценарии, запускаемые после установки, помещая их вuserscripts
каталог. Я хочу создать своих стандартных пользователей, что легко (CREATE USER etc...
). Однако этот пользователь должен быть создан в PDB, а не в CDB$ROOT.
Итак, как мне переключиться с sys / as sysdba
, который подключен к CDB$ROOT, к единственной 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;
Должен быть способ попроще...
1 ответ
Если это правда, что это "единственный и неповторимый" 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 или подобное этому.