OCP課程24:管理Ⅰ之資料庫安裝

stonebox1122發表於2016-01-05

課程目標:

  • 單例項GI的安裝
  • 資料庫軟體的安裝

1、DBA的工作

clipboard[26]

第一,評估資料庫伺服器的硬體,根據業務的需求,比如資料量,業務量等,決定伺服器的配置

第二,安裝資料庫軟體

第三,規劃資料庫及安全策略

第四,建立,遷移然後開啟資料庫

第五,備份資料庫

第六,建立使用者,配置網路連線

第七,部署應用,建立表空間,建立表,建立儲存過程,建立觸發器等

第八,恢復出問題的資料庫

第九,監控資料庫的效能


2、管理資料庫的工具

clipboard[27]

為完成上面的任務,oracle提供了一些工具

  • 安裝資料庫軟體可以使用統一安裝器(runInstaller)
  • 建立資料庫可以用資料庫配置助手(dbca)
  • 升級可以使用資料庫升級助手(dbua)
  • 配置網路可以使用網路管理器或者網路配置助手(netmgr、netca)
  • 管理Oracle可以使用企業管理器(emctl、emca)
  • 安裝GI後,管理服務可以使用服務控制工具(srvctl)
  • SQL*Plus使用命令列工具管理資料庫(sqlplus)
  • 備份恢復可以使用恢復管理器(rman)
  • 資料的匯入,匯出,遷移可以使用資料泵(impdp、expdp)
  • 使用SQL*Loader匯入資料(sqlldr)

3、安裝規劃

clipboard[28]

(1)首先要明確安裝目的,是要安裝一個單例項的資料庫還是一個RAC的資料庫,如果只是安裝單例項的資料庫,那就直接安裝資料庫就可以了,如果要部署RAC,那麼就需要先安裝GI,配置ASM。管理Ⅰ不包括RAC的內容,但是包括ASM的內容,故需要先安裝GI,然後建立一個單例項的資料庫。

(2)明確對硬體的最低要求,一般透過聯機文件或者MOS進行檢視確認,如果沒有MOS賬戶,可以檢視http://blog.itpub.net/17252115/viewspace-751427/

(3)對於安裝順序,如果是部署RAC,推薦是先安裝GI,配置ASM,再安裝資料庫。如果先安裝資料庫,再去安裝GI,就需要手工註冊你的資料庫並將檔案遷移到ASM,就很麻煩了。

(4)安裝的時候如果需要用到儲存,還需要儲存的工程師進行配合。


4、GI和資料庫安裝的系統要求

clipboard[29]

記憶體的要求:

  • 安裝帶EM的資料庫,至少需要1GB的記憶體
  • 安裝GI,至少需要1.5GB的記憶體

磁碟空間的要求:

  • 如果只是安裝資料庫,記憶體為2GB,swap為3GB,就是說記憶體為1GB到2GB,那麼swap為記憶體的1.5倍,記憶體為2GB到16GB,那麼swap等於記憶體,記憶體大於16GB,那麼swap就為16GB;如果安裝GI,記憶體為2GB到8GB,那麼swap為記憶體的2倍,如果記憶體為8GB到32GB,那麼swap為記憶體的1.5倍,如果記憶體大於32GB,那麼swap就為32GB.
  • /tmp目錄的空間至少為1GB
  • 資料庫軟體需要3.8GB空間
  • GI軟體需要4.5GB空間

5、作業系統的組和使用者

clipboard[30]

安裝之前需要建立相關的組和使用者,對於使用者,如果只是安裝Oracle,一般就建立使用者Oracle,如果要安裝GI,一般建立使用者Grid,對於組,如果只是安裝資料庫軟體,只需要建立oinstall組和dba組,如果還要安裝GI,還可以建立asmdba,asmoper,asmadmin,當然你也可以只使用dba這個組,使用這麼多組的原因就是細分許可權。

