あまりにもクライアント環境が古すぎて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