サーバー ツール SQL

Oracle12c ユーザ追加

2015年6月8日

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だとつなげれませんでした。)

-サーバー, ツール, SQL
-, , , , ,