0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Oracle Database XE 18c on LXC (Oracle Linux7) on Proxmox VE 7

Last updated at Posted at 2021-03-14

#はじめに
今更、オンプレでOracle DBを構築するなんて、奇特な環境×奇特なDB=かなり奇特な構築だとは思うが、メモとして書き残しておく。
ProxmoxはKVMとLXCコンテナをWeb UIで構築、管理ができて便利。しかも無料。
VMのまるごとバックアップもWeb UIでクリックだけで出来るので運用も楽。
LXCのテンプレートもたくさんあり、環境づくりが簡単に出来るのである。

しかし、Oracle DBのテンプレートは存在しないので、今回作ってみることにした。

Oracle Linux8で環境を作りたかったが、どうやっても上手く行かず断念。
Oracle Linux8だとなぜか、リスナがインストール中に落ちる。

バージョン
Proxmox VE 7.0
Oracle Database XE 18c
Oracle Linux 7.9

#cgroupv1モードに変更
cgroupv2では、Oracle Linux7は起動しないため、Proxmox VE7のカーネルパラメーターを変更しcgroupv1モードにする

$ nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  ↓
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet systemd.unified_cgroup_hierarchy=0"

$ update-grub
$ reboot

#Oracle Linux7のテンプテートをダウンロード
ストレージのCTテンプレートから、「Download from Link」をクリックする
Web キャプチャ_8-7-2021_92326_192.168.1.210.jpeg

開く画面で以下のように入力

名称 設定値
URL https://uk.lxd.images.canonical.com/images/oracle/7/amd64/default/20220601_07:46/rootfs.tar.xz
File Name oracle-linux-7.tar.xz

URLは3日しか有効でないため、ローカルのブラウザで以下のURLを開き、下層にあるrootfs.tar.xzを探して下さい。
https://uk.lxd.images.canonical.com/images/oracle/7/amd64/default/
ProxmoxにSSHでログインしているなら以下のコマンドを実行してください

wget -O /var/lib/vz/template/cache/oracle-linux-7.tar.xz https://uk.lxd.images.canonical.com/images/oracle/7/amd64/default/20220601_07:46/rootfs.tar.xz

#Oracle Linux7のLXCコンテナを作成
右上のCT作成からコンテナを作成。

CentOS7のコンテナのIPアドレスは固定してください。(IPv4は固定。IPv6はStaticにして空白に。)しないと、DB作成の際に失敗します。

#oracle-database-preinstallをインストール
レポジトリがはじめから入っているため、そのままyumでインストール

yum -y update
yum -y install oracle-database-preinstall-18c

このまま、Oracle DBをインストールすると、エラーで落ちるため対策
VMが使えるメモリを算出しようとするとエラーが出てしまうため、以下のファイルを編集しコメントアウト。

nano /etc/security/limits.d/oracle-database-preinstall-18c.conf

下記2行をコメントアウト

# oracle-database-preinstall-18c setting for memlock hard limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90 % of RAM
#oracle   hard   memlock    134217728

# oracle-database-preinstall-18c setting for memlock soft limit is maximum of 128GB on x86_64 or 3GB on x86 OR 90% of RAM
#oracle   soft   memlock    134217728

#Oracle DBをインストール
XEは無料のため、Oracleのサーバーから直接ダウンロード&インストール可能です。

yum -y install https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-18c-1.0-1.x86_64.rpm

#DB構築
途中SYSとSYSTEMのパスワードを聞いてくるため入力。

/etc/init.d/oracle-xe-18c configure

Specify a password to be used for database accounts. 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]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:
Confirm the password:

#リスナと接続先変更
listener.oraのHOST名をIPアドレスに変更する

nano /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora

# listener.ora Network Configuration File: /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

tnsnames.oraも同様にHOST名もIPアドレスに変更する。

nano /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora

# tnsnames.ora Network Configuration File: /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORCLCDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLCDB)
    )
  )

LISTENER_ORCLCDB =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))

#サービスを起動

systemctl daemon-reload
systemctl enable oracle-xe-18c
systemctl start oracle-xe-18c

#Oracle DBを自動起動するように設定

nano /etc/oratab
XE:/opt/oracle/product/18c/dbhomeXE:Y

#oracleユーザーに移行

su - oracle

#oracleユーザーの環境変数を設定

nano .bash_profile

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export ORACLE_SID=XE
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/18c/dbhomeXE
export NLS_LANG=Japanese_Japan.AL32UTF8

PATH=$PATH:$ORACLE_HOME/bin

export PATH

#oracleユーザーの環境変数を反映

source .bash_profile

#今までの設定が正しいか確認
環境変数が正しいか。サービスが起動しているかの確認のため、リスナを見てみる。
接続中になればOK。

lsnrctl status
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LXC_NAME)(PORT=1539)))に接続中

#PDBを自動起動するように設定。

sqlplus / as sysdba

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         MOUNT      NO


SQL> alter pluggable database XEPDB1 open;
SQL> alter pluggable database all save state;

メモリ割当を増やした場合は以下のコマンドを実行割当を増やす

SQL> alter system set memory_max_target = 3G scope=spfile;
SQL> alter system set memory_target = 3G scope=spfile;
SQL> alter system set inmemory_size= 1G scope=spfile;
SQL> alter system set inmemory_clause_default = 'INMEMORY MEMCOMPRESS FOR QUERY LOW PRIORITY MEDIUM' scope=spfile;
SQL> shutdown immediate
SQL> startup

#DBに接続してみる
接続文字列の形式:[ユーザー名]/[パスワード]@//[ホスト名]:[ポート]/[DBサービス名] [AS SYSDBA]

-- Container Database (CDB) に接続する場合:
sqlplus sys/GetStarted18c@//localhost:1539/XE as sysdba
     
-- Pluggable Database (PDB) に初めて接続する場合:
sqlplus sys/GetStarted18c@//localhost:1539/XEPDB1 as sysdba
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?