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 の話でした。

2014年8月19日火曜日

LVM とファイルシステム拡張。(Oracle Linux 6.5 + ext4)

Oracle VM Server の VM で、
ファイルシステムをマウントしたまま LVM 拡張してみようと思います。

今回の OS は Oracle Linux 6.5 で、
ファイルシステムは ext4 です。
[root@dga1 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.5
[root@dga1 ~]# uname -r
3.8.13-16.2.1.el6uek.x86_64
[root@dga1 ~]# mount | grep /u01
/dev/mapper/vg01-lv_u01 on /u01 type ext4 (rw)

順に領域拡張していこうと思います。


LVM フィジカルボリュームの作成

ディスクデバイスを認識させたら、
最初に PV(フィジカルボリューム) を作成します。



今回 LVM に割り当てる、OS に認識させたディスクです。
デバイスは、既に OS に認識させてある状態です。
Oracle VM Server の仮想ディスクで、
「/dev/xvd~」というデバイス名になっています。
[root@dga1 ~]# fdisk -l /dev/xvde

ディスク /dev/xvde: 21.5 GB, 21474836480 バイト
ヘッド 255, セクタ 63, シリンダ 2610
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

ディスクを PV にします。
[root@dga1 ~]# pvcreate /dev/xvde
  Physical volume "/dev/xvde" successfully created

PV が作成されました。
作成した直後は、PV の PE(フィジカルエクステント)がまだゼロです。
[root@dga1 ~]# pvdisplay /dev/xvde
  "/dev/xvde" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/xvde
  VG Name
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               NFQeA6-BUXJ-1ZdH-jjrd-wcVx-3rcH-KrhfHA

LVM ボリュームグループを拡張

VG(ボリュームグループ) に PV を追加します。



いまのところ、VG に空き PE はありません。
[root@dga1 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               9.99 GiB
  PE Size               4.00 MiB
  Total PE              2558
  Alloc PE / Size       2558 / 9.99 GiB
  Free  PE / Size       0 / 0
  VG UUID               mqF5A0-U1Js-8I7Z-Qm6U-Hewn-UUYD-AF1gzO

VGに、PV を追加します。
[root@dga1 ~]# vgextend vg01 /dev/xvde
  Volume group "vg01" successfully extended

PV に PE が作成されました。
[root@dga1 ~]# pvdisplay /dev/xvde
  --- Physical volume ---
  PV Name               /dev/xvde
  VG Name               vg01
  PV Size               20.00 GiB / not usable 4.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              5119
  Free PE               5119
  Allocated PE          0
  PV UUID               NFQeA6-BUXJ-1ZdH-jjrd-wcVx-3rcH-KrhfHA

その分、VG の 合計 PE 、空き PE が増ました。
[root@dga2 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       2558 / 9.99 GiB
  Free  PE / Size       5119 / 20.00 GiB
  VG UUID               mqF5A0-U1Js-8I7Z-Qm6U-Hewn-UUYD-AF1gzO

LVM 論理ボリュームを拡張

VG に容量追加されたので、LV(ロジカル ボリューム)を拡張します。



拡張前の LV です。
今回は、「/dev/vg01/lv_u01」という LV を拡張します。
[root@dga1 ~]# lvdisplay /dev/vg01/lv_u01
  --- Logical volume ---
  LV Path                /dev/vg01/lv_u01
  LV Name                lv_u01
  VG Name                vg01
  LV UUID                f8s6v0-0zHS-KBXY-55Ik-78h9-LshZ-sGVgkn
  LV Write Access        read/write
  LV Creation host, time ol65-base, 2014-08-11 13:45:30 +0900
  LV Status              available
  # open                 1
  LV Size                9.99 GiB
  Current LE             2558
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

LV に、VG の PE をすべて割り当てます。
[root@dga1 ~]# lvextend --extents 7677 /dev/vg01/lv_u01
  Extending logical volume lv_u01 to 29.99 GiB
  Logical volume lv_u01 successfully resized

PV の空き PE がゼロになっています。
[root@dga1 ~]# pvdisplay /dev/xvde
  --- Physical volume ---
  PV Name               /dev/xvde
  VG Name               vg01
  PV Size               20.00 GiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5119
  Free PE               0
  Allocated PE          5119
  PV UUID               NFQeA6-BUXJ-1ZdH-jjrd-wcVx-3rcH-KrhfHA

VG の空き PE もゼロになりました。
[root@dga1 ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       7677 / 29.99 GiB
  Free  PE / Size       0 / 0
  VG UUID               mqF5A0-U1Js-8I7Z-Qm6U-Hewn-UUYD-AF1gzO

その分、LV が拡張されました。
[root@dga1 ~]# lvdisplay /dev/vg01/lv_u01  --- Logical volume ---
  LV Path                /dev/vg01/lv_u01
  LV Name                lv_u01
  VG Name                vg01
  LV UUID                f8s6v0-0zHS-KBXY-55Ik-78h9-LshZ-sGVgkn
  LV Write Access        read/write
  LV Creation host, time ol65-base, 2014-08-11 13:45:30 +0900
  LV Status              available
  # open                 1
  LV Size                29.99 GiB
  Current LE             7677
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

ext4 ファイルシステムの拡張

拡張した LV に合わせて、ファイルシステムを拡張します。



LV 「/dev/mapper/vg01-lv_u01」に作成してあるファイルシステムは
「/u01」ディレクトリにマウントしたままです。
[root@dga1 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol65base-lv_root  8.3G  3.0G  4.9G  38% /
tmpfs                            1.5G  383M  1.1G  26% /dev/shm
/dev/xvda1                       477M   55M  397M  13% /boot
/dev/mapper/vg01-lv_u01          9.8G  8.8G  484M  95% /u01

ファイルシステムを拡張します。
[root@dga1 ~]# resize2fs /dev/mapper/vg01-lv_u01
resize2fs 1.43-WIP (20-Jun-2013)
Filesystem at /dev/mapper/vg01-lv_u01 is mounted on /u01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg01-lv_u01 is now 7861248 blocks long.

ファイルシステムが拡張されました。
[root@dga1 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg_ol65base-lv_root  8.3G  3.0G  4.9G  38% /
tmpfs                            1.5G  383M  1.1G  26% /dev/shm
/dev/xvda1                       477M   55M  397M  13% /boot
/dev/mapper/vg01-lv_u01           30G  8.8G   20G  32% /u01

検証していて、「やっぱり足りなかった」になりやすそうな
/u01 を拡張してみました。

以上、LVM の領域拡張でした。

2014年7月26日土曜日

Oracle VM Server の記憶域リポジトリを NFS エクスポートしてみる。

Oracle VM Manager(OVMM)では、
記憶域リポジトリのエクスポートができます。

Oracle VM Server がマウントしているリポジトリを
他のサーバからもマウントできるようにすることで、
リポジトリのバックアップをしやすくなったりします。

今回は、OVS リポジトリをエクスポートして
Linux から NFS マウントしてみます。

※ちなみに、今回試したのは Oracle VM Manager 3.2.6 です。