CentOS 7 minimal に Oracle Database XE 11gR2 をインストールする場合の手順のメモ。
主にここの手順をみて行いましたので、より詳しい解説はそちらへ。
http://www.ajisaba.net/db/ora_linux_install.html
- Oracle XE をダウンロードします。
OTN のダウンロードサイト (http://www.oracle.com/technetwork/jp/database/database-technologies/express-edition/downloads/index.html) から Oracle Database Express Edition 11g Release 2 for Linux x64 を選択し oracle-xe-11.2.0-1.0.x86_64.rpm.zip をダウンロードします。
- CentOS 7 minimal のインストールをします。
CentOS minimal 自体のインストール方法はこちらを参照してください。 (http://ooltcloud.sakura.ne.jp/blog/201711/article_30210409.html)
CentOS 7.4 インストール直後, メインメモリ 1GB 環境で Oracle Database XE 11.2 はインストール出来ましたが、環境によってはメモリ不足などでインストール出来ない場合があるので注意してください。 - インストールした CennOS に SSH を使って root でログインします。
ダウンロードした oracle-xe-11.2.0-1.0.x86_64.rpm.zip を /tmp に SSH-SCP で転送しておきます。
- インストールに必要なパッケージのインストールをします。
yum install unzip yum install bc yum install nano
bc は計算式(?)を渡すと答えを戻してくるようなコマンドのようです。Oracle のインストーラーか使っているようなので用意しておきます。bc 自体の使用例は以下のような感じです。
echo "1+2+3" | bc 6
nano はエディタです。(個人的な好みです。お好みに応じて emacs とかどうぞ)
- oracle-xe-11.2.0-1.0.x86_64.rpm.zip を /tmp に解凍します。
cd /tmp unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
- /tmp/Disk1 をカレントにして、解凍された rpm をインストールします。
cd /tmp/Disk1 rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
- インストールが完了したら /etc/init.d/oracle-xe configure を実行し、初期化を行います。
例えば以下のような感じで入力します。(網掛部分)
また、netstat でエラーが出ていますが問題なさそうなので無視しています。(そのかわり Listen ポートが被らないように設定します。使用ポートは ss コマンドで確認します。)
エラーが気になる人は netstat をインストール (yum install net-tools) してから以下の初期化を実行してください。[root@localhost ~]# /etc/init.d/oracle-xe configure Oracle Database 11g Express Edition Configuration ------------------------------------------------- This will configure on-boot properties of Oracle Database 11g Express Edition. The following questions will determine whether the database should be starting upon system boot, the ports it will use, and the passwords that will be used for database accounts. Press
to accept the defaults. Ctrl-C will abort. Specify the HTTP port that will be used for Oracle Application Express [8080]: 8080 /etc/init.d/oracle-xe: line 362: netstat: command not found Specify a port that will be used for the database listener [1521]: 1521 /etc/init.d/oracle-xe: line 405: netstat: command not found Specify a password to be used for database accounts. Note that the same password will be used for SYS and SYSTEM. Oracle recommends the use of different passwords for each database account. This can be done after initial configuration: (管理者用のパスワード) Confirm the password: (管理者用のパスワード) Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]: y Starting Oracle Net Listener...Done Configuring database...Done Starting Oracle Database 11g Express Edition instance...Done Installation completed successfully. - sqlplus 用に rlwrap をインストールします。
標準の状態だと sqlplus でカーソルキーを使った操作ができないので rlwrap というラッパーを導入します。
詳しくはここを参照して下さい。 https://qiita.com/inomasa/items/391c025532db6b87a1d5rlwrap は 公式リポジトリにはないパッケージらしく、epel リポジトリを参照する必要があるらしいです。なので、まずは epel リポジトリを参照できるようにします。
epel についてはここを参照しました。http://note.kurodigi.com/centos7-epel/yum install epel-release.noarch
デフォルトの設定だと公式リポジトリにあるパッケージも epel から取得するようになるらしいので、設定を変更し普段は epel を参照しないようにしておきます。
nano /etc/yum.repos.d/epel.repo
[epel] ブロックにある enabled を 0 にします。
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
rlwrap をインストールします。上記の設定で epel を参照しない設定にしたので、--enablerepo=epel オプションを付加して epel リポジトリを参照するように指定してインストールします。
yum install --enablerepo=epel rlwrap
- 環境設定をします。
Oracle ユーザーでログインし、.bash_profile, .bashrc の設定をします。
Oracle のインストールで作成された oracle ユーザーには、.bash_profile, .bashrc がないらしいので、ひな形フォルダ (/etc/skel/) から .bash_profile, .bashrc をコピーしてから行います。su - oracle cp /etc/skel/.bash_profile /u01/app/oracle/ cp /etc/skel/.bashrc /u01/app/oracle/ nano ~/.bashrc
.bashrc の内容を以下のように変更します。
先頭の . (ドット) は忘れないように。これがないとスクリプト内で設定した環境変数が設定されません。(言い回しが難しい -_-;)# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Uncomment the following line if you don't like systemctl's auto-paging feature: # export SYSTEMD_PAGER= # User specific aliases and functions . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
- Oracle への接続の確認をします。
一旦 root に戻り、その後 oracle ユーザーで再接続してから oracle への接続を確認します。
[oracle@localhost root]$ rlwrap sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on 金 12月 8 00:00:00 2017 Copyright (c) 1982, 2011, Oracle. All rights reserved. Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production に接続されました。 SQL> select status from v$instance; STATUS ------------ OPEN SQL>
sqlplus の前に rlwrap を書かないと、カーソルキーを操作したとき謎の文字が表示されるので注意します。
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production に接続されました。 SQL> ^[[A
面倒くさい、と思うようであれば .bashrc に alias を設定してください。
alias sqlplus='rlwrap sqlplus'
- 外部からの接続確認をします。
外部から接続する場合にはファイアウォールを適切な設定にします。今回は面倒なので停止にします。
systemctl stop firewalld systemctl disable firewalld
これで、外部からの接続に成功すれば OK です。
以下は Windows のコマンドプロンプトからの接続の例です。C>sqlplus sys/管理者用のパスワード@xxx.xxx.xxx.xxx/xe as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 金 12月 8 20:59:15 2017 Copyright (c) 1982, 2013, Oracle. All rights reserved. Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production に接続されました。 SQL>
最後に Installation completed successfully. が出ていれば成功です。