Oracle SQL Developerの練習をする

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

前回の記事でOracle Database 23ai Freeをインストールしました。

クライアントとしてOracle公式であるOracle SQL Developerをインストールしました。

Oracleの開発に慣れている方ならこのまま自分の好きなようにやっていけば良いのですが、Oracleが初めてだと戸惑うことも出てくると思います。

私の場合だと、MySQLは20年近くの経験がありますが、Oracle はかなり前に2年触ったくらいで、現在のOracleのことはよく分かっていません。

ということでちょっと練習しておきましょう。

なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。

環境

実施日2024-06-30
サーバVMwareESXi 6.7 U2
OSOracle Linux 8.10
cat /etc/redhat-release
Red Hat Enterprise Linux release 8.10 (Ootpa)
cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="8.10"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="8.10"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Oracle Linux Server 8.10"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:8:10:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"

ORACLE_BUGZILLA_PRODUCT="Oracle Linux 8"
ORACLE_BUGZILLA_PRODUCT_VERSION=8.10
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=8.10

前回までのおさらい

変に省略せずに丁寧に記していきたいと思います。

Oracle SQL Developer を起動する

データベースに接続する

▼「+」の横の「▼」から「新規データベース接続」をクリック

▼ 次のように入力し、「テスト」ボタンをクリックします。

左下に「ステータス:成功」と出ればOKです。

「保存」をクリックし、「接続」をクリックします。

ここまでが前回のおさらいとなります。
今回はここの続きとなります。

新しいSQL Worksheetを開く

▼新規アイコンをクリック

▼「すべてのアイテム」から「SQLファイル(データベース・ファイル)」を選択して「OK」

▼ファイル名と場所を選択して「OK」

練習用のPDBを作成

新しいユーザー(スキーマ)を作成して、そのユーザーでテーブルを作成し、データを操作します。

▼ SQLを入力

CREATE PLUGGABLE DATABASE practice_pdb
ADMIN USER pdbadmin IDENTIFIED BY pdbadmin_password
FILE_NAME_CONVERT = ('/opt/oracle/oradata/FREE/pdbseed/', '/opt/oracle/oradata/FREE/practice_pdb/');

▼スクリプトの実行(F5)

▼ 画面下に結果が表示されます。

サーバー側でSQL*Plusに接続して確認

# 一般ユーザーでSSH接続
su
su oracle -
source ~/.bash_profile
sqlplus / as sysdba
show pdbs

練習用のPDBをオープン

これはサーバ側で行います。
前項で sqlplus を開いていたらそのまま行っても構いません。

sqlplus / as sysdba
ALTER PLUGGABLE DATABASE practice_pdb OPEN;

練習用のPDBに接続

▼次のように入力します。
「テスト」ボタンをクリックし「成功」になればOKです。
「保存」ボタンをクリックし、「接続」ボタンをクリックします。

練習用の表領域を作成する

CREATE TABLESPACE users DATAFILE '/opt/oracle/oradata/FREE/practice_pdb/users01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M;

▼スクリプトの実行(F5)

練習用のユーザー practice_user を作成する

次の接続情報で作成します。

ユーザー名practice_user
パスワードpractice_password
CREATE USER practice_user IDENTIFIED BY practice_password
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA unlimited ON users;

GRANT CONNECT, RESOURCE TO practice_user;

▼スクリプトの実行(F5)

練習用のユーザーで接続

▼次のように入力します。
「テスト」ボタンをクリックし「成功」になればOKです。
「保存」ボタンをクリックし、「接続」ボタンをクリックします。

練習用のテーブルを作成する

CREATE USER practice_user IDENTIFIED BY practice_password
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA unlimited ON users;

GRANT CONNECT, RESOURCE TO practice_user;

練習用のテーブルにデータを挿入する

INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('John', 'Doe', 'john.doe@example.com', SYSDATE);
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Jane', 'Smith', 'jane.smith@example.com', SYSDATE);
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Michael', 'Johnson', 'michael.johnson@example.com', SYSDATE);

COMMIT;

練習用のテーブルからデータを取得する

SELECT * FROM employees;

MySQLなどほかのデータベースで経験があれば、Oracle入門としてはここまでで一通り必要なことは分かるかと思います。

SQLの書き方に若干クセがあったりしますが、基本的に方言レベルなのでやりながらでどうにかなると思います。

SQL自体が初めての方は「SQLの」入門書などから始められることをオススメします。

PHPから接続してみる

接続設定ファイル

/config/database.php

<?php
$config = [];
$config['username'] = '';
$config['password'] = '';
$config['host'] = '0.0.0.0';
$config['port'] = '1521';
$config['service'] = '';
$config['encoding'] = 'AL32UTF8';

接続テストファイル

/public_html/database_test.php

<?php

// データベース接続
$config = [];
require dirname(__DIR__) . '/config/database.php';
$conn = oci_connect($config['username'], $config['password'], $config['host'] . ':' . $config['port'] . '/' . $config['service'], $config['encoding']);

?>
<html>
<head>
<meta charset="utf-8">
<title>Oracle 接続</title>
</head>
<body>

    <?php
        $stid = oci_parse($conn, 'SELECT * FROM employees ORDER BY first_name');
        oci_execute($stid);
    ?>
    <table border="1">
        <tr>
            <th>EMPLOYEE_ID</th>
            <th>FIRST_NAME</th>
            <th>LAST_NAME</th>
            <th>EMAIL</th>
            <th>HIRE_DATE</th>
        </tr>
        <?php while ($row = oci_fetch_array($stid)): ?>
            <tr>
                <td><?php echo htmlspecialchars($row['EMPLOYEE_ID']); ?></td>
                <td><?php echo htmlspecialchars($row['FIRST_NAME']); ?></td>
                <td><?php echo htmlspecialchars($row['LAST_NAME']); ?></td>
                <td><?php echo htmlspecialchars($row['EMAIL']); ?></td>
                <td><?php echo htmlspecialchars($row['HIRE_DATE']); ?></td>
            </tr>
        <?php endwhile; ?>
    </table>
    <?php
        oci_free_statement($stid);
    ?>

</body>
</html>
<?php
oci_close($conn);