Oh!Super164 取り留めのない日記のような

2024/11/19 火曜日

oracle 11g docker (失敗)

Filed under: PC,備忘録 — admin @ 22:57:49

あまりにもクライアント環境が古すぎて19cに繋がらない、、、仕方ないので11gを作る
docker image作成 (express editionで作成)

$ git clone https://github.com/oracle/docker-images.git
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/11.2.0.2
$ cp <path-to-zip>/oracle-xe-11.2.0-1.0.x86_64.rpm.zip .
$ cd ..
$ ./buildContainerImage.sh -v 11.2.0.2 -x
$ mkdir dump
$ chmod 777 dump
$ mkdir oradata
$ chmod 777 oradata

dockerを起動して、PDBにユーザーを作成し、インポート用のdirオブジェクトを作成しインポートを実行するまで
(dumpが古いのでshift-jisで作る)

services:
  db:
    image: oracle/database:11.2.0.2-xe
    ports:
      - 1521:1521
      - 5500:5500
    volumes:
      - ./oradata:/u01/app/oracle/oradata
      - ./dump:/u01/app/oracle/dump
    environment:
      - ORACLE_PWD=<SYSPASS>
$ docker compose up -d
$ docker compose exec db bash

11gではoracleの文字セットを指定できないので、一旦削除してdatabaseを再作成する(時間掛かった)

bash$ su oracle
bash$ sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup restrict mount;
SQL> drop database;
SQL> quit
bash$ createdb.sh -dbchar JA16SJISTILDE
bash$ sqlplus / as sysdba
SQL> alter user system identified by <SYSPASS> account unlock;
SQL> exec execute dbms_metadata_util.load_stylesheets;

“/u01/app/oracle/product/11.2.0/xe/rdbms/xml/xsl”このxlsがxeには存在しないので失敗する。11gの通常版から持ってこれば通るかも、、、
これが通らないとインポートがエラーになる。

SQL> create user <USER> identified by <PASS>;
SQL> grant dba to <USER>;
SQL> create directory DUMPDIR as '/u01/app/oracle/dump';
SQL> grant read on directory DUMPDIR to <USER>;
SQL> grant write on directory DUMPDIR to <USER>;
SQL> exit
bash$ impdp <USER>/<PASS>@<PDB> remap_schema=<USER>:<USER> DIRECTORY=DUMPDIR dumpfile=DATA.DMP logfile=DATA.log
bash$ exit
$ docker compose down

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress