データベース

OracleのCDBで共通ユーザ作成!ORA-65096の解消法

  • このエントリーをはてなブックマークに追加
  • LINEで送る

皆さん、こんにちは!

Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。

11g以前とアーキテクチャが異なるので、

以前のようにユーザ作成すると…

ORA-65096: 共通ユーザーまたはロール名が無効です

というエラーが発生するのです。

『ORA-65096エラーは解消できるんかな…』

『どうやってユーザー作成するんだろう…』

このような疑問に答えます。


OracleのCDBで共通ユーザ作成!ORA-65096の解消法

Oracle12cよりマルチテナント構成(※CDB・PDB)が導入されました。

  • CDB:コンテナデータベース
  • PDB:プラガブルデータベース

CDBへ接続時、Oracle11g以前と同じ感覚でユーザ作成(create user)したらエラーとなります。

ORA-65096: 共通ユーザーまたはロール名が無効です

上記は『CDBには共通ユーザしか作成できないよ』というエラーです。

CDBはPDBの基盤となる共通DBなので、CDBのユーザは共通ユーザと呼ばれます。

ORA-65096の解消方法は2つあります。



スポンサーリンク

(その1)ORA-65096の解消法:共通ユーザを作成したい場合

CDBユーザに管理者として、共通ユーザを作成したい場合は、

ユーザ名の先頭に「C##」を入れてあげる必要があります。

共通ユーザの作成例

create user c##testuser identified by testuserpw;

これだけでOKです。

(その2)ORA-65096の解消法:従来ユーザを作成したい場合

共通ユーザではなく、従来のユーザを作成したい場合は、接続先をCDBからPDBへ変更してユーザ作成する必要があります。

この時、変更先のプラガブル・データベース(PDB)はOPENされていることが前提となります。

下記の例を参考にしてください。

  1. プラガブル・データベース(PDB)をOPENする(例)
    alter pluggable database ORCLPDB open;
  2. プラガブル・データベース(PDB)へ切り替える(例)
    alter session set container = ORCLPDB;

詳細はこちらの記事にまとめました。

Oracle接続先確認とCDB→PDBの切り替え・自動起動の方法
Oracle接続先確認とCDB→PDBの切り替え・自動起動の方法
皆さん、こんにちは! Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。   『DBの接続先が、CDBかPDBか知る方法ない.....

 

PDB接続に関しては注意点があるので次に解説します。



スポンサーリンク

OracleのPDB接続エラーはサービス名とtnsnamesを確認

OracleのCDBで共通ユーザ作成エラーが解消しても、OracleのPDB接続でエラーとなる場合があります。

え!どんな時?

 

プラガブル・データベース(PDB)は、TNS接続しか受け付けません。

TNS接続とはtnsnames.oraで定義したネットサービス名(接続文字列)で接続するコトです。

そして、ネットサービス名はサービス名とIPアドレス・PORT番号を定義します。

PDBにもサービス名が存在するので、このサービス名でtnsnames.oraに定義しなければなりません。

間違ってCDBのサービス名でTNS接続すると「ORA-01017」エラーになります。

 

PDBのサービス名はリスナーの状態確認コマンド「lsnrctl status」を使用して確認できますよー。
~詳細はこちら~
OracleのPDB接続エラー!サービス名とtnsnamesを確認

 

~『PDB・CDBって何?』という方はこちら~
Oracleマルチテナントとは?CDBとPDBの3つのメリット!

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」
「おっさんに何かお願いできないかな?」
という時は、おっさんココナラまで♪



スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*