GoldenGate布教活動②　～GoldenGateのインストール～

このエントリは <a href="https://adventar.org/calendars/3525?fbclid=IwAR0WNOjiILDk6FXneWgWUdihG0un3xH3GObR1WfBfVEZG5x_LxySBIHBSU0">Oracle Database or GoldenGate Advent Calendar 2018</a> Day 6 の記事です！

今回のエントリでは<a href="https://docs.oracle.com/cd/E92689_01/gg-winux/OGGIN/toc.htm">OracleR Fusion Middleware Oracle GoldenGateのインストール 12c (12.3.0.1)</a>にそって実際にGoldenGateをインストールしていく手順をお届けしたいと思います

OS要件とかは各自個別に確認してね！

ソフトウェアは<a href="https://www.oracle.com/technetwork/jp/middleware/goldengate/downloads/index.html">ここ</a>からダウンロードします

ライセンスの規約についてもしっかり各自で確認してね！

今回は下記のような環境で構築します
・Oracle Database 12.2.0.1
・Oracle GoldenGate 12.3.0.1.4
・Red Hat Enterprise Linux Server release 6.9(x86-64) 

ちなみにお使いのDatabaseをサポートするGoldenGateのバージョンを知りたい場合は<a href="https://www.oracle.com/technetwork/jp/middleware/ias/downloads/fusion-certification-100350.html">Certification Matrix</a>をご使用ください！

今回はGoldenGate 12.3.0.1を使用するので、「Oracle Fusion Middleware 12c Certifications > System Requirements and Supported Platforms for Oracle GoldenGate 12c (12.3.*)」ですね

では早速ソフトウェアのDLからやっていきたいと思います

#GoldenGateインストール

