Oracle Databaseへのアクセス



 Oracle Databaseは「データベース」ではなく「インスタンス」に接続する。

接続方法は複数あり、ローカル・リモート両方に対応。
接続後に、PDB(Pluggable Database)に切り替えて利用することも可能。


🧩 接続方法の種類

1. SQL*Plusによる接続(ローカル)

  • Oracle標準のコマンドラインツール

  • OracleホームのBINフォルダにインストール済み

  • SYSユーザーでSYSDBA権限を持ってローカル接続するには以下の手順:

    • Oracleユーザーでログイン

    • ORAENVスクリプトで ORACLE_HOME, ORACLE_SID など環境変数を設定

    • sqlplus / as sysdba で接続

    • ※「connected to an idle instance」の表示=インスタンスが停止中 → startup コマンドで起動


2. SQL*Plusによる接続(リモート)

  • フロントエンドや別サーバーから接続する際は、ユーザー名とパスワードが必要

  • 接続文字列の構文:

swift
sqlplus ユーザー名/パスワード@ホスト名:ポート番号/サービス名 as sysdba
  • 例:

kotlin
sqlplus sys/Oracle123@192.168.1.10:1521/pdb1 as sysdba

🏗️ PDBへの接続と操作

1. SYSDBAで接続後に切り替え

  • ルートコンテナ(CDB)に接続後、以下のコマンドでPDBを操作:

    sql
    SHOW PDBS; -- PDB一覧表示 ALTER PLUGGABLE DATABASE pdb1 OPEN; -- 起動 ALTER SESSION SET CONTAINER = pdb1; -- 接続先をPDBに変更

2. Easy Connectによる直接接続

  • クライアント側の設定不要(TCPのみ対応)

  • 必要条件:

    • リスナーが起動中であること

    • lsnrctl status でPDB用のサービスが表示される

  • 接続文字列はリモートと同様


🛠️ SQLとShellスクリプトの実行

1. HRユーザーの利用

  • サンプルスキーマ(HR)のユーザーを使用する場合:

    sql
    ALTER USER hr ACCOUNT UNLOCK; ALTER USER hr IDENTIFIED BY 新しいパスワード;
  • SYSユーザーでHR.EMPLOYEESのようにスキーマ名を明示する必要あり

2. Shellスクリプト内でSQLPLUSを使う

bash
#!/bin/bash
sqlplus hr/password@ホスト名:ポート/PDBサービス <<EOF SELECT COUNT(*) FROM employees; UPDATE employees SET salary = salary * 1.1; EOF
SELECT COUNT(*) FROM employees;
UPDATE employees SET salary = salary * 1.1;
EOF
  • SQL*Plusへのコマンド送信にはヒアドキュメント(<<EOF)を使用

3. SQLスクリプトをSQL*Plusで実行

  • @script.sql 形式でSQLファイルを指定すれば実行可能

  • コマンドラインでも、SQL*Plus内でも使用可


Oracle SQL Developer

Oracle SQL Developerは、DBA作業や開発作業をGUIで実行できるツールです。Windowsだけでなく、他のOSでも簡単にインストールできます。


💻 インストール方法(Windows 10の場合)

  1. 「JDK 8 を含む」64bit版のアーカイブをダウンロード

    • Java開発キット(JDK)が組み込まれているバージョンを選択

  2. ZIPファイルを解凍

  3. 解凍先のトップディレクトリにある sqldeveloper.exe を実行

    • デフォルトで組み込みJDKが利用されるよう設定されている


🔗 データベース接続の設定

  1. 左上の「緑の+マーク(接続作成)」をクリック

  2. 「新しい接続」フォームに以下を入力:

    • 接続名

    • ユーザー名・パスワード

    • ロール(SYSDBAなど)

    • サーバーIPアドレス

    • サービス名(lsnrctl statusコマンドで確認可能)

  3. 「接続テスト」ボタンをクリックして接続確認

❌ 最初はファイアウォールのブロックにより接続失敗
✅ ファイアウォールを停止すれば接続成功
本番環境ではファイアウォールを無効化しないよう注意

  1. 接続情報は「保存」ボタンで保存可能


📂 SQL Developerでできること(抜粋)

  • 各ユーザーのデータをGUIで確認可能

    • ユーザー一覧 → 例:HRスキーマを選択

    • テーブル、ビュー、インデックス、プロシージャなど一覧表示

  • 任意のテーブルを選択し、中身のデータやCREATE文の確認が可能


SQL Command Line / Enterprise Manager Express

💻 SQL Command Line(SQLcl)

SQL Command Line(通称:SQLcl)は、SQL*Plusの機能をすべて持ち、さらに高機能なコマンドラインツールです。

🔹 主な特徴

機能説明
TAB補完コマンドやテーブル名などの補完が可能
↑↓キーで履歴参照コマンド履歴を簡単に呼び出せる
SET SQLFORMATクエリ結果の出力形式を整形できる(例:CSV、JSONなど)
INFOコマンドテーブルの定義、統計情報、キー情報などを簡単に確認可能
➡ 開発者・DBAにとって、直感的かつ効率的なCLIツールです。

🌐 Oracle Enterprise Manager Express(EM Express)

以前は、Oracleの管理用WebインターフェースとしてEM Expressが使用されていました。

🔹 主な機能(旧バージョン)

  • ユーザー管理

  • メモリやストレージ管理

  • 各種管理操作(セキュリティやパフォーマンスなど)

🔸 現状の制限(Oracle 19c 以降)

  • Flashがサポート終了 → 旧バージョンは使用不可

  • Oracle 19c 以降のEM Expressは Java JET ベース

  • 利用できる機能は「パフォーマンスメニュー」のみ

    • ユーザー管理・ストレージ管理などは非対応

➡ Oracle 19cでは、GUI管理ツールとしての用途は限定的になっています。


前の記事(Oracle Database アーキテクチャの構成要素(インスタンス構造))

次の記事(Oracle インスタンス管理)