読者です 読者をやめる 読者になる 読者になる

技術周りのあれこれ

主に自分用のメモです。技術的なことや個人的にやってみたことを書いてます。

Oracle Database 11g Express Editionのインストール @CentOS 6.8

はじめに

Oracle Database 11g Express Edition は無償で使えるOracle Databaseです。 他のバージョンは有償なのでテストで使用したい場合は助かります。

今回はOracle DatabaseをCentOS 6.8にインストールして、 クライアント(Windows10)から接続テストを行うところまでをまとめました。


ダウンロードとインストール

下記URLにアクセスし、「ライセンスに同意する」を選択し、「Oracle Database Express Edition 11g Release 2 for Linux x64」をダウンロードします。
http://www.oracle.com/technetwork/jp/database/database-technologies/express-edition/downloads/index.html ※サインインを求められるので、Oracleプロファイルを持ってない方はプロファイを作成しサインインしてください。

ダウンロードしたらVMware上のサーバーにSFTPで送り、unzipコマンドで解凍します。

f:id:the-casket-of-star:20160926144331p:plain

  
# 開発用パッケージをインストール  
yum groupinstall "Development Tools"  
  
# bcが必要なので、インストールします。  
yum –y install bc  
  
cd Disk1  
rpm –ivh oracle-xe-11.2.0-1.0.x86_64.rpm  

f:id:the-casket-of-star:20160926144541p:plain

※SWAPが2GB未満で失敗した場合

``

swapが2GBないと失敗します。 失敗した場合は、swap領域を増やしてください。
参考URL:
https://www.nextrevo.jp/iij-gio/gio-p2%E3%81%AEcentos%E3%81%A7swap%E9%A0%98%E5%9F%9F%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B/

# mountコマンドで / のパーティションを確認  
mount

# swap領域1GB追加
fallocate -l 1G /swapfile.img
chmod 600 /swapfile.img
mkswap /swapfile.img

# 起動時にswap領域有効化
vi /etc/fstab
------------------------------
# 一番下に以下を追加
/swapfile.img swap swap default
------------------------------

初期化

下記のコマンドを実行します。 基本的にはパスワード入力以外はEnterで問題無いです。

/etc/init.d/oracle-xe configure

f:id:the-casket-of-star:20160926160506p:plain


設定

# 共有ライブラリを設定します。
vi /etc/ld.so.conf.d/oracle.conf
# 以下を記載
----------------------------------
/u01/app/oracle/product/11.2.0/xe/lib
----------------------------------


# 設定したファイルを反映
ldconfig

# 設定ファイルが反映されたか確認
ldconfig –v
/u01/app/oracle/product/11.2.0/xe/lib:
が記載してあればOK

# クライアントユーザーの環境設定
# su - oracle
-bash-4.1$ cp /etc/skel/.bash_profile /u01/app/oracle/ 
-bash-4.1$ cp /etc/skel/.bashrc /u01/app/oracle/
-bash-4.1$ vi ~/.bashrc
--------------------------------------------------
# 一番下に以下を追記
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
--------------------------------------------------

f:id:the-casket-of-star:20160926160650p:plain

# systemでの接続テスト sqlplusコマンドでOracleに接続テストします。 ユーザー名はsystem パスワードは初期化コマンド “/etc/init.d/oracle-xe configure” 実行時に入力したものです。

f:id:the-casket-of-star:20160926160742p:plain

# 環境変数の設定
vi /etc/profile
# 最終行に以下を追加
=====================================================
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
export ORACLE_BASE=/u01/app/oracle
=====================================================
# 即時反映
source /etc/profile

# listener.oraの設定
cd $ORACLE_HOME
vi network/admin/listener.ora
===============================
# listener.ora Network Configuration File:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = XE.cacti-PC)
      (SID_NAME = XE)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
    )
  )

LISTENER =
 (DESCRIPTION =
   (ADDRESS_LIST=
      (ADDRESS = (PROTOCOL = TCP)(HOST = cacti-PC)(PORT = 1521))
   )
 )
===============================

# local_listenerの設定
sqlplusコマンドでOracleに接続します。
 sudo su oracle
 cd $ORACLE_HOME
 bin/sqlplus /nolog