##１．ライセンス同意
ライセンス規約をよく読んでOKであれば同意
![WS000000.png](https://qiita-image-store.s3.amazonaws.com/0/60220/78bdc27a-d778-8a29-b5ca-9ef26ed8b506.png)

##２．ソフトウェアダウンロード
今回はLinux x86-64なので適したプラットフォームのソフトウェアを選択
![WS000001.png](https://qiita-image-store.s3.amazonaws.com/0/60220/3cd8b139-9bd3-780d-ebd0-e9cd2937208b.png)

ダウンロードできたら早速構築先のサーバーに転送しましょう
今回はTeratermで転送します

##３．ソフトウェア転送
ダウンロードしたソフトウェアをTeratermのSSH SCPで転送
![WS000002.png](https://qiita-image-store.s3.amazonaws.com/0/60220/9363a471-f687-21f6-5e79-a8cb1a7940ee.png)

##４．転送確認
転送完了したら確認

```
[oracle@test01 ~]$ ls /home/oracle/work/123014_fbo_ggs_Linux_x64_shiphome.zip
/home/oracle/work/123014_fbo_ggs_Linux_x64_shiphome.zip
```

##５．インストール用の一時ディレクトリ作成
テンポラリのインストールディレクトリを作成します

```
[oracle@test01 ~]$ mkdir /home/oracle/work/gg_inst
[oracle@test01 ~]$ ls /home/oracle/work/gg_inst
[oracle@test01 ~]$ cd /home/oracle/work/gg_inst
```

##６．ソフトウェア展開(UNZIP)
インストールディレクトリに移動してUNZIPしましょう

```
[oracle@test01 gg_inst]$ unzip ../123014_fbo_ggs_Linux_x64_shiphome.zip
Archive:  ../123014_fbo_ggs_Linux_x64_shiphome.zip
   creating: fbo_ggs_Linux_x64_shiphome/
   creating: fbo_ggs_Linux_x64_shiphome/Disk1/
   creating: fbo_ggs_Linux_x64_shiphome/Disk1/install/
  inflating: fbo_ggs_Linux_x64_shiphome/Disk1/install/.oui
  inflating: fbo_ggs_Linux_x64_shiphome/Disk1/install/attachHome.sh
  inflating: fbo_ggs_Linux_x64_shiphome/Disk1/install/clusterparam.ini
(省略)

[oracle@test01 gg_inst]$ ls
fbo_ggs_Linux_x64_shiphome  OGG_WinUnix_Rel_Notes_12.3.0.1.4.pdf
OGG-12.3.0.1.4-README.txt
```

fbo_ggs_Linux_x64_shiphomeというフォルダが作成されていますね！
ここにrunInstallerが入っています

```
[oracle@test01 gg_inst]$ ls fbo_ggs_Linux_x64_shiphome/Disk1/
install  response  runInstaller  stage
```

今回はOracle Universal Installer(以下、OUI)を使用して対話型(インストール場所どこにするとか選択しながら)で設定していきます
現在Teratermから接続しているのでSSH転送とXmingを使用して、サーバーからクライアント(今構築に使っているPC)にOUIの画面を飛ばします
ここらへんの手順は下記を参考にしてください！
[Xming + Teraterm で画面転送] (http://www.mikitechnica.com/11-xming-teraterm.html)

ではrunInstallerを実行していきます！

##７．runInstaller実行

```
[oracle@test01 gg_inst]$ cd fbo_ggs_Linux_x64_shiphome/Disk1/
[oracle@test01 Disk1]$ ./runInstaller
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 12![WS000004.png](https://qiita-image-store.s3.amazonaws.com/0/60220/e299d71f-19b4-87c8-3b13-532c0da7e4ad.png)
0 MB.   Actual 7469 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 6071 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2018-12-06_11-16-01AM. Please wait ...
```

OUIの画面が飛んできました！

![WS000003.png](https://qiita-image-store.s3.amazonaws.com/0/60220/7ec98bdf-b7d4-91a1-b600-d1e1a99ec822.png)

##８．OUI設定
では設定を行っていきたいと思います

###８－１．Database Versionの選択
今回はDatabase 12.2.0.1を使用するので「Oracle GoldenGate for Oracle Database 12c」を選択します

![WS000004.png](https://qiita-image-store.s3.amazonaws.com/0/60220/97388dc4-bec8-b1c7-724f-7a31b6eefd31.png)

###８－２．GoldenGateソフトウェアロケーションと、Databaseロケーションの指定
GoldenGateソフトウェアロケーション、いわゆるGG_HOMEの設定を行います

![WS000006.png](https://qiita-image-store.s3.amazonaws.com/0/60220/22666fab-b8cf-0bc7-e2df-e827c5a64e74.png)

一応マニュアルには下記の記載があるため留意して設定してください
>マウントされておらず、割当て制限のないローカル・ディレクトリに変更することをお薦めします。

今回は　/u01/app/oracle/product/　配下にgghome_1という名前で指定しようと思います
またDatabaseロケーションには既にインストール済みのDatabase 12.2.0.1のDB_HOMEを指定します

```
[oracle@test01 Disk1]$ echo $ORACLE_HOME
/u01/app/oracle/product/12.2.0/dbhome_1/
```

その他の項目については下記のとおりです
・Start Manager：GoldenGateインストール後にManagerプロセスを起動するか
・Manager Port：Managerプロセスが使用するポート番号
　　　　　　　　　使用していないポート番号を指定する必要がある
　　　　　　　　　後ほど変更可能

基本的には上記２項目はデフォルトでいいので下のような設定で次に進みます

![WS000007.png](https://qiita-image-store.s3.amazonaws.com/0/60220/fb5e4a89-faca-e211-4665-6b8b6b0eab8f.png)

インストールで設定が必要な項目はここまで！

###８－３．Summary確認
それではサマリを確認しましょう
入力した下記の項目が正しく反映されていればOKです
・Database Version
・GoldenGateソフトウェアロケーション(GG_HOME)
・Databaseソフトウェアロケーション(既にインストールずみのDBのORACLE_HOME)
・インストールしたあとManagerを起動するか
・Managerが使用するポート

ではインストールしたいと思います

##９．インストール

![WS000009.png](https://qiita-image-store.s3.amazonaws.com/0/60220/79e4fa7f-73a0-548d-6a51-5c10d0192f81.png)

すすんでますね～
結構サクッと完了すると思います

(5分後)

完了しました！

![WS000011.png](https://qiita-image-store.s3.amazonaws.com/0/60220/b7ee77c5-f91c-60b0-623d-a04b1f51526a.png)

インストール自体はかなり簡単だったと思います！！
それでは確認と事後作業を行っていきましょう～

##１０．確認

###１０－１．GG_HOME確認
lsで見てみると

```
[oracle@test01 Disk1]$ ls /u01/app/oracle/product/gghome_1/
archivelog.sql                   ggparam.dat
bcpfmt.tpl                       ggsci
bcrypt.txt                       ggserr.log
cachefiledump                    healthcheck
cfgtoollogs                      help.txt
checkprm                         install
chkpt_ora_create.sql             inventory
convchk                          jdk
convprm                          keygen
crypto                           label.sql
db2cntl.tpl                      libantlr3c.so
db_upgrade                       libboost_system-mt.so.1.58.0
ddl_cleartrace.sql               libdb-6.1.so
ddl_create.sql                   libgglog.so
ddl_ddl2file.sql                 libggnnzitp.so
ddl_disable.sql                  libggparam.so
ddl_enable.sql                   libggperf.so
ddl_filter.sql                   libggrepo.so
ddl_ora10.sql                    libggssl.so
ddl_ora10upCommon.sql            libggutil.so
ddl_ora11.sql                    libicudata.so.56
ddl_ora9.sql                     libicui18n.so.56
ddl_pin.sql                      libicuuc.so.56
ddl_remove.sql                   liblmdb.so
ddl_session1.sql                 libPocoCrypto.so.48
ddl_session.sql                  libPocoFoundation.so.48
ddl_setup.sql                    libPocoJSON.so.48
ddl_status.sql                   libPocoNet.so.48
ddl_staymetadata_off.sql         libPocoNetSSL.so.48
ddl_staymetadata_on.sql          libPocoUtil.so.48
ddl_tracelevel.sql               libPocoXML.so.48
ddl_trace_off.sql                libudt.so
ddl_trace_on.sql                 libxerces-c-3.1.so
defgen                           logdump
deinstall                        marker_remove.sql
demo_more_ora_create.sql         marker_setup.sql
demo_more_ora_insert.sql         marker_status.sql
demo_ora_create.sql              mgr
demo_ora_insert.sql              noop.sql
demo_ora_lob_create.sql          notices.txt
demo_ora_misc.sql                oggerr
demo_ora_pk_befores_create.sql   OPatch
demo_ora_pk_befores_insert.sql   oraInst.loc
demo_ora_pk_befores_updates.sql  oui
diagnostics                      params.sql
dirchk                           pmsrvr
dircrd                           prvtclkm.plb
dirdat                           prvtlmpg.plb
dirdef                           prvtlmpg_uninstall.sql
dirdmp                           remove_seq.sql
diretc                           replicat
dirout                           retrace
dirpcs                           role_setup.sql
dirprm                           sequence.sql
dirrpt                           server
dirsca                           SQLDataTypes.h
dirsql                           sqlldr.tpl
dirtmp                           srvm
dirwlt                           tcperrs
emsclnt                          ucharset.h
extract                          ulg.sql
freeBSD.txt                      UserExitExamples
ggcmd                            usrdecs.h
ggMessage.dat                    zlib.txt
```

なんかたくさんディレクトリやファイルができていますね！
各コンポーネントの詳細はこちらをご参照ください
[6 インストールされるOracle GoldenGateのコンポーネント](https://docs.oracle.com/cd/E92689_01/gg-winux/OGGIN/oracle-goldengate-installed-components_db.htm)

###１０－２．GGSCIでプロセス確認
ではお待ちかねのGoldenGateプロセスを管理する独自のコマンドラインインターフェイス、GGSCIを実行してみましょう

```
[oracle@test01 gghome_1]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz12.so: cannot open shared object file: No such file or directory
```

Oops!
ライブラリ変数の設定を忘れていたので怒られてしまいました
libnnz12.soがありませんよ！と行っていますね

Linuxの場合はLD_LIBRARY_PATHという変数にライブラリのパスを通してあげましょう

```
[oracle@test01 gghome_1]$ export LD_LIBRARY_PATH=/u01/app/oracle/product/12.2.0/dbhome_1/lib/
[oracle@test01 gghome_1]$ echo $LD_LIBRARY_PATH
/u01/app/oracle/product/12.2.0/dbhome_1/lib/
```

では再度GGSCIを実行


```
[oracle@test01 gghome_1]$ ./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.4 OGGCORE_12.3.0.1.0_PLATFORMS_180415.0359_FBO
Linux, x64, 64bit (optimized), Oracle 12c on Apr 16 2018 00:53:30
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
```

できましたー♪

ついでにどんなプロセスが上がっているかも見たいと思います
プロセスの一覧を出す場合はGGSCIにてINFO ALLコマンドを実行します

```
GGSCI (test01.jp.oracle.com) 2> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
```

まだCapture,Datapump,Replicatを作成していないので、Managerだけ起動していますね！
ちなみにManagerのパラメータファイルも自動的に作成されています

パラメータファイルは$GG_HOME/dirprmにあるのでOSからlsで見てみましょう

```
[oracle@test01 gghome_1]$ ls dirprm/
mgr.prm
```

ありました！内容はどんな感じでしょうか

```
[oracle@test01 gghome_1]$ cat dirprm/mgr.prm
PORT 7809
```

OUIにて設定したデフォルトポート7809を使用する設定がしっかり書いていますね！

最後にOSプロセスとしてはどのように見えているのでしょうか
psコマンドで./mgrをみてみましょう

```
[oracle@test01 gghome_1]$ ps -ef | grep ./mgr | grep -v grep
oracle   12440     1  0 11:34 ?        00:00:00 ./mgr PARAMFILE /u01/app/oracle/product/gghome_1/dirprm/mgr.prm REPORTFILE /u01/app/oracle/product/gghome_1/dirrpt/MGR.rpt PROCESSID MGR
```

元気に動いてそう！
ついでに7809ポートをちゃんと使っているかlsofコマンドで見てみます

```
[oracle@test01 gghome_1]$ lsof -i | grep mgr
mgr       12440 oracle    7u  IPv6 4431443      0t0  TCP *:7809 (LISTEN)

[oracle@test01 gghome_1]$ lsof -i:7809
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
mgr     12440 oracle    7u  IPv6 4431443      0t0  TCP *:7809 (LISTEN)
```

しっかり
指定したポートで可動していますね！

このあとのエントリで解説しますが、Datapumpプロセスがターゲット側とやり取りをする際に、Managerプロセスのポートを意識する必要があります！
もしDatapumpプロセスとManagerプロセスがきちんとやり取りできているか不安になった場合は、意図したポートで稼働しているか確認しましょう！


##まとめ
今回もざっくりと書きましたが、GoldenGateのインストールについて記載しました
皆さんも是非一度インストールしてくださいね！