Menginstal orafce untuk AlloyDB Omni

Pilih versi dokumentasi:

Halaman ini menjelaskan cara menambahkan ekstensi orafce secara manual ke penginstalan AlloyDB Omni yang ada. Ekstensi orafce menyediakan fungsi dan operator yang mengemulasikan subset fungsi dan paket dari database Oracle. Ekstensi ini menyederhanakan migrasi aplikasi dari Oracle ke database yang kompatibel dengan PostgreSQL seperti AlloyDB Omni.

Sebelum memulai

Instal AlloyDB Omni di sistem Anda.

Menambahkan orafce ke penginstalan AlloyDB Omni Anda

Untuk menambahkan ekstensi orafce ke penginstalan AlloyDB Omni Anda, ikuti langkah-langkah berikut:

  1. Temukan label versi AlloyDB Omni yang terinstal:

    Docker

    docker run --rm -it  google/alloydbomni cat VERSION.txt
    

    Podman

    podman run --rm -it  google/alloydbomni cat VERSION.txt
    

    Outputnya mirip dengan hal berikut ini:

    AlloyDB Omni version: 16.3.0
    

    Catat nomor versi AlloyDB Omni karena Anda akan membutuhkannya pada langkah berikutnya.

  2. Buat image Docker kustom yang menyertakan ekstensi orafce:

    $ ~/alloydb-omni-orafce
    
    $ cd ~/alloydb-omni-orafce
    
    $ cat <<EOF > Dockerfile
    FROM google/alloydbomni:16.3.0-ubi
    RUN arch=$(uname -m)
    RUN dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-$(arch)/pgdg-redhat-repo-latest.noarch.rpm
    RUN dnf install -y orafce_16
    
    # On RHEL-based systems, PostgreSQL extensions like Orafce and PostGIS are typically installed in /usr/pgsql-16/share/extension and /usr/pgsql-16/lib.
    # This step creates symbolic links to those files in the paths expected by AlloyDB Omni,
    # which lets AlloyDB Omni locate extension control files and shared libraries without duplicating data.
    RUN \
       for file in /usr/pgsql-16/share/extension/*; do \
       target="/usr/lib/postgresql/16/share/extension/$(realpath -m --relative-to=/usr/pgsql-16/share/extension/ "$file")"; \
       if [ ! -e "$target" ]; then \
          ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1); \
       else \
          echo "$target already exists"; \
       fi; \
    done && \
    for file in /usr/pgsql-16/lib/*; do \
       target="/usr/lib/postgresql/16/lib/$(realpath -m --relative-to=/usr/pgsql-16/lib/ "$file")"; \
       if [ ! -e "$target" ]; then \
          ln -s "$file" "$target" || (echo "Failed to link \"$file\" to \"$target\", exiting." && exit 1); \
       else \
          echo "$target already exists"; \
       fi; \
    done
    EOF
    

  3. Buat penampung baru dengan AlloyDB Omni bernama my-omni-orafce:

    docker build -t google/alloydbomni-with-orafce:latest
    docker run --name my-omni-orafce  -e POSTGRES_PASSWORD=NEW_PASSWORD  -d google/alloydbomni-with-orafce:OMNI_VERSION
    
  4. Hubungkan ke database Anda dengan ekstensi orafce:

    docker exec -it my-omni-orafce psql -h localhost -U postgres
    
  5. Aktifkan orafce:

    CREATE EXTENSION IF NOT EXISTS ORAFCE;
    
  6. Konfirmasi bahwa orafce telah diinstal dan diaktifkan:

    SELECT oracle.sysdate();
    

    Outputnya mirip dengan hal berikut ini:

    postgres=# SELECT oracle.sysdate();
    sysdate
    ---------------------
    2024-06-10 16:36:30
    (1 row)