SQL> conn / as sysdba
SQL>show parameter local listener;

local_listenerのVALUEの項目に何も表示されていなければ、
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=サーバーのホスト名)(PORT=1521))';
で入力。

# iptablesの設定
vi /etc/sysconfig/iptables
# 以下を追記
===============================================================
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
===============================================================

# リスナーの起動
f:id:the-casket-of-star:20160926160820p:plain


クライアント側の設定

ダウンロードとインストール

下記のURLへ行き、バージョンに合わせてダウンロードします。
今回は、ローカルマシンがWindows 10 x64なので、”Instant Client for Microsoft Windows (x64)”を選択します。
http://www.oracle.com/technetwork/jp/topics/index-099943-ja.html

f:id:the-casket-of-star:20160926161101p:plain

“こちら(USサイト)”をクリックします。

f:id:the-casket-of-star:20160926161125p:plain

Accept License Agreementを選択し、
Instant Client Package – Basic
Instant Client Package – SQLPlus
Instant Client Package – ODBC
のパッケージをダウンロードします。

f:id:the-casket-of-star:20160926161209p:plain

全て解凍すると同じフォルダの中に入ります。
例:Version 12.1 の場合 → instantclient_12_1
フォルダ名をわかりやすいように「oracle」に変えます。
これを好きな場所に置いてください。
今回は自分のUserフォルダ直下に置きました。(C:\Users\d-furukawa\oracle)

設定

システム環境変数のPathに先ほど設置したフォルダパス(C:\Users\<User名>\oracle)を登録します。
f:id:the-casket-of-star:20160926162835p:plain

同様に
変数名TNS_ADMINを新規に追加し、同じフォルダパスに続けて、tnsnames.oraを値に入力して[OK]をクリックします。
※tnsnames.oraは後ほど作成します。

f:id:the-casket-of-star:20160926162902p:plain

変数名NLS_LANGを新規に追加し、JAPANESE_JAPAN.JA16SJISTILDEを値に入力して[OK]をクリックします。

f:id:the-casket-of-star:20160926162918p:plain

# hostsの設定
C:\Windows\System32\drivers\etc\hosts
をエディタで開きます。
※私は、Visual Studio Codeで開いています。
下記の用に最後にサーバーのIPアドレスとホスト名を記述します。
f:id:the-casket-of-star:20160926162958p:plain

# ODBCドライバのセットアップ
次にODBCドライバのセットアップを行います。
コマンドプロンプトを起動し、作ったoracleフォルダに移動します。
"odbc_install JA"と入力して、Enterで
"Oracle ODBC Driver is installed successfully"
と表示されれば完了です。

# tnsnames.oraの作成
Oracleデータベースに接続するための接続情報を記述したファイルが必要です。
以下のファイルを環境変数TNS_ADMINに設定したフォルダの中に設置します。
ファイル名:tnsnames.ora
1行目は任意の名前を入れます。
HOSTには、サーバーのIPアドレスまたはホスト名を記述します。
SERVICE_NAMEには、サーバのlistener.oraで書いたSID_NAMEの値と同じにします。
※これがあってないと接続できません。理解するのにかなり時間がかかりました。
※XEは初期で作られているSERVICEです。

f:id:the-casket-of-star:20160926163156p:plain

コントロールパネル→管理ツール→ODBCデータソース(64ビット)を起動します。
※管理者権限で起動してください。

f:id:the-casket-of-star:20160926163221p:plain

追加をクリックします。

f:id:the-casket-of-star:20160926163502p:plain

Oracleのドライバーを選択して、[完了]をクリックします。
※人によって、名称が違うみたいです。
f:id:the-casket-of-star:20160926163518p:plain

データソース名は自分で決めてください。
TNSサービス名は、tnsnames.oraの1行目で書いた値を設定します。
f:id:the-casket-of-star:20160926165149p:plain

# 接続テスト  
sudo su oracle
cd $ORACLE_HOME/bin
sqlplus system/<パスワード>@XE

SQL> create role developer identified by developer;
SQL> create table emp
  2  (
  3  emp_id char(3),
  4  emp_name varchar2(10),
  5  primary key(emp_id)
  6  )
  7  ;

確認

f:id:the-casket-of-star:20160926165226p:plain

以上