株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

Oracle FreeSQL – Live SQL後継の無償SQL実行Webアプリ

Oracle ACE Proの渡部です。 この記事は、 JPOUG Advent Calendar 2025 3日目の記事です。 2日目は wmo6hashさん の記事『Oracle Developer Day 2025 LT1-2 さまざまなデータベース・デプロイメント』でした。

ORACLE MASTERのSQL分野の学習におススメしていたOracle Live SQLが、いつのまにか名前が変わって"Oracle FreeSQL"になっていました。さらにいくつか便利な機能が追加されていたので、これも併せてご紹介します。

Oracle FreeSQLとは

Oracle FreeSQLとは、オラクル社が公開しているOracleのSQLを実行できるWebアプリケーションです。無料で使用できます。環境を準備する苦労なしにOracleのSQLを実行できるため、初心者のOracle SQL学習に非常に有用です。

環境構築が不要なORACLE MASTERのSQL学習方法(Oracle Live SQL)

経緯をメモ

マニュアルなどの公式文書がないため、推測交じりになりますが、おそらく以下の経緯です。

  1. Oracle Live SQLとしてリリース
  2. Oracle 23c対応版として、Oracle Live SQL v2がリリース
  3. Oracle Live SQL v2をOracle FreeSQLにリネーム

機能

私が確認した限り、Oracle FreeSQLには公式マニュアルがありません。おそらく、唯一公開されているのは、"FreeSQL Change Log"だけです。

このため、機能の一覧を把握することが難しいのですが、以下の機能を使えるようです。

  • 事前作成済みのサンプルスキーマ(サンプルデータ)に対してSELECT文を実行
    • 2025年12月2日時点のサンプルスキーマ: Academic(AD), Analytic Views(AV), Customer Orders(CO), Human Resources(HR), Order Entry(OE), Olympic Data(OLYM), Projects(PROJECTS), EMP and DEPT(SCOTT), Sales History(SH), World Data(WORLD)
  • SQLコーディング支援: コマンド補完など
  • オブジェクトブラウザ
  • 過去実行したSQL履歴の確認
  • SQL文のフォーマット(整形)
  • 「ライブラリ」と呼ばれる学習コンテンツとの連携
  • クイックSQLを用いたDDLの実行
  • 実行計画の表示

データの変更など、一部の処理はOracle SSOでサインインしていないと使えません。

また、多くの機能はAPEXのSQLワークショップから移植されたもののように見えます。

なお、今後も随時機能が追加されるはずです。オブジェクトブラウザなどは、もっと機能を充実してほしい印象を持っています。

以下ではいくつか有用と思われる機能を紹介します。

ローカルからリモート接続 / SQL Net

従来のOracle Live SQLは、Web画面以外のインタフェースがありませんでしたが、Oracle FreeSQLでは、手元のOracleクライアントからいわゆる「リモート接続」が可能になっています。この機能は2025年11月に追加されました。

なお、この機能はOracle SSOでサインインしていないと使えません。

以下に、sqlclでOracle FreeSQLにリモート接続する例を示します。

n

> .\sql 'RYOTA_WATABE_SCHEMA_3QNPE/(略)//db.freesql.com:1521/26ai_un3c1'

SQLcl: 火 12月 02 13:22:34 2025のリリース24.3 Production

Copyright (c) 1982, 2025, Oracle.  All rights reserved.

接続先:
Oracle AI Database 26ai EE Extreme Perf Release 23.26.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.26.0.0.0

SQL> show user
USERは"RYOTA_WATABE_SCHEMA_3QNPE"
SQL> create table t1 (id number(8) primary key, c1 varchar2(8));

Table T1は作成されました。

SQL> INSERT INTO t1 values(1,'AAA');

1行挿入しました。

SQL> commit;

コミットが完了しました。

SQL> select * from t1;

   ID C1
_____ ______
    1 AAA

SQL> select * from hr.jobs;

JOB_ID        JOB_TITLE                           MIN_SALARY    MAX_SALARY
_____________ ________________________________ _____________ _____________
AD_PRES       President                                20080         40000
AD_VP         Administration Vice President            15000         30000
AD_ASST       Administration Assistant                  3000          6000
FI_MGR        Finance Manager                           8200         16000
FI_ACCOUNT    Accountant                                4200          9000
AC_MGR        Accounting Manager                        8200         16000
AC_ACCOUNT    Public Accountant                         4200          9000
SA_MAN        Sales Manager                            10000         20080
SA_REP        Sales Representative                      6000         12008
PU_MAN        Purchasing Manager                        8000         15000
PU_CLERK      Purchasing Clerk                          2500          5500
ST_MAN        Stock Manager                             5500          8500
ST_CLERK      Stock Clerk                               2008          5000
SH_CLERK      Shipping Clerk                            2500          5500

JOB_ID     JOB_TITLE                             MIN_SALARY    MAX_SALARY
__________ __________________________________ _____________ _____________
IT_PROG    Programmer                                  4000         10000
MK_MAN     Marketing Manager                           9000         15000
MK_REP     Marketing Representative                    4000          9000
HR_REP     Human Resources Representative              4000          9000
PR_REP     Public Relations Representative             4500         10500

19行が選択されました。

SQL>

これで、従来のLive SQLでは実行できなかった対話的トランザクション(ロングトランザクション)の検証も可能になります。

SQL> CREATE TABLE test (id NUMBER);

Table TESTは作成されました。

SQL> INSERT INTO test VALUES(1);

1行挿入しました。

SQL> SAVEPOINT a;

Savepointは作成されました。

SQL> INSERT INTO test VALUES(2);

1行挿入しました。

SQL> SAVEPOINT b;

Savepointは作成されました。

SQL> INSERT INTO test VALUES(3);

1行挿入しました。

SQL> SELECT * FROM test;

   ID
_____
    1
    2
    3

SQL> ROLLBACK TO b;

ロールバックを完了しました。

SQL> SELECT * FROM test;

   ID
_____
    1
    2

SQL>

注意点

  • 一定期間アイドル状態だと、セッションが強制終了されるようです。

参照

実行計画の表示

クイックSQL / Quick SQL Model

クイックSQLは、Oracle独自のDDLの短縮記法です。 基本的にAPEXのSQL Worksheetでのみ使用可能でしたが、これがOracle FreeSQLでも使用できるようになっています。

Webページと連携

実用性は若干微妙ですが、SQLを実行できるボタン/リンクをWebページに埋め込めます。 🙂

Run in FreeSQL

参照

参考 - 初回アクセス時のツアー

明日の記事

JPOUG Advent Calendar 2025 の明日4日目の記事は、wmo6hashさんに執筆いただく予定です。wmo6hashさん、よろしくお願いいたします!

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