この記事は約10分48秒で読むことができます。

docker rlwrap周りの整備で粘り勝った話

まえがき

docker images oracleを使う時にさっと環境整備したかったので、粘ってシェルスクリプト書き切った。

参考文献

su oracleがrootユーザーからできないとき、んっってなったので、調べた。

su: cannot open session: Permission denied  

事前にdockerホストにepel-repo登録しておく

ほんとは一元化したいけど、エスケープハマったので、妥協してしまった。粘り勝っていない。。エスケープ上手く扱えるようになりたい。

コード表示

[oracle@centos doclan]$ sudo cp /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 /etc/yum.repos.d/epel.repo .
[sudo] oracle のパスワード:
[oracle@centos doclan]$ ll
合計 16
drwxr-xr-x. 3 root   root   4096  5月 25 13:14 19cr3
-rw-r--r--. 1 root   root   1662  5月 25 17:45 RPM-GPG-KEY-EPEL-7
-rwxr-xr-x. 1 oracle docker  659  5月 25 17:37 env.sh
-rw-r--r--. 1 root   root    951  5月 25 17:45 epel.repo

env.sh

汚い ^^;まぁ、うまいやりかた思いついたら、描き直そう。

コード表示

[oracle@centos doclan]$ cat env.sh
#!/bin/bash

echo 'root_pwd' | passwd --stdin root
yum install -y passwd && \
yum install -y sudo
echo 'oracle_pwd' | passwd --stdin oracle
echo 'oracle ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
sed -i -e 's/^\(oracle   hard   memlock\)/#\1/' /etc/security/limits.d/oracle-database-preinstall-19c.conf

cp /mnt/RPM-GPG-KEY-EPEL-7 /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && \
cp /mnt/epel.repo /etc/yum.repos.d/epel.repo

su oracle -c 'cd ~ && \
sudo yum update -y && \
sudo yum install -y rlwrap && \
sudo yum install -y vim && \
sudo mkdir -p rlwrap-extensions && \
cd rlwrap-extensions && \
sudo curl -LO http://www.linuxification.at/download/rlwrap-extensions-V12-0.05.tar.gz && \
sudo tar xvfz rlwrap-extensions-V12-0.05.tar.gz
'

su oracle -c 'sed -i -e "$ a alias sqlplus=\"rlwrap -pRed -if ~/rlwrap-extensions/sqlplus sqlplus\"" ~/.bashrc'

su oracle -c '
cat </opt/oracle/product/19c/dbhome_1/sqlplus/admin/glogin.sql
COLUMN OTHER_PLUS_EXP FORMAT A200
COLUMN PLAN_PLUS_EXP  FORMAT A200
SET NUMWIDTH 13
SET LINESIZE 1000
SET LONG 40000
SET LONGCHUNKSIZE 40000
SET PAGESIZE 50000
SET SERVEROUTPUT ON
SET TAB OFF
SET TRIMSPOOL ON
set feed on
--set autotrace traceonly
set timing on
--set hist on
DEFINE_EDITOR=nano
set sqlp "_USER'''\'@''\''_CONNECT_IDENTIFIER> "
EOF
'
su oracle

実行

コード表示

[oracle@centos doclan]$ docker run -v /home/oracle/doclan:/mnt -v /home/oracle/doclan/19cr3/init:/docker-entrypoint-initdb.d/startup -d --name orcl_19cr3 --shm-size=4g -p 1521:1521 -p 5500:5500 -e TZ=Asia/Tokyo -e ORACLE_PWD=ORACLE_PWD -e ORACLE_SID=ORCL -e ORACLE_PDB=pdb1 oracle/database:19.3.0-ee
[oracle@centos doclan]$ docker ps -a
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS                   PORTS                                            NAMES
42b3dd2da618        oracle/database:19.3.0-ee   "/bin/sh -c 'exec $O…"   7 hours ago         Up 7 hours (unhealthy)   0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp   orcl_19cr3
[oracle@centos doclan]$ docker exec --interactive --tty --user root --workdir / orcl_19cr3 bash
bash-4.2# cd /mnt && ./env.sh
[oracle@42b3dd2da618 mnt]$ cat /opt/oracle/product/19c/dbhome_1/sqlplus/admin/glogin.sql
COLUMN OTHER_PLUS_EXP FORMAT A200
COLUMN PLAN_PLUS_EXP  FORMAT A200
SET NUMWIDTH 13
SET LINESIZE 1000
SET LONG 40000
SET LONGCHUNKSIZE 40000
SET PAGESIZE 50000
SET SERVEROUTPUT ON
SET TAB OFF
SET TRIMSPOOL ON
set feed on
--set autotrace traceonly
set timing on
--set hist on
DEFINE_EDITOR=nano
set sqlp "_USER'@'_CONNECT_IDENTIFIER> "
[oracle@42b3dd2da618 mnt]$ sqlplus sys/ORACLE_PWD@pdb1 as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 25 19:54:10 2019
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SYS@pdb1> show pdbs

       CON_ID CON_NAME                       OPEN MODE  RESTRICTED
------------- ------------------------------ ---------- ----------
            3 PDB1                           READ WRITE NO

あとがき

エスケープうまくなりたい。

Leave a Reply

Your email address will not be published. Required fields are marked *