二楷堂昴の人生忙しい

二楷堂昴の人生忙しい

二楷堂昴が技術者のために技術知識を書いていきます

米IBMによるRed Hat買収について。Unix/Linux市場では最大手企業に

2018年29日、米IBMによるRed Hat買収が発表されました。
3兆8000億円という過去最高規模での買収劇となり、Linux市場では最大手ともいえるRed Hatの買収の衝撃はIT業界にとって非常に大きなものです。
また、26日はMicrosoftによるGuthubの買収も完了し、大手企業のM&Aによる市場拡大が活発です。
昨年はBrocadeの事業買収もあり、クラウドファーストである企業以外でもインパクトのあるM&Aが発生している状況です。


今回のIBMによるRed Hat買収によってIBM世界最大手のUnix/Linuxディストリビュータであると共にオープンソース企業となりました。


元々IBMが抱えている「AIX」もPowerアーキテクチャだけではなくIAサーバ向きも存在しております。
独自の「VIOS」を利用した冗長化など特徴のある製品です。
ファイルシステム管理の「LVM」に関しても最初にIBMが開発した技術とあって元々UnixLinuxの技術には精通しているでしょう。


またIBMは数年前にレノボにPCサーバ事業を売却してハードウェアベンダーからサービス事業やクラウド事業へシフトしています。


もちろん、「System Z」などメインフレーム向け事業はまだ主力製品です。
他にも金融機関に多く採用された「XIV」などを代表としたストレージ製品も健在です。


ですが今回のRed Hat買収は明確なクラウド事業の強化にあるのは言うまでもありません。


Red Hat社の主要製品である「Red Hat Enterprise Linux(RHEL)」はLinux市場では最も有名であると言っても過言ではありません。
商用のLinuxディストリビューションにおいて、「RHEL」を利用するのは少なくとも日本ではスタンダードでしょう。
他にも「Suse Linux」や「Oracle Linux」もありますが、RHELの市場規模とは比較にならないでしょう。


つまりIBMUnixの主要製品とLinuxの主要製品の両方を手にした形になります。


しかもこれまで書いてきた通り、Linux市場で最も有名ともいえる「RHEL」です。
既存の環境にも非常に多く存在するでしょうし、これからも使われ続けるでしょう。
IBMAIX以外の選択肢を顧客に提供するとともに、そこから利益を得ることが出来ます。
それまではRed Hatとの協業で得てきた利益を、今度は「自社サービス」として展開出来ます。


そして特筆すべきはRed Hatオープンソースに対して協力的で非常に貢献度の高い会社でした。


有名ではありますが「CentOS」が代表例と言えるでしょう。
ベンチャー企業などはCentOSを使い商用サービスを展開するほど、無料であるのに商用利用できるのはRed Hatの協力があったからこそです。
また、昨今のように「サブスクリプション」で利益を生み出していく流れの中で「基本機能は無料で使える」の代表例がオープンソースであるとも言えます。


Oracle社がサン・マイクロシステムズを買収した後に「OpenOffice」の開発が芳しくなくなったようにOSSに対する貢献を危惧する人もいると思います。


おそらくRHELが提供する機能やライセンスに関しては変化ないと思います。
また、現在の経営陣でRHEL含めたJBossなどを運営していくようなので、対外的な変化はないでしょう。
MicrosoftOracleなど独自にサーバOSを抱えていて、同じクラウド事業を推進する企業は様子見するのでしょうがあまり気分の良いものではないかもしれません。
それほどまでにRed Hatが持つ顧客基盤と、RHELというブランドが強いのです。


IBMが提供するRHELというのにもしばらく違和感が付き纏い続けるほどの買収劇でしょう。


ただし、ここで言いたいのはIBM自体は明確な戦略を持って買収しているのでその点は「本気」であるのが良く分かります。
IBMRed Hatを買収したことを非難したいという事はありません。
パブリッククラウド市場ではやはり「AWS」、「Azure」は先行しているイメージで「IBM Cloud」や「Oracle Cloud」はまだ後ろにいる感覚は否めません。
しかし、ここでRed Hat買収というインパクトの大きい選択を取ってきたのは「本気」でクラウド事業を加速させたいからでしょう。


IBMRed Hatを買収することで顧客はPowerアーキテクチャAIX技術に縛られず「RHEL」という選択肢を持つことが出来ます。


つまり、既存RHEL環境からクラウドへ移行したり、オンプレのリプレースであっても「Power」や「AIX」に縛られず、Linuxで最も有名なRHELを選択することも出来ます。
そして、従来はRed Hat社のRHELとして提供していたサービスを「IBMRHEL」として提供できるのです。
実績も豊富なRHEL製品群であれば技術者も多く導入のしやすさも違います。


もちろんRed Hatには他にもJBossだけではなくOpenStackやAnsibleなどの技術知識も多く存在するでしょう。


このようにIT業界の中でも非常に大きなM&AとなったRed Hat買収劇ですが、今後の動向が気になります。
IBM CloudがAWSやAzureと横並びに選択肢となる日が来るのでしょうか。
私もRHEL環境の設計・構築したこともあれば、IBMの社員とストレージやAIXを導入したこともあります。
非常に思い入れのある両社が一つになるのは違和感しかありませんが、少なくとも衝撃の買収であったのは間違いありません。



と4ヶ月ぶりくらいにブログを更新してみました。

OracleDB 12c R2でプラガブル・データべース操作基礎その弐

前回はプラガブル・データベースに対する共通ロールと共通ユーザの作成とPDBを作成して接続しました。
今回は非CDB環境と同様に、OracleNet経由でPDBへ接続したいと思います。
またSQL Laoderも使いたいと思います。
トピックとしては以下にしたいと思います。

  • Oracle Client経由でPDB接続
  • SQL Loaderでデータを投入


それでは書いていきたいと思います。


まずOracle ClientをOTNからダウンロードして回答しておきます。
Databaseダウンロードの右にある「See All」のリンクからダウンロードできます。
zipを解凍して「setup.exe」を実行します。

f:id:nikaidosubaru:20180505160354p:plain

正常にインストーラが実行されるとインストール・プロセスに移行します。
「ランタイム」を選択します。

f:id:nikaidosubaru:20180505160506p:plain

特にユーザは指定せずに次へ進みます。

f:id:nikaidosubaru:20180505160625p:plain

次もデフォルトで進みます。
インストールチェックが走りますので、問題が無ければ「インストール」をクリックします。

f:id:nikaidosubaru:20180505160724p:plain

正常にインストールが開始されます。
10分程度時間を置きましょう。

f:id:nikaidosubaru:20180505160838p:plain


待っている間にtnsnames.oraを書き換えます。
今回は以下の「TESTPDB」へOracle Client経由で接続します。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 TESTPDB                        READ WRITE YES
         5 PDB2                           READ WRITE NO
SQL>

サーバへ接続してディレクトリを移動します。

[oracle@oracle12c admin]$ cd /u01/app/oracle/product/12.2.0/dbhome/network/admin
[oracle@oracle12c admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora
[oracle@oracle12c admin]$ 

tnsnames.oraの中身を書き換えます。
以下を追加します。

TESTPDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle12c)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = testpdb)
    )

リスナーを確認します。

[oracle@oracle12c admin]$ lsnrctl status

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 05-MAY-2018 16:15:08

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                05-MAY-2018 16:09:48
Uptime                    0 days 0 hr. 5 min. 19 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oracle12c)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/orcl/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclpdb" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "pdb2" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "testpdb" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@oracle12c admin]$ 

正常に「TESTPDB」が見えています。
インストール完了を待ちます。

f:id:nikaidosubaru:20180505161650p:plain


完了したので以下にtnsnames.oraファイルを配置します。

C:\app\client\[Windowsユーザ名]\product\[Oracleバージョン]\client_2\network\admin

ではルートコンテナへ接続してみます。

f:id:nikaidosubaru:20180505162428p:plain

正常に接続が出来ました。
次にPDBへ接続します。
tnspingは正常にサービスを認識しています。

f:id:nikaidosubaru:20180505163715p:plain


では接続しましょう。
と言いたいところではありますが、共通ロールにCONNECT権限があってもユーザにCREATE SESSIONの権限が無いと接続に失敗します。
そこでC##nikaidoユーザへ権限を付与します。

SQL> grant connect to C##nikaido container=all;

Grant succeeded.

SQL> 

では接続します。

f:id:nikaidosubaru:20180505211949p:plain


共通ユーザで正常にPDBへアクセス出来ました。
これでOracle Clientの動作確認は終了です。

また、SQL Loader用に表を作成します。

f:id:nikaidosubaru:20180505215121p:plain

次にロードするファイルを用意します。

[oracle@oracle12c admin]$ wc -l sample.csv
10000 sample.csv
[oracle@oracle12c admin]$ 

SQL Loaderの制御ファイルを用意します。

[oracle@oracle12c admin]$ cat ./sample.ctl
LOAD DATA

CHARACTERSET JA16SJISTILDE
INFILE       'sample.csv'
BADFILE      'sample.badi'
APPEND INTO TABLE USERS
(
  id,
  name
)
[oracle@oracle12c admin]$ 

ではSQL Loaderを使用してデータを投入します。
ちなみにOracle特有のダイレクト・パスロードを使用します。

[oracle@oracle12c admin]$ sqlldr C##nikaido/subaru@testpdb control='./sample.ctl' log='./sample.log' direct=true

SQL*Loader: Release 12.1.0.2.0 - Production on Sat May 5 22:21:24 2018

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

Path used:      Direct

Load completed - logical record count 10000.

Table USERS:
  10000 Rows successfully loaded.

Check the log file:
  ./sample.log
for more information about the load.

1万レコードの挿入に1秒もかかりませんでした。
あっぱれですね。
Oracleのダイレクト・パスロードは優秀です。
他にもバルク・ロードも良いですがSQL Loaderを使うのであればダイレクトが良いですね。


PDBを通常のデータベースと同じように操作できるようになったので今回はここまでにしたいと思います。

OracleDB 12c R2でプラガブル・データべース操作基礎その壱

事前に環境構築済みのOracle DB 12cを操作していきます。
今回は12cの機能であるコンテナ・データベースとプラガブル・データベースを操作していきます。

今回の作業内容は以下になります。

  • 共有ロールの作成
  • 共有ユーザの作成(他記事で作成しましたが再作成)
  • プラガブル・データベースの作成


それではまずリスナーとデータベースを起動しておきましょう。

[root@oracle12c ~]# su - oracle
最終ログイン: 2018/03/21 (水) 14:22:50 JST日時 pts/1
[oracle@oracle12c ~]$ 
[oracle@oracle12c ~]$ lsnrctl start LISTENER

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 07-APR-2018 20:42:19

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/12.2.0/dbhome/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /u01/app/oracle/product/12.2.0/dbhome/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle12c)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                07-APR-2018 20:42:21
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle12c)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully
[oracle@oracle12c ~]$

リスナーが正常に起動しました。
ちなみにEM Expressは後日設定します。
簡単なのでここでは使用しないので省略します。
データベースを起動します。

[oracle@oracle12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 7 20:44:33 2018

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

Connected to an idle instance.

SQL> 

後々、バックアップ・リストアについて書く予定なので、ついでにアーカイブ・ログモードへ変更します。
インスタンスはマウントモードで起動します。

SQL> startup mount
ORACLE instance started.

Total System Global Area 1258291200 bytes
Fixed Size                  2923920 bytes
Variable Size             452985456 bytes
Database Buffers          788529152 bytes
Redo Buffers               13852672 bytes
Database mounted.
SQL> 

アーカイブ・ログモードに変更します。

SQL> alter database archivelog;

Database altered.

SQL> 

変更されたので、データベースをオープンします。

SQL> alter database open;

Database altered.

SQL> 


正常に起動しました。
では早速作業をしたいと思います。

共通ロール作成

まず、共通ロールとは何かと言うと、プラガブル・データベースはそれぞでユーザやロールを作成するとローカルとして扱われるますがCDB上で作成すると、すべてのプラガブル・データベースで使用可能なロールを作成することが出来ます。
また、共通ユーザも後述しますが同じものになります。
CDBルートに接続している事を確認します。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> 

それではロールを作成します。
共通ユーザ、共通ロールは接頭辞に「C##」を付けます。

SQL> create role C##cdb_dba;

Role created.

SQL>

次に権限を付与していきます。
まずは全てのコンテナ・データベースに接続できる権限を付与します。

SQL> grant connect to C##cdb_dba container=all;

Grant succeeded.

SQL> 

共通ユーザの作成

次はユーザを作成します。
C##を付与してcreate文で作成します。

SQL> create user C##nikaido identified by subaru;

User created.

SQL> 

次に権限とロールを付与します。

SQL> grant C##cdb_dba to C##nikaido;

Grant succeeded.

SQL> 

これからデータベースやテーブルを作成するための権限を付与します。
しかし今回はSYSDBA権限でデータベースを作成していきます。
また、プラガブル・データベースへの接続権限の確認のためにコンテナ内のデータベースすべてにアクセスできる権限を付与します。

SQL> grant resource,unlimited tablespace to C##nikaido;

Grant succeeded.

SQL> 
SQL> grant set CONTAINER to C##nikaido CONTAINER=ALL;

Grant succeeded.

SQL> 

一度、sqlplusから抜けます。

SQL> quit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
[oracle@oracle12c ~]$ 

C##nikaidoユーザで接続してみます。

[oracle@oracle12c ~]$ sqlplus C##nikaido/subaru

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 7 22:31:00 2018

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> 
SQL> 
SQL> 
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> 


無事に接続が確認できました。
それではデータベースの作成に入っていきたいと思います。

プラガブル・データベースの作成

一旦、C##nikaidoユーザから切断して、SYSDBAへ権限で接続しなおして下さい。
それでは以下の形で、PDB SEEDからコピーしてプラガブルデータベースを作成します。

SQL> create pluggable database pdb2 
admin user pdb2_admin identified by nikaido
roles = (dba)
file_name_convert = ('/u01/app/oracle/oradata/orcl/pdbseed','/u01/app/oracle/oradata/orcl/pdb2')
storage unlimited
; 

Pluggable database created.

SQL> 

確認してみると、「MOUNT」モードで正常に作成できています。
他のごみデータは気にしないでくださいね。。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 TESTPDB                        MOUNTED
         5 PDB2                           MOUNTED
SQL> 

ではデータベースをオープンします。

SQL> alter pluggable database PDB2 open;

Pluggable database altered.

SQL> 

オープンしたので接続します。
接続にはAlter文を使います。

SQL> alter session set container=pdb2;

Session altered.

SQL> 

セッションが変更されました。
CDB$ROOTに戻りたい時は、container=CDB$ROOTで戻れます。

SQL> show con_name

CON_NAME
------------------------------
PDB2
SQL> 

無事に接続が出来ました。
では共通ユーザからはどうでしょうか。

確認のために共通ユーザをもう一つ作成します。
共通ロールのみ付与します。
ちなみに共通ユーザはCDBのみでしか作成できません。

SQL> create user C##test identified by test

User created.

SQL> grant C##cdb_dba to C##test;          

Grant succeeded.

SQL> 

正常に作成できました。
ではそれぞれで接続します。

  • C##testユーザの場合
[oracle@oracle12c pdbseed]$ sqlplus C##test/test

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 7 22:53:21 2018

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> 
SQL> 
SQL> alter session set container=pdb2;
ERROR:
ORA-01031: insufficient privileges


SQL> 

CDBに接続できましたが、プラガブル・データベースへの接続は失敗しています。
権限不足のエラーが発生しました。

  • C##nikaidoユーザの場合
[oracle@oracle12c pdbseed]$ sqlplus C##nikaido/subaru

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 7 22:54:52 2018

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

Last Successful login time: Sat Apr 07 2018 22:47:39 +09:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> 
SQL> 
SQL> alter session set container=pdb2;

Session altered.

SQL> 

正常にpdb2に接続が出来ました。
コンテナデータベースへの接続権限だけではなく、コンテナ・データベース全体への接続権限も必要になる事が分かりました。


次回は、tnsnames.oraの修正とOracle Clientからの接続について書いていきたいと思います。

Oracle12cR2をインストールしていく4/4【自宅検証用】

Oracle12cR2をインストールしていくの最後の記事です。

今回はソフトウェアのインストールが完了したサーバで、データベースを構成していきます。

せっかくなので、プラガブルデータベースも構成します。

 

書く事よりも作業を進めていきましょう。

それでは進めていきます。

データベース作成

まずはリスナーを構成します。
GUI上のoracleユーザで作業をしていきます。

netca


Oracle Net Configuration Assistantが起動します。
Listener Configurationを選択してNEXTで進みます。

f:id:nikaidosubaru:20180320232012j:plain



AddのままNEXTへ行きます。

f:id:nikaidosubaru:20180320232111j:plain


とりあえずデフォルトのLISTENERでNEXTへ行きます。
商用環境ではサービス名_listenerなどが多いですね。

f:id:nikaidosubaru:20180320232237j:plain


次も変えた記憶がないのでTCPで行きます。
Gold試験でも全然気にしたことがありません。。。。

f:id:nikaidosubaru:20180320232413j:plain


次はポート番号です。
セキュリティ的な要件がないので、デフォルトの1521で行きます。
これは商用環境で変更する事もあります。(11g時代に1度だけ)

f:id:nikaidosubaru:20180320232527j:plain


最後は他にリスナーを構成するのか確認です。
NOで終了したいと思います。

f:id:nikaidosubaru:20180320232552j:plain


「Listener configuration complete!」が表示されたらNEXTしてFINISHで完了です。

データベース作成

データベースを作成していきます。
ちなみに先ほどのリスナーですが、先に作らなくてもデータベース作成中に作る事も出来ます。
ですが、Oracle Masterの試験に出てくるのであえてnetcaを使いました。あえてね。

dbca


正常に起動すると以下の画面になります。
「Create Database」でNEXTします。

f:id:nikaidosubaru:20180320233024j:plain


次の画面では「Advanced Mode」を選択します。
色々いじるので。


f:id:nikaidosubaru:20180320233139j:plain


「Custom Database」を選択します。
色々いじるので。

f:id:nikaidosubaru:20180320233300j:plain


グローバルデータベース名とSIDを入力します。
今回はSIDにしている「orcl」にします。
グローバルデータベース名は、SID+ドメイン名であるのがほとんどです。

またコンテナデータベースを構成するので、チェックを入れてPDB名に「orclpdb」と入力します。

f:id:nikaidosubaru:20180320233551j:plain


次はEnterprise Managerになります。
12c以降では、Cloud Controlという一元管理型と、個別でのExpress(正確にはRACも見れる)に分かれています。
ここでは、Expressをポート番号5500で構成します。

f:id:nikaidosubaru:20180320233740j:plain


次は、OracleDBで使用するシステムアカウントの設定です。
検証環境なので、下のチェックボックスを選択して全ユーザ共通にします。

f:id:nikaidosubaru:20180320233914j:plain


次の画面では、割り当てるリスナーを選択します。
こちら事前作成済みの「LISTENER」をチェックします。
画面下部の「Create a New Listener」でも新規作成出来ます。今回はしません。あえてね。

f:id:nikaidosubaru:20180320234105j:plain


次の画面では特に変更しません。
しかし、高速リカバリ領域は不用意にディスク容量を食うので設定する事は少ないです。
また、ASMを利用する場合はFilesystemでは設定しません。

f:id:nikaidosubaru:20180320234254j:plain


次はデータベースのオプションです。
そもそも選択肢がないので次へ進みます。

f:id:nikaidosubaru:20180320234427j:plain


次の画面ですが、「Oracle Database Vault」は構成しません。
管理者権限を管理するオプション製品ですが、監査レベルの高いシステムでは有効ですが検証環境では邪魔なだけです。
また、「Lavel Security」も無効にします。

f:id:nikaidosubaru:20180320234619j:plain


次はメモリー管理の選択です。
デフォルトは「自動メモリー管理」ですが、ほとんどの現場でRDBとして構成する場合は「共有メモリー管理」にします。
理由はPGAに必要以上にメモリーを割り当てないためです。
DWHなどではキャッシュヒットが期待できないので、PGAを多く割り当てます。

f:id:nikaidosubaru:20180320234846j:plain


次はそのまま、デフォルトで次へ行きます。

f:id:nikaidosubaru:20180320234938j:plain


正常に設定が完了するとサマリー画面になります。
内容をチェックして問題なければ「Finish」でデータベースを作成します。

f:id:nikaidosubaru:20180320235042j:plain


データベースの作成中です。
しばらく時間がかかるのでタバコでも吸いましょう。




…オプション製品のインストールに時間がかかり過ぎて30分ほど経過




ESXの負荷状況を見てみます。

 3:50:26pm up  3:13, 445 worlds, 1 VMs, 2 vCPUs; CPU load average: 0.71, 0.76, 0.78
PCPU USED(%): 0.4 127 3.9 6.1 AVG:  34
PCPU UTIL(%): 0.7  85 3.0 5.4 AVG:  23
CORE UTIL(%):  85     8.2     AVG:  46

      ID      GID NAME             NWLD   %USED    %RUN    %SYS   %WAIT %VMWAIT    
   14959    14959 Oracle12cR2_Sin     9  135.60   92.58    0.17  808.94    0.11    
   19254    19254 esxtop.69572        1    1.80    1.43    0.00   98.77       -    
       1        1 system            138    0.49  307.32    0.01 13398.61       -   
   10678    10678 vpxa.67403         24    0.02    0.02    0.00 2400.00       -    
    5612     5612 hostd.66731        31    0.02    0.02    0.00 3100.00       -    
    2037     2037 net-lacp.66040      3    0.01    0.01    0.00  300.00       -    
   19166    19166 sshd.69539          1    0.01    0.01    0.00  100.00       -    
    5392     5392 rhttpproxy.6669    12    0.01    0.01    0.00 1200.00       -    
       8        8 helper            130    0.01    0.01    0.00 12999.64       -   
    2389     2389 nfsgssd.66249       1    0.01    0.01    0.00  100.00       -    
    3542     3542 ntpd.66460          2    0.00    0.00    0.00  200.00       -    
    4551     4551 vmware-usbarbit     1    0.00    0.00    0.00  100.00       -    
    4215     4215 ioFilterVPServe     2    0.00    0.00    0.00  200.00       -    
   10142    10142 dcbd.67335          1    0.00    0.00    0.00  100.00       -    
    5184     5184 sdrsInjector.66     1    0.00    0.00    0.00  100.00       -    
       9        9 drivers            12    0.00    0.00    0.00 1199.99       -    
    3950     3950 swapobjd.66513      1    0.00    0.00    0.00  100.00       -    
    5757     5757 storageRM.66753     1    0.00    0.00    0.00  100.00       -    
      10       10 ft                  4    0.00    0.00    0.00  400.00       -    
      11       11 vmotion             1    0.00    0.00    0.00  100.00       -    
     531      531 init.65771          1    0.00    0.00    0.00  100.00       -    
    1055     1055 vmsyslogd.65829     1    0.00    0.00    0.00  100.00       -    
    1063     1063 vmsyslogd.65830     3    0.00    0.00    0.00  300.00       -    
    1127     1127 sh.65840            1    0.00    0.00    0.00  100.00       -    
    1199     1199 vobd.65849         19    0.00    0.00    0.00 1900.00       -    
    1247     1247 sh.65873            1    0.00    0.00    0.00  100.00       -    
    1303     1303 vmkeventd.65880     1    0.00    0.00    0.00  100.00       -    
    1548     1548 vmkdevmgr.65947     1    0.00    0.00    0.00  100.00       -    


時折、COREUTILが90%を超えますが常時ではありません。
ただし、Oracleのプロセスは常に上位にあります。
あぁめんどくさいw


ようやく完了しました。
正常終了しております。


f:id:nikaidosubaru:20180321005050j:plain


データベースの作成が完了したので、次に行きたいと思います。

コンテナデータベースとプラガブルデータベース


それではOracle 12cの新機能であるコンテナデータベースとプラガブルデータベースを見ていきます。
せっかくのマルチテナントアーキテクチャなので、簡単に使ってみましょう。
oracleユーザへスイッチして、DBA権限でデータベースに接続します。

[root@oracle12c network-scripts]# su - oracle
[oracle@oracle12c ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Wed Mar 21 00:52:33 2018

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> 
SQL> 


sysdba権限で接続しました。
ではコンテナデータベースを見ていきましょう。

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> 


ルートCDBが見えています。
次にpdbを確認します。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
SQL> 

PDBの元になるのが「PDB$SEED」です。
プラガブルデータベースを作成する際はPDB$SEEDを利用します。

次はCDBの共通ユーザを作成します。
マルチテナント環境では、すべてのPDBにアクセス権を持つ「共通ユーザ」とPDB単位で有効化される「ローカル・ユーザ」があります。
今回は共有ユーザの作成と、新しいPDBを作成します。
共通ユーザは、ユーザ名の接頭辞として「C##」を付加します。

SQL> CREATE USER C##nikaido IDENTIFIED BY subaru
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
; 


次に権限を付与します。
共通ユーザはCDBでのみ作成できます。

SQL> GRANT CONNECT,RESOURCE TO C##nikaido ;

Grant succeeded.

SQL> 


テスト用のプラガブルデータベースを作成します。
管理者ユーザに「nikaido」を作成します。
共通ユーザとは別のユーザです。

SQL> CREATE PLUGGABLE DATABASE testpdb ADMIN USER nikaido IDENTIFIED BY subaru
FILE_NAME_CONVERT=(
'/u01/app/oracle/oradata/orcl/pdbseed/temp01.dbf','/u01/app/oracle/oradata/orcl/testpdb/temp_testpdb.dbf',
'/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf','/u01/app/oracle/oradata/orcl/testpdb/system_testpdb.dbf',
'/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf', '/u01/app/oracle/oradata/orcl/testpdb/sysaux_testpdb.dbf')

Pluggable database created.


作成したPDBを確認します。
MOUNT状態なのでオープンしていきます。

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 TESTPDB                        MOUNTED
SQL> 


オープンしようとしたら起動中のようで拒否されました。
数秒待つと、Read Writeでオープンになります。

SQL> alter pluggable database TESTPDB open ;

Warning: PDB altered with errors.
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO
         4 TESTPDB                        READ WRITE YES
SQL> 


作成したPDBに接続します。
Alter session文で接続先を変更します。

SQL> alter session set container=testpdb;

Session altered.

SQL> 


CDBに戻る時も同じです。

SQL> alter session set container=CDB$ROOT ;

Session altered.

SQL> 


今回はコンテナデータベースとプラガブルデータベースの確認までです。
共通ユーザの動きや作成などはまた次回にします。
権限付与だけしておきます。

SQL> GRANT CREATE SESSION TO C##nikaido ;

Grant succeeded.

SQL> 
SQL> GRANT SET CONTAINER TO C##nikaido container=ALL;

Grant succeeded.

ここまではVMware環境で構成しましたが、OracleVM Boxでも一緒です。
Oracle Masterの学習向けに手順を公開しております。
やはり座学よりも実機、業務で携わっていてもコンテナデータベースを使わない事が多いので、勉強するなら手を動かすことが一番ですね。

Oracle12cR2をインストールしていく3/4【自宅検証用】

今回は3/4という事で、OracleDBをインストールしていきます。
久々のインストールで、少し失敗しました。

その点についても書いていきます。

というか先に書いておきますね。
それでは書いていきます。

ホスト名に_(アンダースコア)がダメだった

本番環境でもあまり気にしていませんでしたが、_(アンダースコア)ってホスト名では禁止文字なんですね。
検証とかで適当に使っていましたが、Oracleにエラーではじかれました。
これは別にOracleだからダメという話ではありません。

使うならハイフンにしましょう。

めんどくさいので、とりあえず今回は以下に修正しました。

[root@oracle12c ~]# hostnamectl set-hostname oracle12c
[root@oracle12c ~]# shutdown -r now

Oracleインストール

それではインストール作業をしていきます。
OUIを使うので、oracleユーザでログインします。

以下の通り、xhostのアクセスを許可して、文字化けが面倒なので環境変数LANGを設定します。

[root@oracle12c ~]# xhost +
[root@oracle12c ~]# export LANG=C
[root@oracle12c ~]# /tmp/database/runInstaller


正常にOUIが起動すると以下のように表示されます。
画面内のチェックを外します。(個人でMOS使える人はいないと思いきや、実は会った事あります)

f:id:nikaidosubaru:20180320225647j:plain


警告が出ますが、そのままYESで先に行きます・

f:id:nikaidosubaru:20180320225805j:plain


インストールタイプですが、データベースはDBCAで作成するので、今回はsoftware onlyを選択します。

f:id:nikaidosubaru:20180320225820j:plain


今回はデータベースはシングル構成なので、1番上を選択します。
RACを構成する場合は、真ん中でRAC One Dodeであれば一番下です。
そのうち、RACも方も書いていきたいと思います。

f:id:nikaidosubaru:20180320225918j:plain


言語は英語と日本語を選択します。
Englishしかない場合は、Japaneseで探して追加しましょう。

f:id:nikaidosubaru:20180320230050j:plain


今回はエンタープライズエディションでインストールしています。
SEの人はSEを選択しましょう。

f:id:nikaidosubaru:20180320230141j:plain


Oracleベースとソフトウェアのインストール先の指定です。
これは本番環境でも変えた事はありません。
前はdbhome_1とか謎に_を付けられていたので修正していましたね。

f:id:nikaidosubaru:20180320230230j:plain


インベントリディレクトリも変更しません。
そのまま先に行きます。

f:id:nikaidosubaru:20180320230401j:plain


Oralceの機能で、それぞれOSグループが割り当てられます。
ここは手順通りで問題ありませんが、差分がある場合はOS設定を確認しましょう。

f:id:nikaidosubaru:20180320230430j:plain


本当なら事前チェックが走りますが、全て正常なのか最終確認画面に来てしまいました。
2/4で書いたカーネルパラメータやリソース制限にミスがあると修正を求められます。
今回はないのでそのままインストールします。

f:id:nikaidosubaru:20180320230538j:plain


正常にインストールが開始されました。
あとはrootスクリプトを待ちます。

f:id:nikaidosubaru:20180320230657j:plain


少し待つとrootスクリプトの実行を求められます。
ちなみに私の環境はSSDなのでインストールもめちゃくちゃ早いです。

f:id:nikaidosubaru:20180320230732j:plain


rootスクリプトを実行していきます。
順番はかならず守りましょう。

[root@oracle12c ~]# /u01/app/oraInventory/orainstRoot.sh 
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@oracle12c ~]# 
[root@oracle12c ~]# /u01/app/oracle/product/12.2.0/dbhome/root.sh 
Performing root user operation.

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/12.2.0/dbhome

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
[root@oracle12c ~]# 


OKを押すと正常に完了します。
クリーンインストールで安心しましたね。
Oracleの再インストール地獄ほど嫌なものもないですからね。。。

f:id:nikaidosubaru:20180320230911j:plain



今回はOracleソフトウェアのインストールまでです。
次回はリスナーの作成・データベースの作成・プラガブルデータベースの作成をしたいと思います。

Oracle12cR2をインストールしていく2/4【自宅検証用】

Oracle Linuxインストール後の設定を実施していきます。
OS側の設定ですね。

OSの基本的な設定とOracleをインストールするための設定を記載していきます。

先に書きますが、NTPだけは設定していないので、別の機会に設定したいと思います。
それでは始めていきたいと思います。

OS設定作業


まずは今回は検証なので、GUIからネットワークの設定を実施していきます。
本番環境では、/etc/sysconfig/network-scripts/配下のファイルを直接設定します。
NetworkManagerを使わないとか、そういう制約があるのですがここら辺はOSの記事で書きたいと思います。

ネットワーク設定

以下、有線で【オフ】になっているデバイスをクリックします。

f:id:nikaidosubaru:20180320221338j:plain



画面の通り、【自動接続】にチェックをいれます。
直接ファイルをいじる場合のonbootですね。

f:id:nikaidosubaru:20180320221510j:plain



IPv4の設定を実施します。
今回は以下のように設定しました。
ゲートウェイDNSは、NATしてインタ―ネットに出るためのルータを指定しています。
ESXで構成する場合、ESXのデフォルトゲートもこのルータになります。

f:id:nikaidosubaru:20180320221613j:plain



IPv6は使う理由がありません。
という事で無効化して完了です。

f:id:nikaidosubaru:20180320221749j:plain



最後にネットワークサービスをリスタートします。
(chkconfig依存症がようやく解消してきました)

f:id:nikaidosubaru:20180320221855j:plain


ターミナルソフトの設定


Oracleとは直接関係ないですが、ターミナルソフトではRLoginがお勧めです。
今回構築しているサーバを接続先に登録します。

f:id:nikaidosubaru:20180320221945j:plain



クリップボードTeratermなどと同様にコピペを効率化するために以下の設定をすればOKです。

f:id:nikaidosubaru:20180320222134j:plain

OS基礎設定

それでは接続して確認してみましょう。
ゲートウェイなど間違えていると接続できないので、上手く行かない人は確認しましょう。
ログインしてIPを確認します。

[root@localhost ~]# ip a sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:70:b9:8a brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.20/24 brd 192.168.11.255 scope global ens192
       valid_lft forever preferred_lft forever
    inet6 2404:7a80:2c60:be00:20c:29ff:fe70:b98a/64 scope global mngtmpaddr dynamic 
       valid_lft 2591941sec preferred_lft 604741sec
    inet6 fe80::20c:29ff:fe70:b98a/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 52:54:00:5e:1d:06 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:5e:1d:06 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# 


正常にIPアドレスが設定できています。
ではサクサクいきます。
ホスト名を設定します。
今回は以下で設定していきます。

 [root@localhost ~]# hostnamectl set-hostname oracle12c_single


hostsを書き換えます。
これをしないと、OracleDBのインストールでエラーになります。

[root@localhost ~]# vi /etc/hosts


以下を追加します。
(後々エラーになるので、それも書きます)

192.168.11.20 oracle12c_single oracle12c localhost


次にSELinuxを無効化します。
こいつはアプリケーションなどに影響を与えることもありますが、DMZ上に構築する際は無暗に無効にするのは危険です。
今回は検証用かつNATするので無効化でOKです。

[root@localhost ~]# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  #Disableへ変更する
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


一旦リブートします。
ホスト名やSElinuxの設定反映に再起動が必須です。

[root@localhost ~]# shutdown -r now


ちなみに、VMware toolsを入れてないと思いましたが、ESX6系ではデフォルトで入るようです。

[root@oracle12c_single ~]# ps -ef | grep toolsd
root       792     1  0 20:42 ?        00:00:00 /usr/bin/vmtoolsd
root      1713  1651  0 20:43 pts/0    00:00:00 grep --color=auto toolsd
[root@oracle12c_single ~]# 


不要なサービスを停止、自動起動から削除していきます。
Firewalldは先ほどのSELinuxと同じで、DMZ上に出すのであれば止めるのは危険です。

systemctl stop abrtd
systemctl disable abrtd
systemctl stop abrt-service
systemctl disable abrt-service
systemctl stop firewalld
systemctl disable firewalld
systemctl stop avahi-daemon.socket
systemctl disable avahi-daemon.socket
systemctl stop avahi-daemon
systemctl disable avahi-daemon

Oracleインストール用の設定

ここからはOracleインストール用に設定を修正していきます。
まずはカーネルパラメータを設定します。

[root@oracle12c_single ~]# vi /etc/sysctl.conf


以下の値を追記します。
設定理由が知りたければ、手っ取り早いのは設定をせずにOracleのインストールをすれば分かります。(投げやり)

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 1


以下のコマンドで即時反映です。

[root@oracle12c_single ~]# sysctl -p
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 1
[root@oracle12c_single ~]# 


次はOSのグループを作成します。
Oracle社のドキュメントのコピペですね。

[root@oracle12c_single ~]# groupadd -g 54321 oinstall
[root@oracle12c_single ~]# groupadd -g 54322 dba
[root@oracle12c_single ~]# groupadd -g 54323 backupdba
[root@oracle12c_single ~]# groupadd -g 54324 oper
[root@oracle12c_single ~]# groupadd -g 54325 dgdba
[root@oracle12c_single ~]# groupadd -g 54326 kmdba
[root@oracle12c_single ~]# groupadd -g 54327 asmdba
[root@oracle12c_single ~]# groupadd -g 54328 asmoper
[root@oracle12c_single ~]# groupadd -g 54329 asmadmin
[root@oracle12c_single ~]# groupadd -g 54330 racdba


次に、oracleユーザを作成します。
そしてパスワードも設定します。

useradd -u 1200 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba -d /home/oracle oracle
[root@oracle12c_single ~]# passwd oracle
ユーザー oracle のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードには一部に何らかの形でユーザー名が含まれています。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@oracle12c_single ~]# 


