Linux下基於裸裝置建立10g資料庫

space6212發表於2019-07-22

最近打算研究一下裸裝置,於是在linux下測試了一下基於裸裝置建立資料庫看。以下是簡單步驟:


一、分割槽
分割槽的步驟不說了,把硬碟分為如下幾個區:
[root@suk1 ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 44 353398+ 83 Linux
/dev/sdb2 45 69 200812+ 83 Linux
/dev/sdb3 70 88 152617+ 83 Linux
/dev/sdb4 89 522 3486105 5 Extended
/dev/sdb5 89 101 104391 83 Linux
/dev/sdb6 102 114 104391 83 Linux
/dev/sdb7 115 117 24066 83 Linux
/dev/sdb8 118 120 24066 83 Linux
/dev/sdb9 121 127 56196 83 Linux
/dev/sdb10 128 134 56196 83 Linux

2、繫結裸裝置
繫結裸裝置有兩種方式
1)用命令繫結
[root@suk1 raw]# raw /dev/raw/raw1 /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
[root@suk1 raw]# raw /dev/raw/raw2 /dev/sdb2
/dev/raw/raw2: bound to major 8, minor 18
[root@suk1 raw]# raw /dev/raw/raw3 /dev/sdb3
/dev/raw/raw3: bound to major 8, minor 19
[root@suk1 raw]# raw /dev/raw/raw5 /dev/sdb5
/dev/raw/raw5: bound to major 8, minor 21
[root@suk1 raw]# raw /dev/raw/raw6 /dev/sdb6
/dev/raw/raw6: bound to major 8, minor 22
[root@suk1 raw]# raw /dev/raw/raw7 /dev/sdb7
/dev/raw/raw7: bound to major 8, minor 23
[root@suk1 raw]# raw /dev/raw/raw8 /dev/sdb8
/dev/raw/raw8: bound to major 8, minor 24
[root@suk1 raw]# raw /dev/raw/raw9 /dev/sdb9
/dev/raw/raw9: bound to major 8, minor 25
[root@suk1 raw]# raw /dev/raw/raw10 /dev/sdb10
/dev/raw/raw10: bound to major 8, minor 26

[root@suk1 raw]# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw5: bound to major 8, minor 21
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7: bound to major 8, minor 23
/dev/raw/raw8: bound to major 8, minor 24
/dev/raw/raw9: bound to major 8, minor 25
/dev/raw/raw10: bound to major 8, minor 26

注意:
/dev/sdb4是擴充套件分割槽,不要把裸裝置繫結到那個分割槽上。

這種方式繫結的裸裝置在OS重啟後會失效,為了你重啟後仍然生效,你可以修改/etc/rc.local檔案,將如下內容加入到/etc/rc.local檔案中:
raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
raw /dev/raw/raw5 /dev/sdb5
raw /dev/raw/raw6 /dev/sdb6
raw /dev/raw/raw7 /dev/sdb7
raw /dev/raw/raw8 /dev/sdb8
raw /dev/raw/raw9 /dev/sdb9
raw /dev/raw/raw10 /dev/sdb10

這種方式實際上就是在開機的時候執行/etc/rc.local檔案裡的raw命令進行繫結的。

2)用服務的方式繫結
修改/etc/sysconfig/rawdevices檔案如下,以開機時自動載入裸裝置
/dev/raw/raw1 /dev/sdb1
/dev/raw/raw2 /dev/sdb2
/dev/raw/raw3 /dev/sdb3
/dev/raw/raw5 /dev/sdb5
/dev/raw/raw6 /dev/sdb6
/dev/raw/raw7 /dev/sdb7
/dev/raw/raw8 /dev/sdb8
/dev/raw/raw9 /dev/sdb9
/dev/raw/raw10 /dev/sdb10

