AlloyDB Omni に orafce をインストールする

ドキュメントのバージョンを選択してください。

このページでは、既存の AlloyDB Omni のインストール環境に orafce 拡張機能を手動で追加する方法について説明します。orafce 拡張機能は、Oracle データベースの関数とパッケージのサブセットをエミュレートする関数と演算子を提供します。この拡張機能により、アプリケーションを Oracle から AlloyDB Omni などの PostgreSQL 互換データベースに移行することが容易になります。

始める前に

システムに AlloyDB Omni をインストールします。

AlloyDB Omni に orafce を追加する

AlloyDB Omni に orafce 拡張機能を追加する手順は次のとおりです。

  1. PostgreSQL Yum リポジトリを追加します。

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    
  2. PostgreSQL サーバーと開発パッケージをインストールします。

    sudo dnf install -y "postgresql17-server"
    
  3. Orafce 拡張機能をインストールします。

    sudo dnf install -y orafce_17
    
  4. 拡張機能が想定されるパスに配置されるように、必要なシンボリック リンクを作成します。

    set -e
    PGVER="17"
    
    sudo mkdir -p "/usr/lib/postgresql/${PGVER}/share/extension"
    
    for file in /usr/pgsql-${PGVER}/share/extension/*; do
      target="/usr/lib/postgresql/${PGVER}/share/extension/$(basename "$file")"
      if [[ ! -e "$target" ]]; then
        sudo ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1)
        echo "Created extension link for $(basename "$file")"
      else
        echo "Target $target already exists."
      fi
    done
    
    sudo mkdir -p "/usr/lib/postgresql/${PGVER}/lib"
    
    for file in /usr/pgsql-${PGVER}/lib/*; do
        if [[ ! -e "$target" ]]; then
          sudo ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1)
          echo "Created lib link for $(basename "$file")"
        else
          echo "Target $target already exists."
        fi
    done
    
  5. orafce 拡張機能を使用してデータベースに接続します。

    /usr/lib/postgresql/17/bin/psql -h localhost -U postgres
    
  6. orafce を有効にします。

    CREATE EXTENSION IF NOT EXISTS ORAFCE;
    
  7. orafce がインストールされ、有効になっていることを確認します。

    SELECT oracle.sysdate();
    

    出力は次のようになります。

    postgres=# SELECT oracle.sysdate();
    sysdate
    ---------------------
    2025-12-12 16:36:30
    (1 row)