Oracle用のディレクトリを作成します。
漏れなく権限も変更します。

[root@oracle12c_single ~]# mkdir -p /u01/app/oracle
[root@oracle12c_single ~]# chown -R oracle:oinstall /u01


次はリソース制限を修正します。
これはOracleに限らず使う事が多い設定です。

[root@oracle12c_single ~]# vi /etc/security/limits.conf


以下を追加。

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768

必要なパッケージの導入

次は必要なパッケージ類を入れていきます。
Oracle Linuxのメディアをマウントしましょう。
また、rpmで不要なパッケージを入れないようにするのがSIerのやり方ですが、かなり非効率なのでyumでいきます。

最初に、メディアのリポジトリを作成します。

[root@dns ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]
name=dvd
baseurl='file:///run/media/root/OL-7.4 Server.x86_64/'
gpcheck=0
enabled=0
gpgkey=file:'///run/media/root/OL-7.4 Server.x86_64/RPM-GPG-KEY-oracle'


作成したdvdリポジトリを指定して、パッケージを入れていきます。
最初なのでログも含めて全文載せます。

[root@oracle12c_single Packages]# yum --disablerepo=* --enablerepo=dvd install kernel-devel  libstdc++-devel -y
読み込んだプラグイン:langpacks, ulninfo
dvd                                                                                        | 3.6 kB  00:00:00     
(1/2): dvd/group_gz                                                                        | 136 kB  00:00:00     
(2/2): dvd/primary_db                                                                      | 4.7 MB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kernel-devel.x86_64 0:3.10.0-693.el7 を インストール
---> パッケージ libstdc++-devel.x86_64 0:4.8.5-16.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================
 Package                         アーキテクチャー       バージョン                      リポジトリー         容量