然後啟動服務:
[root@suk1 raw]# service rawdevices start
[root@suk1 raw]# service rawdevices start
Assigning devices:
/dev/raw/raw1 --&gt /dev/sdb1
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2 --&gt /dev/sdb2
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3 --&gt /dev/sdb3
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw5 --&gt /dev/sdb5
/dev/raw/raw5: bound to major 8, minor 21
/dev/raw/raw6 --&gt /dev/sdb6
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7 --&gt /dev/sdb7
/dev/raw/raw7: bound to major 8, minor 23
/dev/raw/raw8 --&gt /dev/sdb8
/dev/raw/raw8: bound to major 8, minor 24
/dev/raw/raw9 --&gt /dev/sdb9
/dev/raw/raw9: bound to major 8, minor 25
/dev/raw/raw10 --&gt /dev/sdb10

這種方式繫結的裸裝置在OS重啟後仍然生效。

3、修改裸裝置的屬主
修改裸裝置的屬主也有兩種方式:
1)命令修改
命令修改很簡單:
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw1
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw2
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw3
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw4
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw5
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw6
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw7
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw8
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw9
[root@suk1 raw]# chown oracle:oinstall /dev/raw/raw10

由於/dev下的檔案都是動態建立的,所以在OS重啟後,屬主仍會變成root:disk,要解決這個問題,可以把上面的命令寫入到/etc/rc.local檔案中:
chown oracle:oinstall /dev/raw/raw1
chown oracle:oinstall /dev/raw/raw2
chown oracle:oinstall /dev/raw/raw3
chown oracle:oinstall /dev/raw/raw4
chown oracle:oinstall /dev/raw/raw5
chown oracle:oinstall /dev/raw/raw6
chown oracle:oinstall /dev/raw/raw7
chown oracle:oinstall /dev/raw/raw8
chown oracle:oinstall /dev/raw/raw9
chown oracle:oinstall /dev/raw/raw10

這樣每次開機後可以重新改變屬主。

2)修改/etc/udev/permissions.d/50-udev.permissions檔案
將/etc/udev/permissions.d/50-udev.permissions的113行

raw/*:root:disk:0660
修改為
raw/*:oracle:oinstall:0660

這個的意思是修改裸裝置的預設屬主為oracle:oinstall,預設的mode是0660。
重啟OS檢驗。


4、建立符號連結
這一步可以省略,但是為了更直觀些,建議建立軟連結
[oracle@suk1 ~]$ cd $ORACLE_BASE
[oracle@suk1 oracle]$ ls
oraInventory product
[oracle@suk1 oracle]$ mkdir -p oradata/test1
[oracle@suk1 oracle]$ cd oradata/test1
[oracle@suk1 oradata]$ ln -s /dev/raw/raw1 system01.dbf
[oracle@suk1 oradata]$ ln -s /dev/raw/raw2 undotbs01.dbf
[oracle@suk1 oradata]$ ln -s /dev/raw/raw3 sysaux01.dbf
[oracle@suk1 oradata]$ ln -s /dev/raw/raw5 users01.dbf
[oracle@suk1 oradata]$ ln -s /dev/raw/raw6 temp01.dbf
[oracle@suk1 oradata]$ ln -s /dev/raw/raw7 control01.ctl
[oracle@suk1 oradata]$ ln -s /dev/raw/raw8 control02.ctl
[oracle@suk1 oradata]$ ln -s /dev/raw/raw9 redo01.ora
[oracle@suk1 oradata]$ ln -s /dev/raw/raw10 redo02.ora

5、建立資料庫
啟動dbca,選擇建立資料庫
下一步,選擇建立customer 資料庫,
下一步,輸入SID,
......
下一步,在儲存選項頁,選擇裸裝置,
......
下一步,在選擇引數頁面,選擇字符集;初始化檔案選擇init檔案,同時在這個介面點選《所有初始化引數》,在彈出的介面修改控制檔案引數為:

/opt/oracle/oradata/test1/control01.ctl, /opt/oracle/oradata/test1/control02.ctl
下一步,在這一步,只保留兩個控制檔案、兩組聯機日誌,確認表空間對應的資料檔案的名稱為剛才建立的對應的符號連結;並確定建立的資料檔案、日誌檔案比對應的裸裝置小(為了簡單起見,統一設定為小1M)
下一步,開始建立資料庫。

不出意外,一段時間後,資料庫就可以安裝完成。

縱觀整個過程,基於裸裝置建立資料庫最重要的步驟是如何規劃裸裝置,如果裸裝置設定過大,浪費空間,如果過小,安裝就會失敗。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章