##はじめに
Oracle Database12cをインストールし、スキーマ作成にはまったのでメモ。
インストールが完了した後、スキーマを作成しようとするとエラーが発生。
「ORA-65096: 共通ユーザーまたはロール名が無効です」
今までこんなことなかったのになぜだろうと調べると、
デフォルトの接続先がCDB(コンテナデータベース)になっているため
PDB(プラガブルデータベース)に接続が必要とのことでした。
##接続手順
1.ログイン
as sysdba でログインします。
sqlplus SYSユーザ名/パスワード@ネットワークサービス名 as sysdba
.....に接続されました
2.接続先確認
現在の接続先を確認します。
SQL>show con_name;
CON_NAME
------------------------------
CDB$ROOT
CDB$ROOTと表示されているのでCDBに接続しているということがわかります。
3.PDB確認
PDB名を確認します。(わかる場合は飛ばします。)
SQL>select name, open_mode from v$pdbs;
NAME
------------------------------
OPEN_MODE
--------------------
PDB$SEED
READ ONLY
ORCLPDB
READ WRITE
$SEEDではない方ががPDB名となります。
そのため(この場合)ORCLPDBがPDB名だとわかります。
4.PDB起動
PDBを起動します。
SQL> alter pluggable database ORCLPDB open;
すでに起動している場合は下記が表示されます。(表示されても問題ないです。)
alter pluggable database ORCLPDB open
*
行1でエラーが発生しました。:
ORA-65019: プラガブル・データベースORCLPDBはすでにオープンしています
5.接続先変更
CDBからPDBに接続先を変更します。
SQL> alter session set comtainer = ORCLPDB;
セッションが変更されました。
6.接続先確認
PDBに接続できているか確認します。
SQL> show con_name;
CON_NAME
------------------------------
ORCLPDB
PDB名が表示されていれば接続成功です。
##スキーマ作成
PDBに接続ができたらスキーマを作成します。
SQL>create user スキーマ名 identified by パスワード
ユーザが作成されました
*必要に応じて権限付与を行ってください。
##tnsnames.ora追記
作成したスキーマをPDBで接続するために下記をtnsnames.oraに追記します。
ネットワークサービス名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ホスト名)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PDB名)
)
)
##ログイン
作成したスキーマでログインをします。
sqlplus スキーマ名/パスワード@ネットワークサービス名
.....接続されました