データベース

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

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

皆さん、こんにちは!

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

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

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

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

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

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

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

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


SEおっさん
SEおっさん
SE歴20年のオッサンが詳しく解説するぞい!

※保有資格:OracleMasterGold/JavaWebコンポーネントディベロッパ/応用情報技術者/簿記2級

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を確認
OracleのPDB接続エラー!サービス名とtnsnamesを確認
皆さん、こんにちは! Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。 11g以前のようにDB接続しようすると… ORA-01017.....

 

そもそも『PDB・CDBって何?』という方は下記をどうぞ。

Oracleマルチテナントとは?CDBとPDBの3つのメリット!
Oracleマルチテナントとは?CDBとPDBの3つのメリット!
こんにちは! Oracle12cから導入された「マルチテナント・アーキテクチャ」ってご存知しょうか?   『マルチテナント・アーキテクチャって何だろう.....


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

コメントを残す

*