hatenob

プログラムって分からないことだらけ

Oracle 12c 非コンテナデータベース作成とLVMの拡張

新機能SQLの検証を始めようとしたところ、プラガブルデータベースでは使用できない機能があることが分かった。
プラガブルデータベースをぶら下げているコンテナデータベースでならできるのかなと思ったけれど、そもそもコンテナデータベースにはローカルユーザを作ることができない。
仕方がないのでもう一つ、非コンテナデータベースのインスタンスを作ることにした。

レスポンスファイルを使って作るのだけれど、ディスク容量が足りないのでボリュームを拡張する必要がある。

ディスク追加

VMWare Playerを使っているので、いったんVMを止めてディスク追加。とりあえず10GB取っておくことに。
ディスク追加したらOS起動。

ディスクの確認とパーティション作成

まずは追加したディスクデバイスの確認。
/dev/sdbで追加されたのが分かる。

# fdisk -l


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

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sda1   *           1          64      512000   83  Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2              64        2611    20458496   8e  Linux LVM

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

・・・

パーティションを作成する。
パーティションのIDは「Linux LVM(8e)」。

# fdisk /dev/sdb

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-1305, 初期値 1): 
初期値 1 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-1305, 初期値 1305): 
初期値 1305 を使います

コマンド (m でヘルプ): t
選択した領域 1
16進数コード (L コマンドでコードリスト表示): 8e
領域のシステムタイプを 1 から 8e (Linux LVM) に変更しました

物理ボリューム(Physical Volume:PV)作成

作成したパーティションをLVMの物理ボリュームとして認識させる。

# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created

ボリュームグループ(Volume Group:VG)への追加

物理ボリュームをボリュームグループに追加する。

# vgdisplay 
  --- Volume group ---
  VG Name               vg_centos6412c
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.51 GiB
  PE Size               4.00 MiB
  Total PE              4994
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       0 / 0   
  VG UUID               wyLgKb-TNxo-zDgs-ukUU-kBiG-BC1d-ht8yfu
   
# vgextend vg_centos6412c /dev/sdb1
  Volume group "vg_centos6412c" successfully extended

論理ボリューム(Logical Volume:LV)拡張

追加分だけVGに空きができたので、それを全て使用して論理ボリュームを拡張する。
まず、空いているエクステントを確認。

# vgdisplay
  --- Volume group ---
  VG Name               vg_centos6412c
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               29.50 GiB
  PE Size               4.00 MiB
  Total PE              7552
  Alloc PE / Size       4994 / 19.51 GiB
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               wyLgKb-TNxo-zDgs-ukUU-kBiG-BC1d-ht8yfu

Free PEが2558となっているので、これを全て割り当てる。
追加先のLV名を確認。

# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/vg_centos6412c/lv_root
  LV Name                lv_root
  VG Name                vg_centos6412c
  LV UUID                0GAbnB-IjTY-uebT-cSXJ-N5f1-shKD-O2dWsd
  LV Write Access        read/write
  LV Creation host, time centos64-12c, 2013-10-04 06:17:40 +0900
  LV Status              available
  # open                 1
  LV Size                15.63 GiB
  Current LE             4002
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vg_centos6412c/lv_swap
  LV Name                lv_swap
  VG Name                vg_centos6412c
  LV UUID                IC8yCS-oyAH-OQ35-YwPc-RCqi-ghPO-CclUcZ
  LV Write Access        read/write
  LV Creation host, time centos64-12c, 2013-10-04 06:17:42 +0900
  LV Status              available
  # open                 1
  LV Size                3.88 GiB
  Current LE             992
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1

lv_rootが拡張する対象なので、ここにエクステントを割り当て。

# lvextend -l +2558  /dev/vg_centos6412c/lv_root
  Extending logical volume lv_root to 25.62 GiB
  Logical volume lv_root successfully resized

ファイルシステムをリサイズ。

# resize2fs /dev/vg_centos6412c/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg_centos6412c/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/vg_centos6412c/lv_root to 6717440 (4k) blocks.
The filesystem on /dev/vg_centos6412c/lv_root is now 6717440 blocks long.

これで10GBの拡張完了。

非コンテナデータベースの作成

DBCAのレスポンスファイルを用意して作成。
コンテナDB用はdbca.rcpで作成していたので、非コンテナはdbca_noncdb.rspにしました。
SIDはそのまま、noncdbに。
それならコンテナのほうはdbca_cdb.rspにして、SIDもcdbにしておけばよかったと今になって反省。
いやまさか非コンテナとコンテナで機能差異があるなんて思っておらず、非コンテナを作るつもりがなかったものでねぇ。。

$ diff dbca.rsp dbca_noncdb.rsp
78c78
< GDBNAME = "orcl"
---
> GDBNAME = "noncdb"
205c205
< SID = "orcl"
---
> SID = "noncdb"
215c215
< CREATEASCONTAINERDATABASE = true
---
> CREATEASCONTAINERDATABASE = false
225c225
< NUMBEROFPDBS = 1
---
> NUMBEROFPDBS = 0
235c235
< PDBNAME = pdb1
---
> PDBNAME =