==================================================================================================================
インストール中:
 kernel-devel                    x86_64                 3.10.0-693.el7                  dvd                  14 M
 libstdc++-devel                 x86_64                 4.8.5-16.el7                    dvd                 1.5 M

トランザクションの要約
==================================================================================================================
インストール  2 パッケージ

総ダウンロード容量: 16 M
インストール容量: 44 M
Downloading packages:
警告: /run/media/root/OL-7.4 Server.x86_64/Packages/kernel-devel-3.10.0-693.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID ec551f03: NOKEY
kernel-devel-3.10.0-693.el7.x86_64.rpm の公開鍵がインストールされていません
------------------------------------------------------------------------------------------------------------------
合計                                                                               48 MB/s |  16 MB  00:00:00     
file:///run/media/root/OL-7.4%20Server.x86_64/RPM-GPG-KEY-oracle から鍵を取得中です。
Importing GPG key 0xEC551F03:
 Userid     : "Oracle OSS group (Open Source Software group) <build@oss.oracle.com>"
 Fingerprint: 4214 4123 fecf c55b 9086 313d 72f9 7b74 ec55 1f03
 From       : /run/media/root/OL-7.4%20Server.x86_64/RPM-GPG-KEY-oracle
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : libstdc++-devel-4.8.5-16.el7.x86_64                                               1/2 
  インストール中          : kernel-devel-3.10.0-693.el7.x86_64                                                2/2 
  検証中                  : kernel-devel-3.10.0-693.el7.x86_64                                                1/2 
  検証中                  : libstdc++-devel-4.8.5-16.el7.x86_64                                               2/2 