組名
作用
oinstall
oinstall 組是Oracle推薦建立的OS使用者組之一,建議在系統第一次安裝oracle軟體產品之前建立該oinstall組,理論上該oinstall組應當擁有oracle軟體產品目錄(例如$CRS_HOME和$ORACLE_HOME)和oracle Inventory資訊目錄倉庫,oracle Inventory資訊目錄記錄了系統上安裝過的oracle產品的記錄。
dba
是我們必須要建立的一種系統DBA使用者組(dba),若沒有該使用者組我們將無法安裝資料庫軟體及執行管理資料庫的任務。
oper
是一種額外的使用者組(oper),我們可以選擇要不要建立該使用者組,建立該使用者組可以滿足讓os使用者行使某些資料庫管理許可權(包括SYSOPER角色許可權)的目的。注意SYSOPER的許可權包括startup和shutdown,所以要小心為該使用者組新增成員。
asmadmin
如果使用ASM,那麼我們建立osasm(asmadmin)使用者組,該OSASM使用者組的成員將被賦予SYSASM許可權,以滿足組成員管理Oracle Clusterware和Oracle ASM的許可權需求。
asmdba
該使用者組的成員將被賦予讀寫訪問ASM檔案的許可權。GI/CRS擁有者使用者和所有oracle資料庫軟體的擁有者必須是該組的成員。同時所有dba使用者組的成員也必須是asmdba組的成員。
asmoper
asmoper和oper類似都是額外的可選擇建立的使用者組,建立該獨立的使用者組以滿足賦予使用者一套受限的ASM例項管理許可權(ASM的SYSOPER角色),該許可權包括了啟動和停止ASM例項,預設情況下OSASM(asmadmin)組成員將擁有所有SYSOPER的ASM管理許可權。


6、設定環境變數

clipboard[31]

Oracle推薦在安裝之前設定以下這4個環境變數:

  • ORACLE_BASE:Oracle目錄結構的起始點,Oracle所有的檔案都位於這個目錄下面,一般都設定為/u01/app/oracle
  • ORACLE_HOME:Oracle產品執行的目錄,如果設定了ORACLE_BASE,可以不設定,為方便維護和管理一般設定為/u01/app/oracle/product/11.2.0/dbhome_1
  • ORACLE_SID:Oracle System Identifier,用於在1臺伺服器上面標識不同的例項,預設情況下,例項名就是ORACLE_SID的值。
  • NLS_LANG:National Language Support,用於定義語言,地域及客戶端字符集,格式是NLS_LANG=language_territory.charset,Linux/Unix下NLS_LANG是一個環境變數,Windows下NLS_LANG一般是在登錄檔裡面設定,Linux/Unix下的設定方式為:export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1,Windows下在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_目錄下

DB也有自己的NLS_LANG引數,來標識資料庫的語言,地域,字符集。可以透過以下的SQL來檢視:

SELECT * FROM v$nls_parameters; 
DB的NLS_LANG和客戶端環境變數中NLS_LANG儘可能的保持一致。那麼為什麼要保持一致呢?那是因為如果字符集不匹配,有可能在DB和Client間相互轉換的過程中,出現字元轉換錯誤的情況。

7、檢查系統

clipboard[32]

執行runInstaller,會去檢查temp目錄空間,作業系統版本,補丁包,依賴包,系統和核心引數,X server許可權,DISPLAY環境變數,swap空間,ORACLE_HOME目錄等。


8、安裝方案

第一部分:安裝GI

第二部分:安裝DB


9、安裝GI

(1)建立依賴包列表檔案,並安裝依賴包

[root@localhost ~]# cat ora_software.txt

binutils*

compat-libstdc++*

compat-libcap1*

elfutils-libelf*

elfutils-libelf-devel*

elfutils-libelf-devel-static*

gcc*

gcc-c++*

glibc*

glibc-common*

glibc-devel*

glibc-headers*

kernel-headers*

libaio*

libaio*

libgcc*

libgomp*

libstdc++*

libstdc++-devel*

make*

pdksh*

sysstat*

unixODBC*

unixODBC-devel*

掛載光碟機

[root@oracletest ~]# mount /dev/cdrom /media/

mount: block device /dev/sr0 is write-protected, mounting read-only

建立本地YUM的指令碼

[root@precise ~]# cat createlocalyum.sh

#!/bin/bash

cd /etc/yum.repos.d/

mkdir bak

mv *.repo bak/

cat << EOF > local.repo

[Local]

baseurl=file:///media/Server

gpgcheck=0

enabled=1

EOF

yum clean all

yum makecache

建立本地YUM並安裝依賴包

[root@oracletest ~]# sh createlocalyum.sh

[root@localhost ~]#cat ora_software.txt | xargs yum install -y

(2)建立使用者、組及目錄指令碼,並執行指令碼

