Oracle12cユーザの追加にてOracle11gのユーザ作成方法と少し違っていたためメモ。
管理者でログイン
sqlplusにて管理者としてログインします。
[oracle@oracle ~]$ sqlplus sys as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 8 00:25:30 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
あれ?怒られる…
SIDの設定が必要みたいなので設定します。
[oracle@oracle ~]$ export ORACLE_SID=orcl
orclはOracleインストール時に設定したグローバル・データベース名を指定します。
そして再度接続。
[oracle@oracle ~]$ sqlplus sys as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 8 00:40:30 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
ログインできました。
環境設定で指定する方法以外に
sqlplus sys@orcl as sysdba
も同様に接続できると思います。
ユーザの追加
管理者で接続できたのでユーザを作成してみます。
ためしにOracleというユーザを作成してみます。
SQL> CREATE USER oracle IDENTIFIED BY "oracle" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp ;
CREATE USER oracle IDENTIFIED BY "oracle" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp
*
ERROR at line 1:
ORA-65096: invalid common user or role name
またしてもエラー。
理由を調べてみると、Oracle12cからはアーキテクチャが変わり、ユーザの追加や変更を行う際にはプラガブルデータベース(PDB)に接続して作成・変更する必要があるみたい。
参考:スキーマ(ユーザ)作成時に「ORA-65096」~Oracle 12cのアーキテクチャはここが違う~
なので一度PDBに接続してからユーザ登録を行います。
現在の接続先からPDBに変更します。
現在の接続先の確認
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
OPEN_MODEの確認
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBORCL READ WRITE
PDBORCLがREAD WRITEになってたらOK。
MOUNTEDの場合はPDBを起動します。
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBORCL MOUNTED
SQL> alter pluggable database pdborcl open;
Pluggable database altered.
SQL> select name, open_mode from v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBORCL READ WRITE
接続先の変更
SQL> alter session set container = pdborcl;
Session altered.
SQL> show con_name
CON_NAME
------------------------------
PDBORCL
ユーザを追加します。
SQL> CREATE USER oracle IDENTIFIED BY "oracle" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp;
User created.
作成したユーザがログオンできるようにコネクトロール権限を与えます。
SQL> grant connect to oracle;
Grant succeeded.
これでユーザを作成し、接続できる状態になりました。
作成したユーザの接続
作成したユーザを接続するには以下の接続文字列で繋ぎます。
[oracle@oracle ~]$ sqlplus oracle/oracle@localhost/pdborcl
SQL*Plus: Release 12.1.0.2.0 Production on Mon Jun 8 01:17:04 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Mon Jun 08 2015 01:14:02 +09:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
@の後ろにサーバ名が必要みたいです。(ただのpdborclだとつなげれませんでした。)