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

2024/11/17 日曜日

Oracle 19c docker 作成と使用準備

Filed under: PC,備忘録 — admin @ 16:30:52

手順を忘れてしまいそうなので、、、メモ

linux用のoracleをダウンロードしておく

https://www.oracle.com/jp/database/technologies/oracle-database-18c/enterprise-edition.html

docker image作成 (standard editionで作成)

$ git clone https://github.com/oracle/docker-images.git
$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
$ cp <path-to-zip>/LINUX.X64_193000_db_home.zip .
$ cd ..
$ ./buildContainerImage.sh -v 19.3.0 -s
$ mkdir dump
$ chmod 777 dump
$ mkdir oradata
$ chmod 777 oradata

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

services:
  db:
    image: oracle/database:19.3.0-se2
    ports:
      - 1521:1521
      - 5500:5500
    volumes:
      - ./oradata:/opt/oracle/oradata
      - ./dump:/opt/oracle/dump
    environment:
      - ORACLE_PWD=<SYSPASS>
      - ORACLE_PDB=<PDB>
      - ORACLE_CHARACTERSET=JA16SJISTILDE
$ docker compose up -d
$ docker compose exec db bash
bash$ sqlplus / as sysdba
SQL> SELECT NLS_CHARSET_NAME(NLS_CHARSET_ID('CHAR_CS')),NLS_CHARSET_NAME(NLS_CHARSET_ID('NCHAR_CS')) FROM DUAL;
SQL> alter session set container = <PDB>;
SQL> create user <USER> identified by <PASS>;
SQL> grant dba to <USER>;
SQL> create directory DUMPDIR as '/opt/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

データベースの文字セット変換をしたら壊れたw

SQL> SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE JA16SJISTILDE;
SHUTDOWN IMMEDIATE;
STARTUP;
Total System Global Area 1610609928 bytes
Fixed Size                  9135368 bytes
Variable Size             452984832 bytes
Database Buffers         1140850688 bytes
Redo Buffers                7639040 bytes
SQL> SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
SQL>
VALUE
--------------------------------------------------------------------------------
JA16SJISTILDE

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

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress