2025年8月1日金曜日

n8nのカスタム・ノードn8n-nodes-oracle-database-parameterizationを使ってOracle Databaseに接続する

Oracle Corporationで主にデータベースに接続するドライバのプロダクト・マネージメントを担当しているChristopher Jonesさんが、以下のブログ記事を公開しています。

How to create n8n workflows that connect to Oracle Database

jgriffin1さんがGitHubで公開しているn8n-nodes-oracle-database-parameterizationをインストールすると、カスタム・ノードとしてOracle Databaseに接続できるようです。

Christopher Jonesさんの元記事ではn8nがインストールされている環境があることを前提として、このカスタム・ノードをインストールしています。本記事ではn8nから提供されているコンテナ・イメージから作成したコンテナに対して、このカスタム・ノードをインストールしてみます。

以下のコマンドでn8nのコンテナを作成します。

podman run -it --rm --name n8n -e N8N_RUNNERS_ENABLED=true -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

% podman run -it --rm --name n8n -e N8N_RUNNERS_ENABLED=true -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Initializing n8n process

n8n ready on ::, port 5678

n8n Task Broker ready on 127.0.0.1, port 5679

[license SDK] Skipping renewal on init because renewal is not due yet or cert is not initialized

Registered runner "JS Task Runner" (gXBJ9F_2r4CJr94jMWOP9) 

Version: 1.104.1


Editor is now accessible via:

http://localhost:5678


Press "o" to open in Browser.


別ターミナルからコンテナn8nに接続します。

podman exec -it n8n sh

 % podman exec -it n8n sh

~ $ 


カスタム・ノードをイントールするディレクトリとして、.n8n/custom/nodesを作成し、そのディレクトリ以下にn8n-nodes-oracle-database-parameterizationをインストールします。

mkdir -p ~/.n8n/custom/nodes
cd ~/.n8n/custom/nodes
npm install n8n-nodes-oracle-database-parameterization

~ $ mkdir -p ~/.n8n/custom/nodes

~ $ cd ~/.n8n/custom/nodes

~/.n8n/custom/nodes $ npm install n8n-nodes-oracle-database-parameterization


added 2 packages in 1s

npm notice

npm notice New minor version of npm available! 11.4.2 -> 11.5.2

npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.5.2

npm notice To update run: npm install -g npm@11.5.2

npm notice

~/.n8n/custom/nodes $ 


コンテナを再起動します。--rmオプションを付けてコンテナを開始しているため、正確にはコンテナの再作成が行われます。/home/node/.n8n以下はボリュームn8n_dataにマウントされているため、インストールしたカスタム・ノードも維持されます。

起動されているn8nを停止し、再度コンテナn8nの作成と起動を実施します。

podman run -it --rm --name n8n -e N8N_RUNNERS_ENABLED=true -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Press "o" to open in Browser.

Received SIGINT. Shutting down...

[Task Runner]: Received SIGTERM signal, shutting down...

[Task Runner]: Task runner stopped


Stopping n8n...

~ % podman run -it --rm --name n8n -e N8N_RUNNERS_ENABLED=true -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Initializing n8n process

n8n ready on ::, port 5678

n8n Task Broker ready on 127.0.0.1, port 5679

[license SDK] Skipping renewal on init because renewal is not due yet or cert is not initialized

Registered runner "JS Task Runner" (5KUqY3j-cv2g2z7wWTGLr) 

Version: 1.104.1


Editor is now accessible via:

http://localhost:5678


Press "o" to open in Browser.


n8nが起動したので、アクセスします。すでにn8nの画面を開いている場合は、ページを再ロードします。


Create Workflowをクリックし、新規にワークフローを作成します。

最初のノードとしてTrigger manuallyを作成します。


ノードを追加します。Oracleで検索するとOracle Database with Parameterizationが見つかります。これを追加します。


Oracle Databaseへの接続を確認するだけなので、SQL Statementselect * from dualを設定します。

Credential to connect withwksp_apexdev@local containerという名前で新規作成しました。


n8nのコンテナと同じく、コンテナで実行されているOracle Database 23ai Freeに接続するクリデンシャルを作成しています。

Connection Stringhost.containers.internal/freepdb1としています。


以上の設定を行いExecute stepをクリックすると、select * from dualが実行されます。


n8nのノードでOracle Databaseにアクセスできることが確認できました。

Christopher Jonesさんの記事では、もっと色々な操作を行なっています。n8nでオラクルを扱うにあたって、最初に参照されることをお勧めします。

今回の記事は以上になります。