インストール:
  kernel-devel.x86_64 0:3.10.0-693.el7                    libstdc++-devel.x86_64 0:4.8.5-16.el7                   

完了しました!
[root@oracle12c_single Packages]#


成功したら、他に必要なパッケージも全て入れています。
ログは長いだけの無用の長物なので省略します。

[root@oracle12c_single Packages]# yum --disablerepo=* --enablerepo=dvd install compat-libcap1 compat-libstdc++-33 
gcc-c++ ksh libaio-devel -y


最後に、OracleLinuxのPackageディレクトリへ移動して以下のファイルをインストールします。
これ、CentOSなどではファイルで持ってこないと取得できないので要注意です。

[root@oracle12c_single ]#cd /run/media/root/OL-7.4\ Server.x86_64/Packages/
[root@oracle12c_single Packages]# rpm -Uvh oracle-database-server-12cR2-preinstall-1.0-3.el7.x86_64.rpm 
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:oracle-database-server-12cR2-prei################################# [100%]
[root@oracle12c_single Packages]# 

Oracleインストール準備

ここまで来たらあとはインストール作業です。
ですが、その前に環境変数を設定しておきます。

oracleユーザへスイッチします。

[root@oracle12c_single ~]# su - oracle


ログイン時のデフォルト環境変数を変えるためにbash_profileを編集します。

[oracle@oracle12c_single ~]$ vi .bash_profile 


以下に設定します。
SIDはそれぞれの環境に合わせて変えましょう。

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

stty erase ^H

NLS_LANG=American_Japan.JA16EUCTILDE
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome
ORACLE_SID=orcl
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin

export NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

export PATH


終わったらrootに戻ってOracleのファイルを/tmpに持ってきます。
以下、RLoginのSFTP機能を使っています。

f:id:nikaidosubaru:20180320224228j:plain


正常にコピーが完了しました。

[root@oracle12c_single ~]# cd /tmp
[root@oracle12c_single tmp]# ls -ltr linuxamd64_12102_database_*
-rw-r--r-- 1 root root 1673544724 11月 20  2016 linuxamd64_12102_database_1of2.zip
-rw-r--r-- 1 root root 1014530602 11月 20  2016 linuxamd64_12102_database_2of2.zip


ファイルを解凍しますが、ログは長いので省略します。
そして解凍したディレクトリにoracleユーザへアクセス権を付与します。

[root@oracle12c_single tmp]# unzip linuxamd64_12102_database_1of2.zip
[root@oracle12c_single tmp]# unzip linuxamd64_12102_database_2of2.zip
[root@oracle12c_single tmp]# chown -R oracle:oinstall database/


