Oracle

【Oracle】ユーザ作成時のエラーの原因と対処法【ORA-65096】

投稿日:2020年4月26日 更新日:

目的

Oracle 18c Express EditionでCREATE USERしようとしたときにORA-65096が発生したので、対処方法について覚書する。

事象

Oracle 18c XEインストールして、試しにCREATE USERをしたところ、以下の状態に。

SQL> CREATE USER user01
  2    identified by password01
  3    default tablespace USERS
  4  ;
CREATE USER user01
            *
行1でエラーが発生しました。:
ORA-65096: 共通ユーザーまたはロール名が無効です

Oracle素人の自分はいきなり躓きました。

調べると、どうやらOracleのインスタンスの中にはCDBとPDBの二つのデータベースがあるらしく、CDB上ではローカルユーザの作成ができないらしい。とうことで、show con_nameで今接続しているデータベースを調べてみた。

SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT

思いっきりCDBじゃん…
ということで、接続先をPDBとやらへ変更すべく、以下のコマンドでPDBを調べてみました。

SQL> select name, open_mode from v$pdbs;

NAME
--------------------------------------------------------------------------------
OPEN_MODE
--------------------
PDB$SEED
READ ONLY

XEPDB1
READ WRITE

二つ出てきましたが、READ WRITEとなってるXEPDB1というのが、使うべきデータベースっぽい。

接続先を以下のコマンドで変更してみた。

SQL> alter session set container = XEPDB1;

セッションが変更されました。

行けた様子です。

ユーザ作成

XEPDB1につないだ状態で再度トライします。

まずは接続先がちゃんと変更されていることを確認します。

SQL> show con_name;

CON_NAME
------------------------------
XEPDB1

XEPDB1に変更できています。ではいよいよ作成します。

SQL> CREATE USER user01
  2    identified by password01
  3    default tablespace USERS
  4  ;

ユーザーが作成されました。

うまくいきました。ついでにgrantと表領域USERSへの権限追加も行います。

SQL> grant connect, resource to user01;

権限付与が成功しました。

SQL> alter user user01 quota unlimited on USERS;

ユーザーが変更されました。

なお、各種ツールから接続する際は、サービス名をxepdb1とすると接続できます。

まとめ

自分のように普段はPosetgreSQLなど別のRDBMSを使っていて、Oracleは初心者っていうような場合は最初にアーキテクチャを少し理解してから触りだしたほうがいいかも、と思いました。

-Oracle
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Oracle Database Express EditionのインストールからSQL発行まで

Oracleなのに無料で使用することができるOracle Database Express Editionをwindowsへインストールします。 Contents1 導入環境2 Oracle バージョ …

【Python】cx_Oracleでデータを一括挿入する方法

Contents1 概要2 環境3 Step1 : Oracle側テーブル作成4 Step2 : Pythonによる一括挿入コード5 まとめ 概要 pythonからOracleデータベースを操作するラ …

言語切り替え

カテゴリー