2014年9月27日土曜日

Oracle Linux で ルーティング設定。(route-ethX)

これまで、うちでは Oracle Linux(RHEL や CentOS も) の静的ルーティング設定は
/etc/sysconfig/static-routes ファイルに記載していました。

static-routes ファイルには、下記のように
192.168.5.0/24 は 192.168.0.252 へ、みたいな感じで設定できます。
[root@infra02 ~]# cat /etc/sysconfig/static-routes
any net 192.168.5.0/24 gw 192.168.0.252
any net 192.168.4.0/24 gw 192.168.0.251

Oracle Linux 6 のマニュアルを見ていたら、
/etc/sysconfig/network-scripts/route-ethX
といったファイルにもルーティング設定を記載できることに気づきました。

ためしに、OL 6.5 に設定してみました。
[root@dsvb01 ~]$ cat /etc/oracle-release
Oracle Linux Server release 6.5

まず、デフォルトゲートウェイ以外のルーティング情報が未設定の状態です。
[root@dsvb01 ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.5.252   0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.62.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.72.0    0.0.0.0         255.255.255.0   U         0 0          0 eth2

ip コマンドでも確認してみます。
[root@dsvb01 ~]# ip route show
default via 192.168.5.252 dev eth0
169.254.0.0/16 dev eth1  proto kernel  scope link  src 169.254.44.197
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.61
192.168.62.0/24 dev eth1  proto kernel  scope link  src 192.168.62.61
192.168.72.0/24 dev eth2  proto kernel  scope link  src 192.168.72.61

route-ethX ファイルを編集しました。
今回は、eth2 の経路情報を追加したかったので、route-eth2 です。
[root@dsvb01 ~]# cat /etc/sysconfig/network-scripts/route-eth2
192.168.71.0/24 via 192.168.72.253 dev eth2

eth2 を DOWN → UP させます。
[root@dsvb01 ~]# ifdown eth2
[root@dsvb01 ~]# ifup eth2
Determining if ip address 192.168.72.61 is already in use for device eth2...

ルーティング情報が追加されました。
netstat と ip コマンド両方で見てみました。
[root@dsvb01 ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.5.252   0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.62.0    0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.71.0    192.168.72.253  255.255.255.0   UG        0 0          0 eth2
192.168.72.0    0.0.0.0         255.255.255.0   U         0 0          0 eth2
[root@dsvb01 ~]# ip route show
default via 192.168.5.252 dev eth0
169.254.0.0/16 dev eth1  proto kernel  scope link  src 169.254.44.197
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.61
192.168.62.0/24 dev eth1  proto kernel  scope link  src 192.168.62.61
192.168.71.0/24 via 192.168.72.253 dev eth2
192.168.72.0/24 dev eth2  proto kernel  scope link  src 192.168.72.61

マニュアルはこちら。
Oracle Linux 管理者ガイド,リリース6
11.7 ネットワーク・ルーティングの構成
http://docs.oracle.com/cd/E39368_01/e48214/ch11s07.html

以上、OL 6 にルーティング設定をする話でした。

2014年9月25日木曜日

Oracle 12c PDB の RAC での見え方。

何となくよく聞かれるのですが、
RAC 環境でも PDB を作成できます。
その場合、RAC のそれぞれの DB インスタンスから PDB が見えるようになります。

Oracle Database 12c の PDB は、RAC 環境ではこうなります。
今回は、2ノード RAC です。
[grid@dsva01 ~]$ crsctl stat res ora.rdgdb.db -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.rdgdb.db
      1        ONLINE  ONLINE       dsva01                   Open,STABLE
      2        ONLINE  ONLINE       dsva02                   Open,STABLE
--------------------------------------------------------------------------------

コンテナ DB(CDB)は1つで、DB サーバは 2ノードで、2 DB インスタンスです。
[oracle@dsva01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on 木 9月 25 08:45:24 2014
Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options
に接続されました。
SQL> col host_name for a10
SQL> select inst_id,host_name,instance_name,status from gv$instance;
   INST_ID HOST_NAME  INSTANCE_NAME    STATUS
---------- ---------- ---------------- ------------
         1 dsva01     rdgdb1           OPEN  ★2インスタンス
         2 dsva02     rdgdb2           OPEN
SQL> select inst_id,name,cdb,dbid from gv$database order by 1;
   INST_ID NAME      CDB       DBID
---------- --------- --- ----------
         1 RDGDB     YES 3513886885  ★CDBは1つ。DBID が同じ。
         2 RDGDB     YES 3513886885

PDB は、2つ作ってあります。
シード PDB (テンプレート用 PDB)も合わせると3つあります。
SQL> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 TESTDB1                        READ WRITE NO
         4 TESTDB2                        READ WRITE NO

それぞれの RAC ノードから、PDB が見えます。
DBID が同じ PDB が、インスタンス1 と 2 それぞれから見えています。
SQL> select inst_id,name,dbid from gv$pdbs order by 2,1;
   INST_ID NAME                                 DBID
---------- ------------------------------ ----------
         1 PDB$SEED                       1284832173
         2 PDB$SEED                       1284832173
         1 TESTDB1                         660856108
         2 TESTDB1                         660856108
         1 TESTDB2                         508821250
         2 TESTDB2                         508821250
6行が選択されました。

以上、RAC 環境での PDB の見え方でした。

2014年9月7日日曜日

JPOUG> SET EVENTS 20140907 のメモ。

今日は、IIJ@飯田橋にて開催された
JPOUG のイベントに参加してきました。
休日開催はとてもありがたいです。

JPOUG> SET EVENTS 20140907
http://www.jpoug.org/2014/08/05/jpoug-set-events-20140907

JPOUG について
http://www.jpoug.org/%E8%AA%AC%E6%98%8E


聞かせていただいた話と、
個人的興味があるところを残しておこうと思います。

■知られざる Oracle Database 12c の新機能

  • Oracle の仕組み調査には、DBA_OBJECTS や実行計画を見るのが有効みたい。
  • データファイルのオンライン移動は、やっぱりすごい。
  • バックグラウンドプロセスがマルチスレッドにできる(threaded_execution)。
  • 監査方式(Unified Auditing)が追加されている、変更ではなく追加みたい。


■エンジニアなでしこ魂3 -オラクルとプラチナと私-

  • エンジニアの経験談を、その本人から聞けることはとても有益だと思います。
  • プラチナ取得したくなりました。


■Oracle Database 12c マルチテナント入門

  • VMでの統合、スキーマ統合、PDBでの統合それぞれについて
    ちゃんと説明できるようになりたいと思いました。
  • 特に、リソース配分の問題についてのメリデメ説明が難しい気がする。


■Lightning Talks

MySQLユーザから見た「ここが{ヘンだ,スゴい}よOracle Database」

  • 「OracleにはDBAの役割が組み込まれてる」みたいな感覚が新鮮でした。
WindowsでもChefしたい!

  • Windows に Chef-solo で Java などを入れる話。
  • やっぱり Cygwin 使うのか・・・
安くて速くて安心な構成を目指して

  • ASM の冗長性の選択ってやっぱり悩ましいんですね。

続・IIJもデータベースのサービスやっています

  • IIJ のデータベースサービス基盤には、Oracle VM クラスタがある。


発表内容の要点とは直接関係ないモノばかりですが・・・
以上、JPOUG イベントからのメモでした。

2014年9月3日水曜日

ASM ディスクとして使うゼロ埋めファイルを作る。

地味な話ですが、ASM 用のゼロ埋めデバイスを作成してみます。

今回も、このあたりの話です。
Oracle Grid Infrastructureインストレーション・ガイド
11gリリース2 (11.2) for Linux
3.3.1.2
Oracle ASMで使用するためのNASデバイスでのファイルの作成
http://docs.oracle.com/cd/E16338_01/install.112/b56271/storage.htm#CFACJAGB

ファイル作成先は、NFS 領域です。
[grid@dbsv01 ~]$ df -h /u02
Filesystem Size Used Avail Use% Mounted on
192.168.60.59:/nfs/dbf01 20G 9.9G 8.7G 54% /u02

ASM インスタンスでは、asm_diskstring に
ゼロ埋めデバイスのパスを指定しています。
ディレクトリではなく、ファイルのフルパスを指定しています。
「*」も使えます。
SQL> col NAME for a16
SQL> col VALUE for a20
SQL> select name,value from v$parameter
  2  where name in('instance_name','asm_diskstring');
NAME             VALUE
---------------- --------------------
instance_name    +ASM1
asm_diskstring   /u02/oradata/nadb/*

dd コマンドで、ゼロ埋めデバイスを作成します。
※サイズは小さめにしてます。この例のままだと 10MBにしかなりません。
[grid@dbsv01 ~]$ dd if=/dev/zero of=/u02/oradata/nadb/asm_disk02 bs=1024k count=10 oflag=direct
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.498258 s, 21.0 MB/s

このファイルは、grid ユーザがアクセスできるように
パーミッション設定します。
[grid@dbsv01 ~]$ chown grid:asmadmin /u02/oradata/nadb/asm_disk02
[grid@dbsv01 ~]$ chmod 660 /u02/oradata/nadb/asm_disk02
[grid@dbsv01 ~]$ ls -l /u02/oradata/nadb/asm_disk02
-rw-rw---- 1 grid asmadmin 10485760 9月 3 23:22 2014 /u02/oradata/nadb/asm_disk02

ASM インスタンスでは、
さっそく asm_diskstring のパスにある
ゼロ埋めファイルが、ASM で使えるディスクとして認識されます。
SQL> col NAME for a12
SQL> col PATH for a30
SQL> select HEADER_STATUS,PATH,NAME from v$asm_disk;

HEADER_STATU PATH                           NAME
------------ ------------------------------ ------------
CANDIDATE    /u02/oradata/nadb/asm_disk02
MEMBER       /u02/oradata/nadb/asm_disk01   DG_NADB_0000

これを、SQL や ASMCA などで、ASM ディスクグループに追加したりします。

以上、ASM むけ ゼロ埋めデバイス作成の話でした。

2014年9月1日月曜日

Oracle で NFS+ASM にデータベースファイルを格納する。

あまり話題になることはないかもしれませんが、
Oracle Database で NFS 領域にデータファイルを配置する場合も
ASM が使えたりします。
Oracle Grid Infrastructureインストレーション・ガイド
11gリリース2 (11.2) for Linux
3.3.1.2
Oracle ASMで使用するためのNASデバイスでのファイルの作成
http://docs.oracle.com/cd/E16338_01/install.112/b56271/storage.htm#CFACJAGB
NFS 領域に直接データベースのファイルを配置する場合と、
NFS かつ ASM にデータベースのファイルを配置する場合を比較すると
下記のような感じになります。
※とりあえず、データファイルだけ書きました。



NFS に直接データファイルを配置する場合、
たとえば下記のように見えます。
※例では、NFS を /u02 配下にマウントしています。
[grid@dbsv01 ~]$ df -h /u02
Filesystem                Size  Used Avail Use% Mounted on
192.168.60.59:/nfs/dbf01   20G  7.5G   12G  41% /u02



NFS で ASM を使用する場合、
dd コマンドで「ゼロ埋込みファイル」を作成して
それを ASM ディスクとして使用します。

余分なレイヤが追加されるようにも見えますが、
NFS で表領域にファイルをオンライン追加できたり
NFS サーバを複数並べてストレージ筐体レベルで冗長化できたり
するので、メリットがゼロというわけではないとは思います。



おそらく本番環境でやることはないと思いますが、
1つのデータベースで、
NFS 上の OS ファイルと ASM ファイル両方を利用することもできます。
SQL> col TABLESPACE_NAME for a15
SQL> col FILE_NAME for a32
SQL> select TABLESPACE_NAME,FILE_NAME from dba_data_files;

TABLESPACE_NAME FILE_NAME
--------------- --------------------------------
USERS           +DG_NADB/nadb/users01.dbf
UNDOTBS1        +DG_NADB/nadb/undotbs01.dbf
SYSAUX          +DG_NADB/nadb/sysaux01.dbf
SYSTEM          +DG_NADB/nadb/system01.dbf
EXAMPLE         +DG_NADB/nadb/example01.dbf
UNDOTBS2        +DG_NADB/nadb/undotbs02.dbf
TS_TEST         /u02/oradata/nadb/ts_test01.dbf


7行が選択されました。

こんなイメージです。



ちなみに当然ながら、1台のサーバ(OS)に
ASM を利用している DB と
ASM 利用していない DB を同居させることもできます。

以上、Oracle の NFS+ASM の話でした。