今回はここまでです。
OSの設定が完了したので後はインストールのみです。

しかし、問題も発生したので、それも書いていきたいと思います。

Oracle12cR2をインストールしていく1/4【自宅検証用】

Oracle 18cのリリースが発表されているので、おさらいにOracle12cをシングルで構成します。
環境はVMware ESX 6.5評価版を構成しています。
プライベートクラウドについては構成について疑問があれば別途説明したいと思います。
また、既に構成済みのRACもあるので今度紹介していきたいと思います。

今回やっていく事は以下です。

  • Oracleインストール用の設定を実施
  • コンテナデータベースの確認


まず、OSですがOralceLinuxは無償で入手が可能です。
Oracleでプロファイルを作成すれば誰でも入手可能です。
Oracle Software Delivery Cloudからダウンロードします。


全ファイルをダウンロードすると14.5GBにもなるので、以下の画面の通り必要なISOファイルだけダウンロードします。


f:id:nikaidosubaru:20180318210809j:plain

ダウンロードが完了したら作業を開始していきます。
Oracle Databaseについてもダウンロードしておくことをお勧めします。
OTNライセンスがあるので、開発・個人学習ではEE版の機能も無償で使用する事が可能です。

OSインストール


スペックは以下の通りになります。
業務利用するには物足りないスペックですが、検証用とであればメモリは4GB、HDDは50GBで十分です。

  • vコア:2
  • メモリ:4GB
  • ストレージ:sda-50GB

ESXから一応スペックを載せておきます。
(ネットワークがInterconnect LAN(RAC用)になっていますが、VM Networkに変更しています。)

f:id:nikaidosubaru:20180318214152j:plain

では作業を開始していきます。
まずはVMRCを起動してOSメディアをマウントしてインストールしていきます。
【起動時にBIOSへ接続】に必ずチェックを入れましょう。

f:id:nikaidosubaru:20180318214759j:plain


次にBoot設定の優先順位をHard Driveを上位に設定します。
あとは、BIOS画面のうちにメディアを接続しておきましょう。
VMRCでは画面右上のディスクマークを右クリックすれば接続できます。

f:id:nikaidosubaru:20180318214835j:plain

正常にメディアにマウントされるとインストール画面になります。
【Install Oracle Linux 7.4】を選択します。

f:id:nikaidosubaru:20180318214951j:plain

言語設定は日本語で設定していきます。
【Japanese】で検索すると簡単に出てきます。

f:id:nikaidosubaru:20180318215046j:plain

各種設定画面に入ります。
まずは【ソフトウェアの選択】について設定を変更していきます。

f:id:nikaidosubaru:20180318215130j:plain

今回はOUIを使用してOracleDBをインストールしていく予定です。
なので、【GUIサーバー】を選択します。
その他のソフトについてはインストール時は特に指定をしません。

f:id:nikaidosubaru:20180318215204j:plain


次にkdumpを無効にします。
検証のためメモリをフルに活用するためです。

f:id:nikaidosubaru:20180318215351j:plain

最後にディスクのパーティション設定です。
今回はsdaのみ50GBで構成します。
特別パーティションは設定しません。
しかし、tmp領域やSwapが不足する場合は後からfdiskで調整したいと思います。

f:id:nikaidosubaru:20180318215442j:plain


パーティション構成を完了にすればインストールプロセスに進めます。
rootパスワードやユーザ作成は必要に応じて実施しましょう。

f:id:nikaidosubaru:20180318215645j:plain


インストールが完了したら、メディアをアンマウントして再起動を実施しましょう。

f:id:nikaidosubaru:20180318215714j:plain


インストール完了後

ライセンスの承諾やOSユーザの作成・タイムゾーンの指定があります。
基本的に全て適当で問題ありません。(検証だから)

f:id:nikaidosubaru:20180318215739j:plain


インストール作業はここまでで終了です。
次はOSの設定を実施していきます。