【Oracle Database 19c】データベース (CDB と PDB) への接続と各種操作【SQL*Plus】
はじめに
自宅で Oracle Database 19c を使用していて、 SQL*Plus でのデータベース接続や起動と停止方法をいつも忘れてググっているので、せっかくなのでまとめて記事にしてみました。
EM Express (Oracle Enterprise Manager Database Express) を使用すれば GUI で各種操作を行うことができますが、今回は CLI (SQL*Plus) での操作に限定してまとめています。
動作環境
OS | Version |
---|---|
Windows 10 Pro | 1909 |
Application | Version |
---|---|
PowerShell | 5.1.18362.752 |
Database | Version |
---|---|
Oracle Database 19c | 19.3.0 |
SQL*Plus の起動
sqlplus /nolog
データベースには接続せず、 SQL*Plus のみを起動します。
SQLPlus の起動と同時にデータベースへ接続することも可能ですが、 CLI のコマンド履歴にユーザとパスワードが残る可能性があるので、セキュリティの観点から言えば、 SQLPlus 起動後に CONNECT
コマンドでデータベース接続することをお勧めします。
データベース接続
SQL*Plus 起動後、 CONNECT
コマンドでデータベースへ接続します。
ローカル接続
-- ユーザ権限 CONNECT [username]/[password] -- SYSDBA 権限 CONNECT [username]/[password] AS SYSDBA
ローカル接続では、 OS の環境変数 (ORACLE_SID
) に登録されているデータベースに接続されます。
簡易接続ネーミング・メソッド
-- ユーザ権限 CONNECT [username]/[password]@[host]:[port]/[service_name] -- SYSDBA 権限 CONNECT [username]/[password]@[host]:[port]/[service_name] AS SYSDBA
サービス名 (service_name
) には、初期化パラメータ・ファイルの SERVICE_NAMES
(= DB_UNIQUE_NAME
.DB_DOMAIN
) を入力します。
PDB に接続する場合のサービス名 (service_name
) は、 pdb_name
.DB_DOMAIN
になります。
ローカル・ネーミング・メソッド
-- ユーザ権限 CONNECT [username]/[password]@[net_service_name] -- SYSDBA 権限 CONNECT [username]/[password]@[net_service_name] AS SYSDBA
ローカル・ネーミング・メソッドを使用する場合、ネットワーク・サービス名 (net_service_name
) を tnsnames.ora
ファイルに追加する必要があります。
データベース起動
CDB
CDB の起動は SYSDBA
または SYSOPER
権限を持つユーザで行う必要があります。
STARTUP [OPEN [db_name] | MOUNT [db_name] | NOMOUNT]
STARTUP
と STARTUP MOUNT
コマンドで [db_name]
を省略した場合、初期化パラメータ・ファイルの DB_NAME
のデータベース名が使用されます。
OPNE
MOUNT
NOMOUNT
PDB
PDB の起動は SYSDBA
、 SYSOPER
、 SYSBACKUP
、 SYSDG
権限のいずれかを持つユーザが、 CDB に接続した状態で行う必要があります。
ALTER PLUGGABLE DATABASE [ALL | [pdb_name]] OPEN [READ WRITE | READ ONLY]; -- または STARTUP PLUGGABLE DATABASE [pdb_name] OPEN [READ WRITE | READ ONLY]
オープン・モードを省略した場合は、 READ WRITE
が指定されます。
STARTUP PLUGGABLE DATABASE
コマンドは、単一の PDB をオープンすることができます。
PDB の自動起動 (CDB 再起動時の PDB の オープン・モード の保持)
ALTER PLUGGABLE DATABASE [ALL | [pdb_name]] SAVE STATE;
通常、 CDB 再起動 (通常起動) 時の PDB の OPEN_MODE
(オープン・モード) は MOUNTED
(マウント・モード) ですが、 OPEN_MODE
を保持させると、次回 CDB 起動時の PDB の OPEN_MODE
を CDB 再起動前と同じ状態にすることができます。
つまり、 PDB の OPEN_MODE
が READ WRITE
(読取り/書込みモード) で上記 SQL を実行すると、次回 CDB 起動時も PDB の OPEN_MODE
は READ WRITE
となり、 CDB の起動の度に PDB をオープンする必要が無くなります。
ちなみに、オープン・モードの保持をやめる場合は、 SAVE STATE
ではなく DISCARD STATE
を指定します。
データベース停止
CDB
CDB の停止は SYSDBA
または SYSOPER
権限を持つユーザで行う必要があります。
SHUTDOWN [NORMAL | IMMEDIATE | TRANSACTIONAL | ABORT]
NORMAL
(通常停止)- データベースへの新規接続はできないが、接続中の全ユーザーがセッションを終了するまで待機する
IMMEDIATE
(即時停止)TRANSACTIONAL
- アクティブなトランザクションすべてが完了後、接続中の全ユーザのセッションを切断してデータベースを停止する
- 'ABORT' (緊急停止)
PDB
PDB の停止は、マウント・モードへのオープン・モードの変更を意味します。
ALTER PLUGGABLE DATABASE [ALL | [pdb_name]] CLOSE [IMMEDIATE | ABORT];
IMMEDIATE
または ABORT
を指定しない場合、通常停止 (NORMAL) となります。
停止モードの詳細は、 CDB の SHUTDOWN
コマンドでの停止と同様です。
おわりに
今回は「Oracle Database に接続して CDB や PDB を起動・停止する」という簡単な操作についてまとめました。
記事をまとめる中で、なるべく正確な情報を記載するため Oracle 公式ドキュメントを読みましたが、同じ結果が得られる別の方法や細かいオプションなど、取り上げていない内容が沢山あります。
ORACLE MASTER などの資格を取得するためにはそういった詳細な理解も必要ですが、プライベートでの利用程度であれば、とりあえず一つの方法が分かっていれば実用上は問題ありません。
最近は MySQL や PostgreSQL などの OSS-DB や NoSQL などの利用が広がり、データベースとしての Oracle は下火になりつつあると言われていますが、個人的には Oracle Database が好きなので、次は Oracle Cloud に手を出そうかと思っています。
仕事でしかデータベースを触っていない方は、ぜひ一家に一データベースを Oracle Database で構築してみてはいかがでしょうか。
PC が重くなるという方は Oracle Cloud もありますよw