IT Learning

実践形式でITのお勉強

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は初心者っていうような場合は最初にアーキテクチャを少し理解してから触りだしたほうがいいかも、と思いました。

Related

-Oracle
-

執筆者:


  1. なまら より:

    初めてオラクルデータベースを触っている身ですが、大変たすかりました!ありがとうございます。

comment

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