[root@localhost ~]# cat ora_user_dir.sh

#!/bin/bash

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

useradd -g oinstall -G dba grid

echo "123456" | passwd --stdin oracle

echo "123456" | passwd --stdin grid

mkdir -p /u01/app/grid

mkdir -p /u01/app/grid/product/11.2.0/gird

chown -R grid:oinstall /u01

mkdir -p /u01/app/oracle

chown oracle:oinstall /u01/app/oracle

chmod -R 775 /u01

[root@localhost ~]#sh ora_user_dir.sh

(3)建立環境變數列表檔案,並增加環境變數到配置檔案

[root@localhost ~]# cat ora_env.txt

# Oracle Settings

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

ORACLE_SID=stone; export ORACLE_SID

NLS_LANG=american_america.zhs16gbk;export NLS_LANG

PATH=$ORACLE_HOME/bin:$PATH; export PATH

[root@localhost ~]#cat ora_env.txt >> /home/oracle/.bash_profile

[root@localhost ~]# cat gi_env.txt

#Grid Settings

ORACLE_BASE=/u01/app/grid

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid

ORACLE_SID=+ASM

PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

[root@localhost ~]#cat gi_env.txt >> /home/grid/.bash_profile

切換到oracle使用者,確認環境變數已生效

[root@ localhost ~]# su - oracle

[oracle@ localhost ~]$ env | grep ORACLE

ORACLE_SID=stone

ORACLE_BASE=/u01/app/oracle

ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1

切換到grid使用者,確認環境變數已生效

[root@oracletest1 ~]# su - grid

[grid@oracletest1 ~]$ env | grep ORACLE

ORACLE_SID=+ASM

ORACLE_BASE=/u01/app/grid

ORACLE_HOME=/u01/app/grid/product/11.2.0/grid

(4)使用root使用者建立裸裝置

先分別為磁碟建立分割槽

[root@oracletest1 ~]# fdisk /dev/sdb

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0xaa0a029a.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

         switch off the mode (command 'c') and change display units to

         sectors (command 'u').

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-261, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):

Using default value 261

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255 heads, 63 sectors/track, 261 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xaa0a029a

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         261     2096451   83  Linux

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

分割槽結果

[root@oracletest1 ~]# cat /proc/partitions

major minor  #blocks  name

   8        0   41943040 sda

   8        1     204800 sda1

   8        2    4096000 sda2

   8        3   37641216 sda3

   8       16    2097152 sdb

   8       17    2096451 sdb1

   8       32    2097152 sdc

   8       33    2096451 sdc1

   8       48    2097152 sdd

   8       49    2096451 sdd1

   8       64    2097152 sde

   8       65    2096451 sde1

   8       80    2097152 sdf

   8       81    2096451 sdf1

   8       96    2097152 sdg

   8       97    2096451 sdg1

使分割槽生效

[root@oracletest1 ~]# partprobe

將分割槽對映為raw裝置:

[root@oracletest1 ~]# vim /etc/udev/rules.d/60-raw.rules

[root@oracletest1 ~]# tail -12 /etc/udev/rules.d/60-raw.rules

ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"

KERNEL=="raw1", OWNER="grid",GROUP="dba", MODE="0666"

ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"

KERNEL=="raw2", OWNER="grid",GROUP="dba", MODE="0666"

ACTION=="add", KERNEL=="sdd1", RUN+="/bin/raw /dev/raw/raw3 %N"

KERNEL=="raw3", OWNER="grid",GROUP="dba", MODE="0666"

ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw4 %N"

KERNEL=="raw4", OWNER="grid",GROUP="dba", MODE="0666"

ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw5 %N"

KERNEL=="raw5", OWNER="grid",GROUP="dba", MODE="0666"

ACTION=="add", KERNEL=="sdg1", RUN+="/bin/raw /dev/raw/raw6 %N"

KERNEL=="raw6", OWNER="grid",GROUP="dba", MODE="0666"

[root@oracletest1 ~]# ls /dev/raw/

rawctl

[root@oracletest1 ~]# start_udev

Starting udev: udevd[29597]: GOTO 'pulseaudio_check_usb' has no matching label in: '/lib/udev/rules.d/90-pulseaudio.rules'

                                                           [  OK  ]

[root@oracletest1 ~]# ls /dev/raw/

raw1  raw2  raw3  raw4  raw5  raw6  rawctl

