這一章會逐步的講解ORACLE 11g R2的安裝,以及在安裝過程中碰到的一些問題。我的安裝環境如下:
OS: Cent OS 6.2;
Oracle 11g R2;
VMWare 7;
1. create oracle user
安裝oracle不能在root使用者下,需要create一個user作為dba並且安裝oracle
首先create oracle需要的一些usergroup:
Oracle Inventory group
root> /usr/sbin/groupadd oinstall
Database Administrators Group
root> /usr/sbin/groupadd dba
Database Operation Group
root> /usr/sbin/groupadd oper
然後create user,並且修改user的密碼。
root> /usr/sbin/useradd –g oinstall –G dba,oper oracle
root> passwd oracle
create完user後可以使用id命令查看剛剛create的user
root> id oracle
2. 安裝oracle
這一步需要先轉到oracle使用者:
root> su – oracle
1)首先解壓安裝檔案。
如果VMWare沒有安裝VMTools的話是不能直接把安裝檔案分享權限設定到VM中,你可以先安裝好VMTools再進行copy。
但是,如果你跟我一樣安裝VMTools失敗了的話,可以使用另一種辦法,那就是把安裝檔案製作成ISO檔案,再載入到VM的光碟機中。
cd到光碟機位置:
oracle> cd /media
將安裝檔案copy到home目錄下:
oracle> cp ./linux_11g_database_1of2.zip ~/
oracle> cp ./linux_11g_database_2of2.zip ~/
解壓:
oracle> unzip linux_11g_database_1of2.zip
oracle> unzip linux_11g_database_2of2.zip
unzip會將安裝檔案解壓到目前的目錄的database檔案夾下。
然後cd到解壓後的database目錄下,執行runInstaller。
oracle> cd ./database
oracle> ./runInstaller
執行runInsstaller後如無意外,圖形介面就是出來,然後一跟Next就可以完成oracle的安裝了。
3. 設定環境變數
oracle安裝完成後,執行任何command都會提示command not found。
這是因為oracle的環境變數沒有設定,linux從已經有的PATH路徑下找不到oracle的command。以下命令來設定oracle需要的一些環境變數。
root> vi /etc/profile
添加如下內容:
export ORACLE_BASE=/myoracle/app
export ORACLE_HOME=/myoracle/app/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
添加完以上內容以後,查看PATH環境變數(echo $PATH)可以看到,$ORACLE_HOME/bin目錄已經在了linux的PATH變數中,執行oracle的command時linux也會搜尋這個目錄去尋找command的執行檔案了。
安裝問題:
在安裝的前一部分會有一個系統檢查可能會出現以下問題:
>>>Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed<<<<
解決辦法:
在root下執行以下命令即可以解決:xhost +
“/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory”
這是由於在64-bit的OS運行32-bit的程式裡可能會出現的問題。使用yum安裝32-bit的glibc。
oracle> sudo yum install glibc.i686
VM硬碟空間不夠;
有一些VM預設硬碟空間可能不能滿足oracle 11g R2的要求,那就需要我們手動添加一個hard disk。
首先,在VM settings裡面添加一個空間足夠的Hard Disk。
啟動VM。
首先要找到新添加的硬碟,然後再格式化,最後Mount上。
root> fdisk –l 查看linux目前所有的硬碟,找到沒有分區的那個硬碟,我的VM中沒有分區的硬碟為/dev/hdb
首先對新硬碟進行格式化:
root> fdisk /dev/hdb
此處輸入n表示new一個分區
此處需要選擇分區的類型,是主要磁碟分割還是輔助分區,我選擇的是p(主要磁碟分割)。
選擇了主要磁碟分割以後會讓你再選擇分區編號,也就是跟在硬碟名稱後面的數字(比如選擇1,則分區名為/dev/hdb1)
接下來的步驟直接斷行符號使用預設值就OK了。
完成分區以後再執行命令 [root> fdisk –l]可以看到硬碟/dev/hdb已經進行了分區:
分區完成後,需要對分區再進行格式化,只有格式化了的分區才能進行掛載,linux才可以使用它。格式化硬碟分區命令如下:
root> mkfs –t ext3 /dev/hdb1
以上工作全都完成以後就可以對新硬碟進行掛載。
首先建立一個路徑用於掛載新硬碟:
root> mkdir /hdb1
root> mount /dev/hdb1 /hdb1
由於我們會將oracle安裝在這個新硬碟上,所以必需合oracle使用者有這個掛載的許可權,
root> chown oracle /hdb1
重啟以後需要重新掛載,如果想重啟後仍然使掛載有效,則需要添加一條記錄到/etc/fstab.
root> vi /etc/fstab
在最後添加如下記錄:
/dev/sdb1 /www ext3 defaults 1 2
(格式說明:/dev/sdb1 代表哪個分區 ext3是該分區的格式 defaults 是掛載時所要設定的參數(唯讀,讀寫,啟用quota等),輸入defaults包括的參數有(rw、dev、exec、auto、nouser、async) ,1是使用dump是否要記錄,0是不要。 2是開機時檢查的順序,是boot系統檔案就為1,其他檔案系統都為2,如不要檢查就為0)
至此,我們就會有足夠的空間來安裝oracle了,只要我們在安裝oracle的過程中選擇安裝在/hdb1目錄下。
環境變數都設定好了,但是執行sqlplus時還是提示找不到命令(command not found).
oracle> sqlplus /nolog
bash: sqlplus: command not found
執行如下命令則可以解決:
root> ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
[root@dg1 ~]# su - oracle
[oracle@dg1 ~]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
Oracle can not be started, ORA-00845
Oracle 11g的Linux版本在修改了MEMORY_TARGET或者SGA_TARGET後啟動可能會報錯:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system
這個問題是由於設定SGA的大小超過了作業系統/dev/shm的大小:
[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 4089416 0 4089416 0% /dev/shm
Oracle在metalink的文檔:Doc ID: Note:460506.1中進行了說明。解決這個問題只有兩個方法,一種是修改初始化參數,使得初始化參數中SGA的設定小於/dev/shm的大小,另一種方法就是調整/dev/shm的大小。
修改/dev/shm的大小可以通過修改/etc/fstab來實現:
[root@enterprice64 ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=10240M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
~
~
"/etc/fstab" 13L, 965C written
[root@enterprice64 ~]# umount /dev/shm
[root@enterprice64 ~]# mount /dev/shm
[root@enterprice64 ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 10485760 0 10485760 0% /dev/shm
[root@enterprice64 ~]# su - oracle
[oracle@enterprice64 ~]$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on Tue Oct 23 15:42:42 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 4743446528 bytes
Fixed Size 2143824 bytes
Variable Size 3892316592 bytes
Database Buffers 805306368 bytes
Redo Buffers 43679744 bytes
Database mounted.
Database opened.
修改/etc/fstab,重新mount /dev/shm,然後就可以啟動資料庫了。