Oracle Database 12.2 で create user すると ORA-65096 が発生する。
事象
- Oracle Database 12.2 で create user すると ORA-65096 が発生する。
$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Sun Aug 23 16:03:13 2020 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> create user scott identified by tiger default tablespace users temporary tablespace temp quota unlimited on users; 2 3 4 create user scott identified by tiger * ERROR at line 1: ORA-65096: invalid common user or role name
原因
- ルートコンテナにローカルユーザーを作成しようとしているため。
ルートコンテナにローカルユーザーを作成しようとした場合に発生するエラーです。 ルートコンテナには共有ユーザー(common user) と呼ばれる特殊なユーザーしか作成することはできません。マルチテナントアーキテクチャにおけるローカルユーザーは、従来のアーキテクチャにおける通常のユーザーと同等のものと考えてください。 Oracle Database 12c R1からマルチテナントアーキテクチャと呼ばれる新しいアーキテクチャが導入されました。 マルチテナントアーキテクチャでは、単一のインスタンス内に複数のデータベースを配置することができます。マルチテナントアーキテクチャにおける個々のデータベースをプラガブルデータベース(PDB)と呼びます。マルチテナントアーキテクチャにただ1つ存在する管理用のデータベースとしてマルチテナントコンテナデータベース(CDB)が存在します。マルチテナントコンテナデータベースをルートコンテナと呼ぶ場合もあります。
ORA-65096: 共通ユーザーまたはロール名が無効です | 技術情報 | 株式会社コーソル
解決策
- 接続しているデータベースを確認
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
- PDBの名前と現在のOPEN_MODEを確認
SQL> select name, open_mode from v$pdbs; NAME -------------------------------------------------------------------------------- OPEN_MODE ---------- PDB$SEED READ ONLY PDB1 READ WRITE
- PDB に接続
SQL> alter session set container = pdb1; Session altered.
- PDB をオープン
SQL> alter pluggable database pdb1 open; Pluggable database altered.
- ユーザー作成
SQL> create user scott identified by tiger default tablespace users temporary tablespace temp quota unlimited on users; 2 3 4 User created. SQL> grant dba to scott; Grant succeeded.