【Oracle】開発環境を一括初期化するスクリプトの作成例

【Oracle】開発環境を一括初期化するスクリプトの作成例 Oracle

Oracleの開発環境では、テストデータのリセットやテーブル・シーケンスの再作成など、初期状態に戻す処理が定期的に必要になります。手動で実行すると手間がかかり、ミスの原因にもなりかねません。

そこで本記事では、Oracleの開発環境を一括で初期化できるSQLスクリプトの作成例を紹介します。

一括初期化スクリプトの構成

初期化スクリプトには、以下のような処理を組み合わせて記述します。

  • テーブルの削除と再作成
  • シーケンスのリセット
  • テストデータの投入
  • マスターデータの保持

初期化スクリプトの例

-- テーブル削除(存在する場合のみ)
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE users CASCADE CONSTRAINTS';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE != -942 THEN
      RAISE;
    END IF;
END;
/

-- テーブル作成
CREATE TABLE users (
  id NUMBER PRIMARY KEY,
  name VARCHAR2(100),
  email VARCHAR2(100),
  created_at DATE DEFAULT SYSDATE
);

-- シーケンス再作成
BEGIN
  EXECUTE IMMEDIATE 'DROP SEQUENCE users_seq';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE != -2289 THEN
      RAISE;
    END IF;
END;
/

CREATE SEQUENCE users_seq
  START WITH 1
  INCREMENT BY 1
  NOCACHE
  NOCYCLE;

-- テストデータ投入
INSERT INTO users (id, name, email) VALUES (users_seq.NEXTVAL, '山田 太郎', 'yamada@example.com');
INSERT INTO users (id, name, email) VALUES (users_seq.NEXTVAL, '佐藤 花子', 'sato@example.com');
COMMIT;

マスターデータを保護したい場合

マスターデータなどは削除せずに初期データとして保持したいケースがあります。その場合はWHERE句で対象を限定します。

DELETE FROM users WHERE id > 1000;

このように、IDやフラグなどで対象を絞って削除することで、必要なデータだけ初期化できます。

SQL*Plusスクリプトとしての運用

上記のSQLをスクリプトファイル(例:reset_dev.sql)として保存し、以下のようにSQL*Plusから一括実行できます。

sqlplus user/password@dbname @reset_dev.sql

開発チーム内で共通の初期化処理として活用することで、環境差異やヒューマンエラーを減らすことができます。

まとめ

Oracleの開発環境では、定期的な初期化処理が求められます。今回紹介したようなスクリプトを作成・共有することで、手間の削減と品質向上が図れます。

マスターデータの保護や、条件付き削除など、実際の環境に合わせた調整を行い、柔軟に運用しましょう。