oracleとのつきあい長い。
1990年代のoracle7からやし、まぁ苦しい思い出もある。
当時フリーの技術者の方が基本設計と詳細設計やってて、なんと日本語でテーブルと項目の定義作ってはった。
ms-accessの延長みたいなことやってるし、ヘンな構成作るから相当苦しめられたっけなぁ。
dockerでバージョン12/18/19のoracle動かしたことはあるんやけど、やり方思い出せんかったからメモ書いとく。
そろそろ23出るんやろけど、今は21がダウンロードできる最新っぽかった。
おおまかな使い方は、
- oracleインストール用のzipをダウンロード
- 作業用フォルダの準備とdockerイメージを作るための処理をgitからダウンロード
- gitからダウンロードしたフォルダにインストールで使うoracleのzipファイルを置く
- dockerビルドしてイメージ作る
- dockerのoracleイメージを使って
docker compose
で起動 - クライアントから接続
前はdocker-compose
使って動かしてたけど、今回からdocker compose
やね。
ここでdocker-compose.ymlの書き方だけ残してたけど、ビルドのことは書いてへんかったなぁ。
今はV2のdockerやからcompose.ymlで定義やってく。
download zip
このへんからダウンロードする。
ようけあるなぁ。
windows/linux/solaris/hp-ux/aixとかあるけど、linuxホストのdockerコンテナで動かすからlinux用でええ。
大昔のOTNアカウントでログインしてダウンロードするだけ。
もうOTNってないんかもしれんけど、アカウント使えるのは使えてるで。
作業用のフォルダを作る
コンテナ用の永続化領域でもある。
cd /docker/nariDockerDat
mkdir sv_ora21
cd sv_ora21
git cloneする
gitにenterprise editionのoracleイメージを作るための材料を置いてくれてる。
ほな取ってきましょ。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ git clone https://github.com/oracle/docker-images
Cloning into 'docker-images'...
remote: Enumerating objects: 17268, done.
remote: Counting objects: 100% (1910/1910), done.
remote: Compressing objects: 100% (479/479), done.
remote: Total 17268 (delta 1556), reused 1640 (delta 1408), pack-reused 15358
Receiving objects: 100% (17268/17268), 10.81 MiB | 27.67 MiB/s, done.
Resolving deltas: 100% (10187/10187), done.
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ ls
LINUX.X64_213000_db_home.zip dat docker-images
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$
サイトからgit clone
したらわかるんやけど、データベースだけやなくweblogicとかOpenJDKのdockerイメージを作るdockerfile入ってるみたい。
今回はデータベースやからls結果の1行目にある「OracleDatabase」ってのを使う。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ cd docker-images/
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images$ ls
Archive OracleDatabase OracleTuxedo
CODEOWNERS OracleEssbase OracleUnifiedDirectory
CODE_OF_CONDUCT.md OracleFMWInfrastructure OracleUnifiedDirectorySM
CONTRIBUTING.md OracleGoldenGate OracleVeridata
Contrib OracleHTTPServer OracleWebCenterContent
GraalVM OracleIdentityGovernance OracleWebCenterPortal
LICENSE.txt OracleInstantClient OracleWebCenterSites
NoSQL OracleJava OracleWebLogic
OracleAccessManagement OracleLinuxDevelopers README.md
OracleAnalytics OracleManagementAgent SECURITY.md
OracleBI OracleOpenJDK scripts
OracleCloudInfrastructure OracleRestDataServices
OracleCoherence OracleSOASuite
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images$
ダウンロードしたzipを置く
linux用のoracleをダウンロードしておいたLINUX.X64_213000_db_home.zip
を、gitからダウンロードした作業フォルダに移動させる。
インストーラが処理してくれるからzipは解凍したらアカンのやで。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images$ cd ..
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ ls
LINUX.X64_213000_db_home.zip dat docker-images
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ mv LINUX.X64_213000_db_home.zip ./docker-images/OracleDatabase/SingleInstance/dockerfiles/21.3.0/
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$
dockerビルドしてイメージ作る
さっき置いたインストールで使うzipは、バージョンごとにフォルダがあるから該当のフォルダに置く必要がある。
12とか18とかでやったのと同じ。
同じフォルダにbuildContainerImage.sh
ってのがあるから、動かすときの引数にバージョン指定する。
引数はreadmeに書いてあるし、シェルスクリプトの内容読んでもだいたい何やってるかわかる。
21を使うけど、23のフォルダがもう入ってるなぁ。
今回はバージョン21のEnterprise Editionでやってみた。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images/OracleDatabase/SingleInstance/dockerfiles$ ls
11.2.0.2 12.2.0.1 18.4.0 21.3.0 buildContainerImage.sh
12.1.0.2 18.3.0 19.3.0 23.3.0
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images/OracleDatabase/SingleInstance/dockerfiles$ ./buildContainerImage.sh -v 21.3.0 -e
Checking Docker version.
Dockerfile
Checking if required packages are present and valid...
LINUX.X64_213000_db_home.zip: OK
==========================
Container runtime info:
Client: Docker Engine - Community
Version: 24.0.6
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.11.2
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.21.0
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 5
Running: 5
Paused: 0
Stopped: 0
Images: 10
Server Version: 24.0.6
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
runc version: v1.1.9-0-gccaecfc
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.2.0-35-generic
Operating System: Ubuntu 22.04.3 LTS
OSType: linux
Architecture: x86_64
CPUs: 6
Total Memory: 11.64GiB
Name: nafslinux-ubu22
ID: PPHU:3ECW:GTJL:RDRR:5VDD:JCE7:UNOQ:HSAA:AHG4:6N7R:JWS4:ETLZ
Docker Root Dir: /docker/nariDockerSys
Debug Mode: false
Username: naritomitsukasa
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
一瞬で終わる前半ここまで。
以下後半。いろいろやってくれてるみたい。
==========================
Building image 'oracle/database:21.3.0-ee' ...
[+] Building 213.7s (16/16) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 5.02kB 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/oraclelinux:7-slim 2.4s
=> [auth] library/oraclelinux:pull token for registry-1.docker.io 0.0s
=> [base 1/4] FROM docker.io/library/oraclelinux:7-slim@sha256:7a7869a4c0f0a62cff8 6.1s
=> => resolve docker.io/library/oraclelinux:7-slim@sha256:7a7869a4c0f0a62cff8a618e 0.0s
=> => sha256:7a7869a4c0f0a62cff8a618e17eff2601e47e04ddf6286aca847b1f78 547B / 547B 0.0s
=> => sha256:aa5709789ac18e4d8911d2f88d4993c02767472af7561b264bac69713 529B / 529B 0.0s
=> => sha256:ac86a05ca670697b7f0299df8fde32090cdcf404fd330bf9077c6 1.48kB / 1.48kB 0.0s
=> => sha256:9ad776bc39341b015fa96ec38b0ef30213514fedd245d657d31 50.50MB / 50.50MB 3.0s
=> => extracting sha256:9ad776bc39341b015fa96ec38b0ef30213514fedd245d657d3188d81b4 2.6s
=> [internal] load build context 11.0s
=> => transferring context: 3.11GB 11.0s
=> [base 2/4] COPY setupLinuxEnv.sh checkSpace.sh /opt/install/ 0.4s
=> [base 3/4] COPY runOracle.sh startDB.sh createDB.sh createObserver.sh dbca.rsp. 0.0s
=> [base 4/4] RUN chmod ug+x /opt/install/*.sh && sync && /opt/install/ch 23.8s
=> [builder 1/2] COPY --chown=oracle:dba LINUX.X64_213000_db_home.zip db_inst.rsp 7.2s
=> [builder 2/2] RUN chmod ug+x /opt/install/*.sh && sync && /opt/install 98.2s
=> [stage-2 1/4] COPY --chown=oracle:dba --from=builder /opt/oracle /opt/oracle 17.5s
=> [stage-2 2/4] RUN /opt/oracle/oraInventory/orainstRoot.sh && /opt/oracle/pr 0.7s
=> [stage-2 3/4] WORKDIR /home/oracle 0.0s
=> [stage-2 4/4] RUN echo 'ORACLE_SID=${ORACLE_SID:-ORCLCDB}; export ORACLE_SID=${ 0.4s
=> exporting to image 30.8s
=> => exporting layers 30.8s
=> => writing image sha256:3b0ac146e2632005a36b7c3fac2d941b6d9ea479c6b32c9d04096d9 0.0s
=> => naming to docker.io/oracle/database:21.3.0-ee 0.0s
Oracle Database container image for 'ee' version 21.3.0 is ready to be extended:
--> oracle/database:21.3.0-ee
Build completed in 214 seconds.
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images/OracleDatabase/SingleInstance/dockerfiles$ docker images | head -2
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 21.3.0-ee 8b73b3259c10 52 seconds ago 7.94GB
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images/OracleDatabase/SingleInstance/dockerfiles$
oracleのdockerイメージできとるのがdocker images
でわかる。
12とか18のときは10分で済まへんぐらい時間かかってたと思うけど、今は3分強で終わった。
oracleの永続化領域
フォルダ作っとく。
chmodで777ってしとかんと、コンテナ内の初回初期化処理がうまくいかん。
コンテナの中で動くユーザIDが何になってても読み書きできるようにしとかなアカン。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21/docker-images/OracleDatabase/SingleInstance/dockerfiles$ cd /docker/nariDockerDat/sv_ora21
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ mkdir dat
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ chmod 777 dat
1回目はchmodするの忘れてて初回起動処理で「書けへんぞゴラァ!」って怒られて失敗。
それ以降、やり直ししたらフォルダの中に隠しファイル(.ORCL_created)作ってしまいよるからかもしれんけど、そのままやと動かん。
コンテナ起動に失敗したときは、フォルダごと作り直したらええ。
compose.ymlに書き足す
さっきgit clone
したサイトには、compose使う方法は書いてへん。
その代わりdocker run
して使うときのことを書いてくれてる。
docker run \
--name oracle21c \
-p 1521:1521 -p 5500:5500 \
-e ORACLE_PDB=orcl \
-e ORACLE_PWD=password \
-e INIT_SGA_SIZE=3000 \
-e INIT_PGA_SIZE=1000 \
-v /path/to/store/db/files/:/opt/oracle/oradata \
-d \
oracle/database:21.3.0-ee
なるほど、SGAとPGAのサイズ指定が入ってるやん。
最後のほうの-d
は「バックグラウンドで動かす」やったっけ。
composeのと同じ意味やったかな。
SGA/PGAで指定する値は「こうしたい!」って根拠が今はないから普通にそのまま使わせてもらお。
あとは前にやったのと同じような指定。
普段使ってるcompose.ymlにアレンジして書き足す。
sv_ora21:
image: oracle/database:21.3.0-ee
hostname: svora21
ports:
- 31521:1521
- 35500:5500
- 35501:5501
volumes:
- ./nariDockerDat/sv_ora21/dat:/opt/oracle/oradata
environment:
ORACLE_EDITION: '21.3.0'
ORACLE_PWD: oracle
ORACLE_PDB: GVISORCL
ORACLE_SID: ORCL
INIT_SGA_SIZE: 3000
INIT_PGA_SIZE: 1000
TZ: Asia/Tokyo
NLS_LANG: "Japanese_Japan.UTF8"
oracle19cまではNLS_LANG=Japanese_Japan.AL32UTF8
って文字コード指定してたけど、書き方変わったみたい。
oracle21動かす
やってみたら、ログが日本語になってて前より読みやすいやん。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ docker compose up sv_ora21
[+] Running 1/0
? Container ora21ee Created 0.0s
Attaching to ora21ee
ora21ee | Relinking oracle binary for edition: 21.3.0
ora21ee | make -f /opt/oracle/product/21c/dbhome_1/rdbms/lib/ins_rdbms.mk edition_21.3.0 ioracle
ora21ee | make: *** No rule to make target `edition_21.3.0'. Stop.
ora21ee | ORACLE EDITION: 21.3.0
ora21ee |
ora21ee | LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 23-10月-2023 06:06:31
ora21ee |
ora21ee | Copyright (c) 1991, 2021, Oracle. All rights reserved.
ora21ee |
ora21ee | /opt/oracle/product/21c/dbhome_1/bin/tnslsnrを起動しています。お待ちください...
ora21ee |
ora21ee | TNSLSNR for Linux: Version 21.0.0.0.0 - Production
ora21ee | システム・パラメータ・ファイルは/opt/oracle/homes/OraDB21Home1/network/admin/listener.oraです。
ora21ee | ログ・メッセージを/opt/oracle/diag/tnslsnr/svora21/listener/alert/log.xmlに書き込みました。
ora21ee | リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
ora21ee | リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
ora21ee |
ora21ee | (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))に接続中
ora21ee | リスナーのステータス
ora21ee | ------------------------
ora21ee | 別名 LISTENER
ora21ee | バージョン TNSLSNR for Linux: Version 21.0.0.0.0 - Production
ora21ee | 開始日 23-10月-2023 06:06:31
ora21ee | 稼働時間 0 日 0 時間 0 分 0 秒
ora21ee | トレース・レベル off
ora21ee | セキュリティ ON: Local OS Authentication
ora21ee | SNMP OFF
ora21ee | パラメータ・ファイル /opt/oracle/homes/OraDB21Home1/network/admin/listener.ora
ora21ee | ログ・ファイル /opt/oracle/diag/tnslsnr/svora21/listener/alert/log.xml
ora21ee | リスニング・エンドポイントのサマリー...
ora21ee | (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
ora21ee | (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
ora21ee | リスナーはサービスをサポートしていません。
ora21ee | コマンドは正常に終了しました。
ora21ee | [WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
ora21ee | CAUSE:
ora21ee | a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ora21ee | b.The password entered is a keyword that Oracle does not recommend to be used as password
ora21ee | ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
ora21ee | [WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
ora21ee | CAUSE:
ora21ee | a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ora21ee | b.The password entered is a keyword that Oracle does not recommend to be used as password
ora21ee | ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
ora21ee | [WARNING] [DBT-06208] The 'PDBADMIN' password entered does not conform to the Oracle recommended standards.
ora21ee | CAUSE:
ora21ee | a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ora21ee | b.The password entered is a keyword that Oracle does not recommend to be used as password
ora21ee | ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
ora21ee | Prepare for db operation
ここまですぐ終わるけど、ここから10分ぐらい待つ。
oracleは18からcdbとpdbって領域に分割されてる。
commondbとpluggabledbやったかな。
共通領域みたいなところで管理して、pdbにデータを置いてく感じやったような気がする。
途中はこんな感じ。
CPUコア6個をアサインしてるVMのubuntuで動かしてるんやけど、1つしかコア使ってへん瞬間がけっこうあったから、zipとかtarを解凍してるんかな。
ログに100% complete
ってあるところ近辺で、compose.ymlに書いといたインスタンス作ったりしてくれてる。
10分ぐらい待ったら初回初期化処理が終わる。
ora21ee | 8% complete
ora21ee | Copying database files
ora21ee | 31% complete
ora21ee | Creating and starting Oracle instance
ora21ee | 32% complete
ora21ee | 36% complete
ora21ee | 40% complete
ora21ee | 43% complete
ora21ee | 46% complete
ora21ee | Completing Database Creation
ora21ee | 51% complete
ora21ee | 54% complete
ora21ee | Creating Pluggable Databases
ora21ee | 58% complete
ora21ee | 77% complete
ora21ee | Executing Post Configuration Actions
ora21ee | 100% complete
ora21ee | Database creation complete. For details check the logfiles at:
ora21ee | /opt/oracle/cfgtoollogs/dbca/ORCL.
ora21ee | Database Information:
ora21ee | Global Database Name:ORCL
ora21ee | System Identifier(SID):ORCL
ora21ee | Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCL/ORCL.log" for further details.
ora21ee |
ora21ee | SQL*Plus: Release 21.0.0.0.0 - Production on 月 10月 23 06:11:33 2023
ora21ee | Version 21.3.0.0.0
ora21ee |
ora21ee | Copyright (c) 1982, 2021, Oracle. All rights reserved.
ora21ee |
ora21ee |
ora21ee |
ora21ee | Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
ora21ee | Version 21.3.0.0.0
ora21ee | に接続されました。
ora21ee | SQL>
ora21ee | システムが変更されました。
ora21ee |
ora21ee | SQL>
ora21ee | システムが変更されました。
ora21ee |
ora21ee | SQL>
ora21ee | プラガブル・データベースが変更されました。
ora21ee |
ora21ee | SQL>
ora21ee | PL/SQLプロシージャが正常に完了しました。
ora21ee |
ora21ee | SQL> SQL>
ora21ee | セッションが変更されました。
ora21ee |
ora21ee | SQL>
ora21ee | ユーザーが作成されました。
ora21ee |
ora21ee | SQL>
ora21ee | 権限付与が成功しました。
ora21ee |
ora21ee | SQL>
ora21ee | 権限付与が成功しました。
ora21ee |
ora21ee | SQL>
ora21ee | 権限付与が成功しました。
ora21ee |
ora21ee | SQL>
ora21ee | ユーザーが変更されました。
ora21ee |
ora21ee | SQL> SQL> Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
ora21ee | Version 21.3.0.0.0との接続が切断されました。
ora21ee | The Oracle base remains unchanged with value /opt/oracle
ora21ee | The Oracle base remains unchanged with value /opt/oracle
ora21ee | #########################
ora21ee | DATABASE IS READY TO USE!
ora21ee | #########################
ora21ee | The following output is now a tail of the alert.log:
ora21ee | GVISORCL(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCL/GVISORCL/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ora21ee | GVISORCL(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/ORCL/GVISORCL/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ora21ee | GVISORCL(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ora21ee | GVISORCL(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
ora21ee | 2023-10-23T06:11:33.855955+09:00
ora21ee | ALTER SYSTEM SET control_files='/opt/oracle/oradata/ORCL/control01.ctl' SCOPE=SPFILE;
ora21ee | 2023-10-23T06:11:33.861858+09:00
ora21ee | ALTER SYSTEM SET local_listener='' SCOPE=BOTH;
ora21ee | ALTER PLUGGABLE DATABASE GVISORCL SAVE STATE
ora21ee | Completed: ALTER PLUGGABLE DATABASE GVISORCL SAVE STATE
ログの中にDATABASE IS READY TO USE!
って見えてるし、コンテナ動いとる。
手動でもcomposeでコンテナの起動と停止できたし、2~3日自動起動と自動停止させて大丈夫やったらいったん定期運用OKやね。
今日まで動いたらもう要らんから消すかな。
コンテナからつなぐ
コンテナの中でsqlplusやってみる。
nari@nafslinux-ubu22:~$ docker exec -it ora21ee bash
bash-4.2$ sqlplus / as sysdba
SQL*Plus: Release 21.0.0.0.0 - Production on 火 10月 24 05:32:46 2023
Version 21.3.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
に接続されました。
SQL> select name from v$database;
NAME
---------------------------
ORCL
SQL> select instance_name from v$instance ;
INSTANCE_NAME
------------------------------------------------
ORCL
SQL> show parameter service_names
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
service_names string
ORCL
SQL> exit
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0との接続が切断されました。
bash-4.2$ exit
exit
nari@nafslinux-ubu22:~$
バージョンぐらいしか見てへんけど、動くのは動いてるみたいやな。
a5sqlからつなぐ
直観的でわかりやすく別ホストからGUI接続やってみましょ。
sqldeveloper使うと表領域とユーザとか見えるんかもしれんけど、面倒なのでa5sqlで接続設定作ってやってみる。
接続テストはいけましたな。
バージョンもSQL実行して見える。
まぁ、もうちょっとSQL動かしてもええんやけど、やる気なくなってきたから今はここまで。
稼働状態確認
oracle動いてるときのサーバ状態をnmonで観察。
空きメモリは3.5GBぐらい残っとるな。
材料ないからやらんけど、データポンプでインポートとか動かしたら重たいやろな。
それにしても、nmonのテキストを丸々コピーしたとき何で文字が変わって化けたみたいになるんやろ。
lnmonq16nqqqqqq[H for help]qqqHostname=nafslinux-ubuRefresh= 2secs qqq07:01.06qqqqqqqk
x CPU Utilisation qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
x---------------------------+-------------------------------------------------+ x
xCPU User% Sys% Wait% Idle|0 |25 |50 |75 100| x
x 1 0.0 0.5 0.0 99.5|> | x
x 2 0.0 0.0 0.0 100.0|> | x
x 3 0.0 0.5 0.0 99.5|> | x
x 4 0.5 1.0 0.0 98.5|> | x
x 5 0.0 0.5 0.0 99.5|> | x
x 6 0.0 0.0 0.0 100.0|> | x
x---------------------------+-------------------------------------------------+ x
xAvg 0.2 0.3 0.0 99.5|> | x
x---------------------------+-------------------------------------------------+ x
x Memory and Swap qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
x PageSize:4KB RAM-Memory Swap-Space High-Memory Low-Memory x
x Total (MB) 11917.5 976.0 - not in use - not in use x
x Free (MB) 3507.7 976.0 x
x Free Percent 29.4% 100.0% x
x Linux Kernel Internal Memory (MB) x
x Cached= 4746.4 Active= 1253.8 x
x Buffers= 256.2 Swapcached= 0.0 Inactive = 6511.3 x
x Dirty = 0.4 Writeback = 0.0 Mapped = 973.4 x
x Slab = 307.0 Commit_AS = 17490.6 PageTables= 103.9 x
x Disk I/O qq/proc/diskstatsqqqqmostly in KB/sqqqqqWarning:contains duplicatesqqqqqqqx
xDiskName Busy Read WriteKB|0 |25 |50 |75 100| x
xTotals Read-MB/s=0.0 Writes-MB/s=0.2 Transfers/sec=18.0 x
xqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqx
oracleだけやなくて、jupyterlab/xrdp/mariadb/django/sslリバプロのコンテナも動かしてる。
mariadbの倍以上oracleはメモリ使うのがdocker stats
で見える。
データ流し込みとかなんもやってへんのに、こんな食われるとちょっとツライなぁ。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
37ae7b5bbf5c ora21ee 2.93% 3.768GiB / 11.64GiB 32.38% 25.8kB / 10.4kB 457MB / 36.3MB 96
83975967e734 docker-sv_jupyter-1 0.00% 115.7MiB / 11.64GiB 0.97% 544kB / 10.6MB 69.1MB / 115kB 4
2f04fedc8912 docker-cl_ubu22gvis-1 0.00% 12.77MiB / 11.64GiB 0.11% 17.1kB / 0B 24.6MB / 28.7kB 2
8bc8da340ac7 docker-sv_mariadb1011-1 0.10% 1.462GiB / 11.64GiB 12.56% 36.9kB / 17.5MB 1.4GB / 20.5kB 10
883da5f356b1 docker-sv_django-1 0.03% 81.88MiB / 11.64GiB 0.69% 17.5MB / 11kB 46.8MB / 16.4kB 13
91b06cc22e98 docker-sv_https-portal-1 0.00% 17.53MiB / 11.64GiB 0.15% 17.1kB / 0B 20.5MB / 184kB 14
永続化領域のディスクの消費具合。
このへんは普通かもしれんけど4GBって何入ってんねん。
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$ sudo du -shc *
[sudo] nari のパスワード:
4.1G dat
3.0G docker-images
7.0G 合計
nari@nafslinux-ubu22:/docker/nariDockerDat/sv_ora21$
コンテナに入って確認
ホスト名はちゃんとcompose.ymlに書いたのが使われてる。
他のコンテナからその名前で参照できるはず。
OSとしてはoracle linux7.9が使われてるやな。
redhat系やね。
nari@nafslinux-ubu22:~$ docker exec -it ora21ee bash
bash-4.2$ uname -n
svora21
bash-4.2$ cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="7.9"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.9"
PRETTY_NAME="Oracle Linux Server 7.9"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:9:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://github.com/oracle/oracle-linux"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.9
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.9
bash-4.2$
bash-4.2$ ls
setPassword.sh
bash-4.2$ pwd
/home/oracle
bash-4.2$
使わんけどsystemユーザとかのパスワード変更するスクリプト(setPassword.sh)が入ってる。
bash-4.2$ cat setPassword.sh
#!/bin/bash
# LICENSE UPL 1.0
#
# Copyright (c) 1982-2022 Oracle and/or its affiliates. All rights reserved.
#
# Since: November, 2016
# Author: gerald.venzl@oracle.com
# Description: Sets the password for sys, system and pdb_admin
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
#
if [ -e "${ORACLE_BASE}/oradata/${ORACLE_SID}/.prebuiltdb" ] && [ -n "${ORACLE_PWD}" ] && [ "${ORACLE_PWD}" != "$1" ]; then
echo "WARNING: The database password can not be changed for this container having a prebuilt database. The original password exists in the container environment. Your new password has been ignored!"
exit 1
fi
ORACLE_PWD=$1
ORACLE_SID="$(grep "$ORACLE_HOME" /etc/oratab | cut -d: -f1)"
ORACLE_PDB="$(ls -dl "$ORACLE_BASE"/oradata/"$ORACLE_SID"/*/ | grep -v -e pdbseed -e "${ARCHIVELOG_DIR_NAME:-archive_logs}"| awk '{print $9}' | cut -d/ -f6)"
ORAENV_ASK=NO
source oraenv
sqlplus / as sysdba << EOF
ALTER USER SYS IDENTIFIED BY "$ORACLE_PWD";
ALTER USER SYSTEM IDENTIFIED BY "$ORACLE_PWD";
ALTER SESSION SET CONTAINER=$ORACLE_PDB;
ALTER USER PDBADMIN IDENTIFIED BY "$ORACLE_PWD";
exit;
EOF
bash-4.2$
データ流し込みはやらんけど、動くのは動いた。