oracle
docker

Oracle Dockerの起動からOracleクライアント実行まで(メモ)

MacでOracleサーバをDockerで立ち上げてクライアント接続までを試してみたがディスク容量を消費するのですぐ消してしまいたい

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
oracle/database     12.1.0.2-se2        2fff32c00a7f        4 hours ago         10.5GB
oraclelinux         7-slim              9870bebfb1d5        2 months ago        118MB

そこで、比較的簡単に環境を再現出来るようにメモとして残すことにした

なお、手順の詳細な説明が以下に存在する(この記事もそれを参照している)のでそちらの方が一般的には役に立つ

OS X 10.11で,Oracle Database 12cのDocker Imageを使ってみた

環境

サーバ: Oracle 12.1.0.2 Standard Edition
クライアント: sqlplus, xo/usql

※ この usql を評価したかったというのが動機(そういう意味では導入しにくいOracleにする必要もなかったのだけど、一度Oracle環境作って見たかったので)

手順メモ

  1. oracle install

    git clone https://github.com/oracle/docker-images.git
    cd docker-images/OracleDatabase/dockerfiles
    
    # image download
    # (12.1.0.2.0) - Standard Edition (SE2)
    # Linux x86-64 の File1, File2 をダウンロードしたものとする
    #  http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
    
    mv ~/Downloads/linuxamd64_12102_database_se2_{1,2}of2.zip 12.1.0.2/
    
    # standard edition の場合
    ./buildDockerImage.sh -v 12.1.0.2 -i -s
    # enterprise edition の場合
    #./buildDockerImage.sh -v 12.1.0.2 -i -e
    
    # standard edition の場合
    sudo docker run -p 1521:1521 --name oracle oracle/database:12.1.0.2-se2
    # enterprise edition の場合
    # sudo docker run -p 1521:1521 --name oracle  oracle/database:12.1.0.2-ee
    
    # set password for sys and system
    docker exec oracle ./setPassword.sh PASS
    
  2. client install

    # download
    # instantclient-basic-macos.x64-12.1.0.2.0.zip etc..
    
    unzip instantclient-basic-macos.x64-12.1.0.2.0.zip
    unzip instantclient-sdk-macos.x64-12.1.0.2.0.zip
    unzip instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
    
    instantclient_12_1/sqlplus system/PASS@localhost/ORCLPDB1
    
  3. setup oci8

    cat <<END > oci8.pc
    prefix=$PWD/instantclient_12_1
    
    version=12.1
    build=client64
    
    libdir=\${prefix}
    includedir=\${prefix}/sdk/include
    
    Name: oci8
    Description: Oracle database engine
    Version: \${version}
    Libs: -L\${libdir} -lclntsh
    Libs.private:
    Cflags: -I\${includedir}
    END
    
  4. usql install

    export PKG_CONFIG_PATH=$PWD
    export DYLD_LIBRARY_PATH=$PWD/instantclient_12_1
    go get -u -tags oracle github.com/xo/usql
    
    usql oracle://system:PASS@localhost/ORCLPDB1