(5)使用grid使用者解壓grid安裝檔案

[grid@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_3of7.zip

(6)使用oracle使用者解壓oracle安裝檔案

[oracle@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_1of7.zip

[oracle@oracletest1 ~]$ unzip /mnt/hgfs/data/oracle/software/11204/p13390677_112040_Linux-x86-64_2of7.zip

(7)安裝GI

[root@oracletest1 ~]# su - grid

[grid@oracletest1 ~]$ export DISPLAY=192.168.230.1:0.0

[grid@oracletest1 ~]$ cd grid/

[grid@oracletest1 grid]$ ./runInstaller

ip_image002[9]

ip_image004[7]

選擇語言,如果這兒選擇了簡體中文,軟體啟動後就可以顯示中文了。

ip_image006[7]

配置磁碟組,此處只能配置一個磁碟組,可以在安裝完成後使用asmca來增加磁碟組,Oracle建議在大部分環境下建立2個磁碟組,一個用於存放資料,一個用於快速恢復區。

ip_image008[7]

為sys和asmsnmp賬戶設定密碼,由於ASM例項不包含資料字典,所有認證方式只有作業系統認證和密碼檔案認證,sys使用者將會被加入到密碼檔案中(orapw+ASM)並授予sysdba,sysoper和sysasm許可權,asmsnmp使用者也會被加入到密碼檔案中但只授予sysdba許可權。

ip_image010[5]

ip_image012[5]

指定OSASM,OSDBA,OSOPER組,因為此處只是安裝單個例項(standalone server),通常就只使用一個所有者組dba。

ip_image014[5]

ip_image016[5]

此處“Oracle Base”為環境變數ORACLE_BASE的值,“Software Location”為ORACLE_HOME的值。

ip_image018[5]

指定Inventory目錄及所有者組,Inventory儲存Oracle軟體安裝的目錄資訊,資料庫的升級、增刪元件都需要用到Inventory。Inventory的目錄推薦為/u01/app/oraInventory/,所有者組推薦為oinstall,此處輸入和選擇的內容會寫入到/etc/oraInst.loc檔案。

clipboard[33]

此處進行條件檢查,不滿足安裝條件的專案會列出來,如果是缺少相關軟體包,就需要先去安裝軟體包,如果是引數不合適,可以點選“Fix&Chec Again”,以root身份執行一個生成的修復指令碼。暫時解決不了又不影響安裝的問題,可以勾選“Ignore All”。

ip_image002[10]

以root使用者執行指令碼:

[root@oragrid ~]# /tmp/CVU_11.2.0.4.0_grid/runfixup.sh

clipboard[34]

對前面選擇的安裝選項進行確認。還可以將前面的操作儲存為一個響應檔案,用於後續相同情況下的靜默安裝。響應檔案是一個文字檔案,可以編輯用於不同的安裝環境。最後點選“Install”進行安裝。

clipboard[35]

監控安裝過程。

clipboard[36]

“Execute Configuration Scripts”對話方塊出現,表示需要使用root使用者執行這兩個指令碼,/u01/app/oraInventory/orainstRoot.sh這個指令碼修改Invertory目錄的許可權;

/u01/app/grid/product/11.2.0/grid/root.sh這個指令碼複製可執行檔案到/usr/local/bin目錄,建立/etc/oratab檔案,為grid使用者建立OCR keys,啟動ohasd守護程式,並修改/etc/inittab檔案以便在伺服器啟動的時候啟動ohasd。

[root@oragrid ~]# /u01/app/oraInventory/orainstRoot.sh

[root@oragrid ~]# /u01/app/grid/product/11.2.0/grid/root.sh

clipboard[37]

安裝完成後,使用下面的命令可以檢視各個資源的狀態:

[grid@oracletest1 grid]$ crsctl stat res -t

(8)建立磁碟組

由於在安裝GI的時候只能建立一個磁碟組,如果需要增加磁碟組的話,在GI安裝完成後,使用asmca命令增加磁碟組。

[grid@oragrid grid]$ export DISPLAY=192.168.230.1:0.0

[grid@oragrid grid]$ asmca

ip_image002[11]

ip_image004[8]

ip_image006[8]

ip_image008[8]

增加完成後,使用下面的命令檢視資源狀態:

[grid@oracletest1 grid]$ crsctl stat res -t

沒有問題的話,建議重啟伺服器後再次執行上面的命令,確保Oracle Restart正常。


10、安裝資料庫軟體

安裝完成GI後,再安裝Oracle資料庫軟體。

[root@oracletest1 ~]# su - oracle

[oracle@oracletest ~]$ export DISPLAY=192.168.230.1:0.0

[oracle@oracletest ~]$ cd database/

[oracle@oracletest database]$ ./runInstaller

ip_image002[12]

ip_image004[9]

選擇“Install database software only”,只安裝資料庫。

ip_image006[9]

選擇“Single instance database Installation”,安裝單例項資料庫。

ip_image008[9]

選擇語言。

ip_image010[6]

選擇安裝版本,一般選擇“Enterprise Edition”。

ip_image012[6]

此處“Oracle Base”為環境變數ORACLE_BASE的值,“Software Location”為ORACLE_HOME的值。注意不能包含空格。

ip_image014[6]

指定OSDBA和OSOPER組,預設情況下,指定OSDBA為dba組,獲取sysdba許可權,指定OSOPER為oper組,獲取sysoper許可權。這裡由於單例項安裝不執行職責劃分,故都選擇dba組。因為oracle使用者是屬於dba組的,故oracle使用者就有了建立資料庫的許可權(sysdba)。

ip_image016[6]

此處進行條件檢查,不滿足安裝條件的專案會列出來,如果是缺少相關軟體包,就需要先去安裝軟體包,如果是引數不合適,可以點選“Fix&Chec Again”,以root身份執行一個生成的修復指令碼。暫時解決不了又不影響安裝的問題,可以勾選“Ignore All”。

ip_image018[6]

以root使用者執行指令碼:

[root@oragrid ~]# /tmp/CVU_11.2.0.4.0_oracle/runfixup.sh

lip_image019[4]

對前面選擇的安裝選項進行確認。還可以將前面的操作儲存為一個響應檔案,用於後續相同情況下的靜默安裝。響應檔案是一個文字檔案,可以編輯用於不同的安裝環境。最後點選“Install”進行安裝。

ip_image021[3]

ip_image023[3]

ip_image025[3]

“Execute Configuration Scripts”對話方塊出現,表示需要使用root使用者執行這個指令碼。

[root@oragrid ~]# /u01/app/oracle/product/11.2.0/dbhome_1/root.sh

ip_image027[3]

安裝完成。

ip_image029[3]


11、靜默安裝

步驟:

(1)準備響應檔案,可以透過安裝產生,也可以對模版進行修改。

(2)執行OUI在靜默模式:./runInstaller -silent -responsefile ,安裝完成後執行相應的指令碼(/u01/app/oraInventory/orainstRoot.sh和$ORACLE_HOME/root.sh)。


12、相關習題:

(1)Which task would you perform before you run Oracle Universal Installer (OUI) in silent or suppressed mode for an installation?
A.  Run the root.sh script.
B.  Create the oraInst.loc file.
C.  Create the tnsnames.ora file.
D.  Run the oraInstRoot.sh script.

答案:B

(2)You  are  installing  Oracle  Database  11g  on  your  server.  During  the  installation  Oracle Universal  Installer  (OUI)  prompts  you  to  enter  the  path  of  the  inventory  directory  and  also prompts you to specify an operating system group name.   
Which statement is true in this case? 
A.  The ORACLE_BASE parameter is not set. 
B.  The installation is being performed by the root user. 
C.  The operating system group that will be specified should have root user as its member 
D.  The installation is being performed without the "Create Starter Database" option selected. 
E.  The operating system group that will be specified must have permission to write to the inventory director
 
答案:E
 
 
(3)You  are  installing  Oracle  Database  11g  on  a  machine.  When  you  run  the  installer,  the Universal  Installer  (OUI)  shows  the  message  that  says  one  of  the  product-specific prerequisite checks has failed:  
   Checking available swap space requirements ... 
   Expected result: 1512MB 
   Actual Result: 1018MB 
   Check  complete.  The  overall  result  of  this  check  is:  Failed  <<<<  Problem:  The system does not have the required swap space. 
What happens to the installation in this situation? 
A.  It can be continued. 
B.  It resizes the swap space automatically when you proceed further. 
C.  It can be continued, but the instance cannot be started without increasing the swap space. 
D.  It shows a message saying one or more prerequisite checks have failed and the installation cannot proceed.
 
答案:A

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

相關文章