0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PDBにユーザーを作ってSQL Developerで繋ぐ

Posted at

新卒1年目です。研修でSQL Developerを用いてOracle SQLを勉強しています。
自分なりにDBを勉強をしてたらPDB(プラガブルデータベース)というのを知りました。
そこでデフォルトで存在しているPDBの「xepdb1」を用いて、研修用DB環境を整えたときの方法をまとめてみます。
最終的にSQL Developerで接続することを目指します。
私の理解が足りないこともあり、残念ながら細かいことまでは説明しきれていません。ご容赦ください。

大まかな流れ
①既存のPDBの確認・接続
②PDBにユーザーを作成
③作成したユーザーを用いてPDBにSQL Developerで接続

前提

OSはWindows10です。sqlplusを利用します。

DBの環境を構築するために、以下の2つを使いました。インストールの方法は省略します。
Oracle SQL Developerの入手にはOracleアカウントが必要です。

Oracle Database 21c Express Edition
Oracle SQL Developer 21.2.1

①既存のPDBの確認・接続

リスナーの確認

cmd(コマンドプロンプト)を管理者権限で起動。
下記のコマンドでリスナーを起動。

> lsnrctl status // リスナーの状態確認
> lsnrctl start  // 状態確認後、リスナーが起動していなければ起動

IPアドレス、ポート番号の確認

リスナーの状態を確認した時と同じコマンドで確認できます。

> lsnrctl status // IPアドレスとポート番号(デフォルトでは1521)の確認

PDB名の確認

上記リスナーの起動方法でも確認できる場合があります。
しかし時たまサービスが正しく表示されない場合があるので、より確実な方法を示します。

デフォルトで存在するデータベース「xe」にsystemユーザーで接続。

 > sqlplus system/<パスワード>@<IPアドレス or ホスト名>:<ポート番号>/SID

例> sqlplus system/password@XXX.XXX.XXX.XXX:1521/xe

接続できたら以下のコマンドでPDB名の確認

sql> SELECT name, open_name FROM v$pdbs;

NAME          OPEN_MODE 
------------- ----------
XEPDB1        READ WRITE //PDB名は「XEPDB1」

以上でPDB名が確認できました。

PDBにsystemユーザーで接続

PDBに接続します。xeにsystemユーザーで接続した時と同じ要領で、コマンドを書きます。SIDがPDB名であることに注意してください。

CDBにsystemユーザーで接続。

例> sqlplus system/password@XXX.XXX.XXX.XXX:1521/xepdb1 // SIDはPDB名!

sqlplusに接続後、正しく接続できているかは以下で確認できます。PDB名が表示されていれば成功です。

sql> show con_name

②PDBにユーザーを作成

以降は一般的なテーブルスペースの作成、ユーザー作成の流れと同じです。

テーブルスペースの作成

自動拡張等の設定は今回OFFにしましたが、任意で変更してください。

sql> CREATE TABLESPACE <テーブルスペース名>
     DATAFILE '<データファイル名(フルパス指定可).dbf>'
     SIZE 100M AUTOEXTEND OFF; // 任意で変更してください。

新規ユーザーの作成

作成したテーブルスペースを用いて新規ユーザー作成します。

sql> CREATE USER <ユーザー名>
     IDENTIFIED BY <パスワード>
     DEFAULT TABLESPACE <作成したテーブルスペース名>
     TEMPORARY TABLESPACE TEMP;

権限の付与

最低限の権限を付与します。

sql> GRANT CONNECT, RESOURCE TO <ユーザー名>;
sql> GRANT UNLIMITED TABLESPACE TO <ユーザー名>;

③作成したユーザーを用いてPDBにSQL Developerで接続

以下の設定でSQL Developerに新規データベース接続を作成。

ユーザー名、パスワード: ユーザ名とパスワードを入力。
ホスト名: ホスト名、もしくはIPアドレスを入力
ポート: 1521 (デフォルト)
SID、サービス名: サービス名を選択し、PDBの名前(サービス名)を入力

2022-08-17223524.jpg
以上で完了です。

まとめ 感想

研修の復習も兼ねて、PDBでDB環境を用意するやり方をまとめました。もしも似た状況の方が居れば、少しでも助けになればと思います。

研修ではOracle Database 21c Express Editionをインストールした時点で、systemユーザーで簡単に接続できるxeというDBを使って、SQLを学ぶことを推奨されました。
しかしxeはCDB(コンテナデータベース)なので、管理用データベースのはず…。なのでセキュリティ的に疑問がありました。
卒業基準だったわけでは無いので、SQLに触れてみる、体感してみるという意図が強かったのかなと思います。

今回のよりもっといい方法がある思うし、知識がごちゃごちゃになっている部分も多いので、この先も勉強しつつ理解していけたらと思います。
また是非アドバイスいただけると嬉しいです。つよつよになりたい。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?