RedHat Enterprise Linux 6.6安裝Oracle 11.2.0
- 前言
由於工作需要使用到oracle,所以就想裝個oracle來試下,而工作上用到的環境是這樣的:linux版本是RHEL 6.6,Oracle版本是11.2。
而沒有特別的空閒機器,我只能在自己開發機器上裝個虛擬器來試下。
虛擬機:Oracle VM VirtualBox; 版本:5.2.44
註明:由於開發機器比較舊,是32位版本的windows 7,內存也不大,最關鍵的是不能上網。所以必須下載好所有軟件,然後通過U盤複製過來。
準備軟件:
- 在Redhat的官網下載軟件,我這裡下載的為rhel-server-6.6-x86_64-dvd.iso,約3.7G大小;
- 在oracle官網下載對應版本,我這裡下載了2個文件為:linux.x64_11gR2_database_1of2.zip;linux.x64_11gR2_database_2of2.zip。
- 虛擬機安裝與設置
- 首先新建虛擬機,如下圖:
內存設置為2048M,虛擬硬盤設置為動態80G;
- 設置網絡
主要是網絡設置:設置介面卡2為橋接介面卡;
- 存放裝置設置,將下載的安裝介質裝載到光碟機中,如下圖:
- RHEL6.6的安裝
由於想靜默安裝oracle,所以不需要使用到圖形界面;安裝如下圖:
選擇第一個進行下一步;
選擇‘Skip’,跳過檢測,進入下一步;
點擊‘Next’,進入到下一步;
選擇缺省的,建議不要選擇‘中文’或其他,點擊‘Next’,進入到下一步;
點擊‘Next’,進入到下一步;
點擊‘Next’,進入到下一步;
選擇‘Yes’,刪除所有數據,
設置主機名為:twporatst;
配置網絡,將eth1的IPv4 Settings設置為如上圖,IP地址:10.130.26.199,掩碼:255.255.255.0,網關:10.130.26.238;
eth0與eth1都設置為自動連接(Connect automatically);
點擊‘Next’,進入到下一步;
設置root的密碼(注:如有提示密碼設置簡單,點擊“Use Anyway”),然後點擊‘Next’,進入到下一步;
按缺省的(Replace Existing Linux System(s)),點擊‘Next’,進入到下一步;
出現上面提示,選擇“Write changes to disk”,然後系統會分區,格式化,再進入到下一步;
靜默安裝oracle,不需要桌面,所以選擇Basic Server,然後點擊‘Next’,進入到下一步;
然後就等待安裝了,大約10多分鐘吧。
安裝完成,按‘Reboot’,重啟來完成linux的安裝。
- 安裝Oralce前的準備工作
- 首先要安裝需要的依賴包,下圖為需要安裝的依賴包,版本不可低於列出的版本;
- 由於不能上網,也不能使用yum來自動安裝,只能在光盤中找對應的包來安裝,走了很多彎路,有些包是有相互依賴關係的,所有需要按順序來安裝。
開啟終端機,切換到root;將下載的rhel-server-6.6-x86_64-dvd.iso裝載在光碟機上;然後切換到安裝包所在目錄;
在這個目錄下我們開始安裝所需依賴包;安裝時都在root權限下安裝;
安裝gcc包之前要安裝好ppl,cloog,mpfr,cpp等包,並且要按上面順序,不然會出錯的。再繼續安裝其他包。
注意:無桌面情況下安裝unitODBC包之前要安裝libtool-ltdl和libtool-ltdl-devel這2個包,不然會提示如“找不到libltdl.so”的錯誤!
記住只需要安裝x86_64對應的包就可以了。
我們檢查下是否需要的包都安裝完成了。
# | rpm -q binutils ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel make sysstat unixODBC unixODBC-devel compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel |
上面顯示都已經安裝有了!
- 配置linux内核参数
以root權限開終端,編輯/etc/system.conf文件。
[root@twporauat ~]# vim /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and
# sysctl.conf(5) for more details.
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
# Controls source route verification
net.ipv4.conf.default.rp_filter = 1
# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1
# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536
# Controls the maximum size of a message, in bytes
kernel.msgmax = 65536
# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
# Oracle config
fs.aio-max-nr = 104857
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
然後是設置生效,運行/sbin/sysctl -p
上面有錯誤,可執行如下:
- 關閉selinux,確保SELINUX=disabled;
然後執行setenforce=0,關閉selinux;
- 修改用戶的Shell限制;
- 修改limits.conf文件;
# | vi /etc/security/limits.conf |
新增(在 #End of file 之前) |
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 |
- 修改login文件;
# | vi /etc/pam.d/login |
新增 |
session required /lib/security/pam_limits.so session required pam_limits.so |
- 修改profile文件;
# | vi /etc/profile |
新增 |
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi |
- 建立目錄以及用戶組、用戶
- 建立目錄
計劃將數據庫安裝在/u01目錄下,而數據文件保存在/u02下。
# | mkdir -p /u01/app/oracle/product mkdir -p /u02 mkdir -p /u01/app/oraInventory |
- 建立用戶組、用戶;並修改上面建立用戶的權限;注意:將用戶oracle的Home目錄設置為了/u01/app/oracle/product/11.2.0
# | groupadd oinstall groupadd dba useradd -g oinstall -G dba -d /u01/app/oracle/product/11.2.0 oracle chown -R oracle:oinstall /u01/app/oracle chown -R oracle:oinstall /u02 chown -R oracle:oinstall /u01/app/oraInventory passwd oracle |
- 以oracle登入,配置環境變量
# | su - oracle vi .bash_profile | |
新增 | ||
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0 export NLS_LANG=AMERICAN_AMERICA.ZHS32GB18030 export LIBPATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH=$ORACLE_HOME/network/lib export TNS_ADMIN=$ORACLE_HOME/network/admin export ORACLE_SID=twpcrd export ADR_HOME=/u01/app/oracle/diag/rdbms/twpcrd/twpcrd |
- 將USB中介質copy到/tmp,並解壓,然後修改database所有者!
# | su - root mkdir -p /mnt/usb mount /dev/sdb /mnt/usb cd /mnt/usb cp linux.x64_11gR2_database_1of2.zip /tmp cp linux.x64_11gR2_database_2of2.zip /tmp cd /tmp unzip linux.x64_11gR2_database_1of2.zip unzip linux.x64_11gR2_database_2of2.zip chown -R oracle:oinstall database |
解壓後在/tmp目錄下有個database目錄;
- 確保 /etc/sysconfig/network中hostname要与 /etc/hosts中的一致,如不一致則編輯成一致;
- 安裝Oracle;
- 編輯響應文件;
# | su - oracle cd /tmp/database vim /tmp/database/response/db_install.rsp |
需要修改的配置有以下内容(参考大神说明 http://blog.csdn.net/jameshadoop/article/details/48086933)
oracle.install.option=INSTALL_DB_SWONLY #选择安装类型:1.只装数据库软件 2.安装数据库软件并建库 3.升级数据库 ORACLE_HOSTNAME=twporatst #指定操作系统主机名,通过hostname命令获得 UNIX_GROUP_NAME=oinstall #指定oracle inventory目录的所有者,通常会是oinstall或者dba INVENTORY_LOCATION=/u01/app/oraInventory #指定产品清单oracle inventory目录的路径 SELECTED_LANGUAGES=en,zh_CN,zh_TW #指定数据库语言,可以选择多个,用逗号隔开 ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 #设置ORALCE_HOME的路径 ORACLE_BASE=/u01/app/oracle # 设置ORALCE_BASE的路径 oracle.install.db.InstallEdition=EE #选择Oracle安装数据库软件的版本 oracle.install.db.isCustomInstall=false oracle.install.db.DBA_GROUP=dba #指定拥有OSDBA、OSOPER权限的用户组,通常会是dba组 oracle.install.db.OPER_GROUP=oinstall oracle.install.db.config.starterdb.type=GENERAL_PURPOSE #选择数据库的用途,一般用途/事物处理,数据仓库 oracle.install.db.config.starterdb.globalDBName=twporatst #指定GlobalName oracle.install.db.config.starterdb.SID=twporatst #指定SID oracle.install.db.config.starterdb.characterSet=ZHS16GBK #选择字符集。不正确的字符集会给数据显示和存储带来麻烦无数。 DECLINE_SECURITY_UPDATES=true # False表示不需要设置安全更新,注意,在11.2的静默安装中疑似有一个BUG |
- 輸入命令開始安裝:
# | su - oracle cd /tmp/database ./runInstaller -silent -ignorePrereq -responseFile /tmp/database/response/db_install.rsp |
如出現上面界面,則表示在安裝,如界面上出現有[WARNING]字樣,則表示警告提示,不用理會,程序還在繼續安裝,但如果出現了[FATAL],則安裝程序已經停止了,要排查原因,解決後再繼續執行命令來靜默安裝;
可另開一個終端,以root來登錄,查看運行日誌。
出現如上界面,則表示安裝完成了。
- 另開終端以root登入,執行提示的腳本;
# | su - sh /u01/app/oraInventory/orainstRoot.sh sh /u01/app/oracle/product/11.2.0/root.sh |
- 驗證安裝:
# | su - oracle sqlplus /nolog |
出現如上界面,則安裝完成了。
- 配置netca
- 首先編輯響應文件netca.rsp:
# | su - oracle cd /tmp/database vim /tmp/database/response/netca.rsp |
暫不修改該文件,按缺省的執行; |
- 輸入命令開始安裝:
# | su - oracle cd ~/bin ./netca -silent -responseFile /tmp/database/response/netca.rsp |
輸入命令後會出現錯誤,netca是圖形工具,則需要配置DISPLAY參數,配置好後再運行即可,運行完成後會在目錄/u01/app/oracle/product/11.2.0/network/admin下建立listener.ora和sqlnet.ora;同時查看端口1521,發現都已經啟動了。
現在我們還沒有創建數據庫實例,所以只是啟動了數據庫,而沒能打開數據庫實例;下面繼續創建數據庫實例;
- 靜默建立數據庫實例;
- 首先編輯響應文件dbca.rsp:
# | su - oracle cd /tmp/database vim /tmp/database/response/dbca.rsp |
#修改如下參數即可 GDBNAME = "TWPCRD" SID = "TWPCRD" DATAFILEDESTINATION =/u02 CHARACTERSET = "ZHS32GB18030" | |
# | su - oracle cd ~/bin ./dbca -silent -responseFile /tmp/database/response/dbca.rsp |
- 按提示輸入SYS的口令和SYSTEM的口令,然後開始安裝;
- 建庫完成後查看下實例進程以及偵聽器;
- 檢驗安裝;
出現了上面錯誤,將/u01/app/oracle/admin/TWPCRD/pfile下的文件init.ora.916202044754,複製到/u01/app/oracle/product/11.2.0/dbs目錄下,並改名為inittwpcrd.ora
# | su - oracle cd /u01/app/oracle/admin/TWPCRD/pfile cp init.ora.916202044754 /u01/app/oracle/product/11.2.0/dbs/inittwpcrd.ora |
複製後再啟動數據庫還是出現了錯誤ORA-00845,重啟電腦,釋放內存,然後在執行成功;
- 最後的配置
- 開發端口
# | su - root vi /etc/sysconfig/iptables | |
新增(注意,一定要增加到COMMIT前,開發端口22的後面!) | ||
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT | ||
# | service iptables restart |
- 修改oracle偵聽配置(如進行過netca配置,一般不需要再配置了!)
# | vi ~/network/admin/listener.ora | |
修改(# Generated by Oracle configuration tools 之后) | ||
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/networ k/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = TWPCRD) (SID_NAME = TWPCRD) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST =twporauat)(PORT = 1521)) ) ) ADR_BASE_LISTENER = /u01/app/oracle |
- 修改dbstart
# | su - oracle vi ~/bin/dbstart | |
修改(# First argument is used to bring up Oracle Net Listener 之后) | ||
ORACLE_HOME_LISTNER=$ORACLE_HOME |
然後運行./dbstart,數據庫能正常啟動;
請同時修改dbshut文件。
- 設置自啟動
# | su - root vim /u01/app/oracle/product/11.2.0/install/oratab | |
修改 | ||
TWPCRD:/u01/app/oracle/product/11.2.0:Y | ||
# | chmod 700 /etc/rc.d/rc.local vi /etc/rc.d/rc.local | |
新增 | ||
su oracle -lc "/u01/app/oracle/product/11.2.0/bin/lsnrctl start" su oracle -lc "/u01/app/oracle/product/11.2.0/bin/dbstart" |