PR

Oracle Database ユーザー作成方法 (11g,12c,18c,19c)

スポンサーリンク
ORACLE

Oracle Database上にユーザを作成する方法と、作成したユーザを確認する方法を紹介します。

PDBでユーザを作成する方法を記載しますので、CDBのみのデータベースではPDBでの手順は読み飛ばしてください。

対象のPDBへ接続

CDBへログイン

SYSDBA権限でCDBへログインします。

[oracle@ol77 ~]$ sqlplus / as sysdba

SQL> show con_name

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

PDBの確認

show pdbs コマンドで、PDB一覧を確認します。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 HOGEPDB                        MOUNTED

ユーザを作成するPDBへ接続

ユーザを作成する対象のPDBへ接続します。

SQL> alter session set container = HOGEPDB;

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

SQL> show con_name

CON_NAME
------------------------------
HOGEPDB

a

PDBがオープンされていなければオープン

PDBがオープンされていなければ startup open コマンドでオープンしてあげます。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 HOGEPDB                        MOUNTED    NO

SQL> startup open;
プラガブル・データベースがオープンされました。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 HOGEPDB                        READ WRITE NO

ユーザの作成と権限付与

ユーザの作成

以下のSQLでユーザを作成します。

CREATE USER <作成するユーザ名> IDENTIFIED BY “<パスワード>”;

SQL> CREATE USER dekiruengineer IDENTIFIED BY "dekien";

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

必要な権限を付与

ユーザを作成しただけでは接続すら出来ないので、ユーザに対して権限を付与します。

以下の例では、CONNECT権限とRESOURCE権限を付与しています。

SQL> GRANT CONNECT TO dekiruengineer;

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

SQL> GRANT RESOURCE TO dekiruengineer;

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

作成したユーザーで接続テスト

CDB(もしくは11g)であれば、以下のconnectコマンドで接続可能ですが、PDBの場合はOracle Netでの接続となるので、ORA-01017が発生します。

SQL> connect dekiruengineer/dekien
ERROR:
ORA-01017: invalid username/password; logon denied


警告: Oracleにはもう接続されていません。

Oracle Netの設定

PDBの場合はローカル接続が出来ないため、tnsnames.oraに接続定義を記述してOracle Net経由でDatabaseに接続します。

tnsnames.oraの作成

[oracle@ol77 ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
※以下のエントリを追加します。
----------------------------------------------------------
HOGEPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = ol77)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = hogepdb)
    )
  )
----------------------------------------------------------

SQL*Plusで接続

先程作成したtnsnames.oraの接続識別子を@で指定して接続します。

[oracle@ol77 ~]$ sqlplus dekiruengineer@HOGEPDB

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
SQL>

以下のORAエラーが出力された場合、リスナーを起動してください。lsnrctlコマンドでリスナーを制御します。

ORA-12541: TNS: リスナーがありません

[oracle@ol77 ~]$ lsnrctl start

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 19-6月 -2020 12:11:08

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

/u01/app/oracle/product/19.0.3/dbhome_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
システム・パラメータ・ファイルは/u01/app/oracle/product/19.0.3/dbhome_1/network/admin/listener.oraです。
ログ・メッセージを/u01/app/oracle/diag/tnslsnr/ol77/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol77)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol77)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日                    20-6月 -2020 12:11:10
稼働時間                  23 日 5 時間 7 分 11 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /u01/app/oracle/product/19.0.3/dbhome_1/network/admin/listener.ora
ログ・ファイル            /u01/app/oracle/diag/tnslsnr/ol77/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol77)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

tnsnames.oraに指定するSERVICE_NAMEが不明な場合は、リスナーのステータスを確認するとサービスがわかります。

[oracle@ol77 ~]$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 03-7月 -2020 21:13:22

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol77)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      LISTENER
バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日                    20-6月 -2020 12:11:15
稼働時間                  23 日 5 時間 7 分 16 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      /u01/app/oracle/product/19.0.3/dbhome_1/network/admin/listener.ora
ログ・ファイル            /u01/app/oracle/diag/tnslsnr/ol77/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol77)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ol77)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/hoge/xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー...
サービス"hoegepdb"には、1件のインスタンスがあります。
  インスタンス"hoge"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"hoge"には、1件のインスタンスがあります。
  インスタンス"hoge"、状態READYには、このサービスに対する1件のハンドラがあります...
サービス"hogeXDB"には、1件のインスタンスがあります。
  インスタンス"hoge"、状態READYには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。