Linux下Oracle10.2.0.1升級到oracle10.2.0.4詳細操作記錄

zhanglincon發表於2009-05-14
 
提示:#後跟命令表示以root使用者操作,$後跟命令表示以oracle使用者操作。

首先到oracle網站下載安裝包和patch包。

1. 安裝前工作

1.1 刪除歷史資料庫和oracle軟體

確認例項並刪除資料庫:

$ dbca

刪除oracle軟體:
$ export ORACLE_HOME=/u01/app/oracle/product/1020/db_1
$ $ORACLE_HOME/bin/emctl stop dbconsole
$ ps -ef | grep dbconsole | grep -v grep    (檢查)
$ $ORACLE_HOME/bin/lsnrctl stop
$ ps -ef | grep tnslsnr | grep -v grep    (檢查)
$ $ORACLE_HOME/bin/isqlplusctl stop
$ ps -ef | grep isqlplus | grep -v grep    (檢查)   
$ $ORACLE_HOME/bin/searchctl stop
$ ps -ef | grep ultrasearch | grep -v grep    (檢查)
$ $ORACLE_HOME/oui/bin/runInstaller

1.2 安裝前工作-硬體檢查

# xhost +    (設定pc客戶端的ip,確保能顯示OUI介面)
# cat /proc/meminfo | grep Mem    (至少1g記憶體)
# cat /proc/meminfo | grep Swap    (參考如下)
1-2g記憶體 swap為記憶體的1.5倍
2-8g記憶體 swap大小等同記憶體
8g以上 swap為記憶體的0.75倍
# df -h /tmp    (至少400m可用空間)
# df -h /u01    (1.5-3.5g的磁碟空間,視安裝型別而異)
# grep "model name" /proc/cpuinfo    (確保安裝檔案是當前cpu型別的版本,安裝檔案是10201_database_linux32.zip)

1.3 安裝前工作-軟體檢查

# cat /etc/issue    (檢視linux版本)
# uname -r    (檢視核心版本)
# rpm -q package_name
對於RHEL5

gcc-3.2.3-2
make-3.79
binutils-2.11
openmotif-2.2.2-16
setarch-1.3-1
compat-gcc-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122

openmotif-2.2.2-16
compat-db-4.0.14.5


rpm -q  patchset_name(partial) 察看是否已經安裝  或者下面的命令
[root@db-study patch]# rpm -qa | grep  compat-libstdc++-
compat-libstdc++-296-2.96-132.7.2
compat-libstdc++-33-3.2.3-47.3

 

rpm -q gcc make binutils openmotif setarch compat-db compat-gcc \
compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel


rpm -ivh patchset_name  安裝命令


對於RHEL4,以下packages或更高版本必須安裝:
binutils-2.15.92.0.2-13.EL4
compat-db-4.1.25-9
compat-libstdc++-296-2.96-132.7.2    (未安裝)
control-center-2.8.0-12
gcc-3.4.3-22.1.EL4
gcc-c++-3.4.3-22.1.EL44
glibc-2.3.4-2.9
glibc-common-2.3.4-2.9
gnome-libs-1.4.1.2.90-44.1
libstdc++-3.4.3-22.1
libstdc++-devel-3.4.3-22.1
make-3.80-5
pdksh-5.2.14-30
sysstat-5.0.5-1
xscreensaver-4.18-5.rhel4.2
setarch-1.6-1
軟體包安裝:
# From RedHat AS4 Disk 2
cd /media/cdrom/RedHat/RPMS
rpm -Uvh setarch-1*
rpm -Uvh compat-libstdc++-33-3*
rpm -Uvh make-3*
rpm -Uvh glibc-2*
# From RedHat AS4 Disk 3
cd /media/cdrom/RedHat/RPMS
rpm -Uvh openmotif-2*
rpm -Uvh compat-db-4*
rpm -Uvh libaio-0*
rpm -Uvh gcc-3*
# From RedHat AS4 Disk 4
cd /media/cdrom/RedHat/RPMS
rpm -Uvh compat-gcc-32-3*
rpm -Uvh compat-gcc-32-c++-3*

1.4 安裝前工作-網路檢查

# cat /etc/nsswitch.conf | grep hosts    (應包含hosts: files dns)
# hostname    (OUI需要主機名解析,確保能解析)
# domainname    (確保無資訊)
# cat /etc/hosts | grep `eval hostname`    (應有ip和主機名的對應,沒有則新增)
$ export ORACLE_HOSTNAME=node1    (對於多網路卡主機,設定ORACLE_HOSTNAME變數,node1是通過hostname命令得到的主機名)

1.5 建作業系統組和使用者
# /usr/sbin/usermod -g oinstall -G dba[,oper] oracle    (如果使用者存在需要修改的話,oper組可選)
# id nobody    (確保nobody使用者存在,是無許可權使用者,oracle安裝後需要用到)
# /usr/sbin/useradd nobody    (如果不存在就新建)
 
# mkdir -p /u01/app
# groupadd -g 115 dba
# groupadd -g 116 oinstall
# useradd -u 116 -g 115 -d /u01/app/oracle -s /bin/bash -c "Oracle Software Owner" -p oracle oracle
# chown -R oracle:dba /u01
# passwd oracle
# su - oracle

1.6 配置核心引數

(oracle推薦參考,如果實際值高於推薦值則無需修改):
Parameter    Value            File
semmsl        250            /proc/sys/kernel/sem
semmns        32000            /proc/sys/kernel/sem
semopm        100            /proc/sys/kernel/sem
semmni        128            /proc/sys/kernel/sem
shmall        2097152         /proc/sys/kernel/shmall
shmmax         1/2 Memory(bytes)    /proc/sys/kernel/shmmax
shmmni         4096             /proc/sys/kernel/shmmni
file-max     65536             /proc/sys/fs/file-max
ip_local_port_range Minimum:1024     /proc/sys/net/ipv4/ip_local_port_range
        Maximum: 65000       
rmem_default     1048576         /proc/sys/net/core/rmem_default
rmem_max     1048576         /proc/sys/net/core/rmem_max
wmem_default     262144             /proc/sys/net/core/wmem_default
wmem_max     262144             /proc/sys/net/core/wmem_max
# /sbin/sysctl -a | grep sem     (顯示訊號引數)
# /sbin/sysctl -a | grep shm     (顯示共享記憶體)
# /sbin/sysctl -a | grep file-max (顯示檔案控制程式碼最大數)
# /sbin/sysctl -a | grep ip_local_port_range (顯示顯示埠號範圍)
# /sbin/sysctl -a | grep rmem_default
# /sbin/sysctl -a | grep rmem_max
# /sbin/sysctl -a | grep wmem_default
# /sbin/sysctl -a | grep wmem_max
如果要修改以上資訊:
# vi /etc/sysctl.conf    
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
# /sbin/sysctl -p    (修改以後讓引數生效)

為了提升效能增加oracle使用者的shell限制:
# vi /etc/security/limits.conf
oracle              soft    nproc   2047
oracle              hard    nproc   16384
oracle              soft    nofile 1024
oracle              hard    nofile 65536
# vi /etc/pam.d/login
session    required     /lib/security/pam_limits.so
session    required     pam_limits.so
# vi /etc/profile or /etc/csh.login    (65536為最大開啟檔案描述符的數目,16384為單使用者最大可用程式數)
if [ $USER = "oracle" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
              ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
fi
# vi /etc/selinux/config    (使安全linux標誌失效)
SELINUX=disabled

1.7 建立軟體目錄

Oracle Base目錄:/mount_point/app/oracle_sw_owner
Oracle Inventory目錄:oracle_base/oraInventory        (OUI建立)
Oracle Home目錄:oracle_base/product/10.2.0/db_1    (OUI建立)
# more /var/opt/oracle/oraInst.loc    (確認Oracle Inventory目錄是否存在)
# more /etc/oratab    (確認Oracle Home目錄是否存在)
如果Oracle Base目錄不存在則建立:
# mkdir -p /u01/app/oracle
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracle
確認資料庫和恢復檔案的儲存:
檔案系統(RAID或LV且做了stripe-and-mirror-everything即SAME)、ASM、裸裝置(不支援存放恢復目錄),推薦ASM但本例使用檔案系統。
如果使用檔案系統,資料庫檔案和恢復檔案最好存放到不同的物理磁碟上;
建立資料庫檔案目錄:
# mkdir /u01/oradata
# chown oracle:oinstall /u01/oradata
# chmod 775 /u01/oradata
建立恢復檔案目錄(快閃記憶體區):
# mkdir /orahome/flash_recovery_area
# chown oracle:oinstall /orahome/flash_recovery_area
# chmod 775 /orahome/flash_recovery_area

1.8 配置oracle使用者環境

設定oracle使用者環境變數:
$ vi .bash_profile
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"; export NLS_LANG
umask 022   
##以下這段如果在/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
$ . .bash_profile
驗證環境變數設定:
$ umask
$ env | more

2 安裝過程

2.1 安裝unzip軟體並解壓oracle壓縮檔案

# uncompress unzip_lnx.Z 或者 gzip -d unzip_lnx.Z
# mv unzip_lnx /usr/local/bin/
# chmod 751 unzip_lnx
# su - oracle
$ cd /orahome/wangnc    (進入軟體存放目錄)
$ unzip_lnx 10201_database_linux32.zip     (解壓)

2.2 開始安裝

$ cd database
$ DISPLAY=192.168.41.42:0.0; export DISPLAY    (192.168.41.42是使用如xmanager之類模擬終端的PC客戶端的ip)
$ ./runInstaller    (安裝原則是:有高階或定製選項就點選進去自己設定,這樣加深對資料設定的理解)
oracle記憶體:伺服器實體記憶體的50%
oracle程式數:500
連線模式:共享伺服器模式
其它設定:預設
按照提示用root使用者執行$ORACLE_HOME/root.sh指令碼。

2.3 安裝後記住

幾個J2EE應用配置(node1是主機名):
iSQL*Plus URL: http://node1:5560/isqlplus
iSQL*Plus DBA URL: http://node1:5560/isqlplus/dba
Enterprise Manager 10g Database Control URL: http://node1:1158/em

其中它們的埠資訊記錄在:
$ more $ORACLE_HOME/install/portlist.ini

3 安裝後工作

3.1 打patches

到metalink上找該版本的patches並安裝。
後續介紹直接升級為10.2.0.4步驟,補丁一次性打齊。

3.2 其它工作(可以忽略)

備份root.sh:
$ cd $ORACLE_HOME
$ cp root.sh root.sh.enc

編譯失效物件:
$ sqlplus "/as sysdba"
SQL> @?/rdbms/admin/utlrp.sql

生成客戶端靜態庫libclntst10.a備用:
$ $ORACLE_HOME/bin/genclntst

設定oracle啟動標誌為Y,這樣oracle自帶的dbstart和dbshut才能夠發揮作用:
$ vi /etc/oratab
orcl:/u01/app/oracle/product/10.2.0/db_1:Y
然後通過dbstart/dbshut啟停資料庫:
$ dbstart    (位於$ORACLE_HOME/bin下,日誌位於$ORACLE_HOME/startup.log)
$ dbshut    (位於$ORACLE_HOME/bin下,日誌位於$ORACLE_HOME/shutdown.log)
建議修改一下dbstart指令碼:
$ vi dbstart    (因為該指令碼預設監聽目錄不是oracle_home,所以沒法自動啟動監聽)
ORACLE_HOME_LISTNER=$ORACLE_HOME    (日誌位於$ORACLE_HOME/listener.log)

安裝Companion CD裡其它oracle產品:
$ unzip_lnx 10201_companion_linux32.zip
$ cd companion
$ ./runInstaller
注意:HTML DB沒法安裝,不知道這個伴侶盤是咋做的,安裝了Oracle Database 10g Product 10.2.0.1。
Ultra Search URL: http://node1:5620/ultrasearch
Ultra Search 管理工具 URL: http://node1:5620/ultrasearch/admin

4. 資料庫基本操作

用瀏覽器登陸企業管理器    http://IP:1158/em/    sys/oracle sysdba
登陸isqlplus    http://172.16.1.171:5560/isqlplus    system/oracle
登陸isqlplus dba:http://172.16.1.171:5560/isqlplus/dba
會提示登入框,注意這裡不是資料庫使用者,而是isqlplus應用伺服器要求的使用者和密碼。要以DBA身份登陸isqlplus,必須先配置好oc4j使用者。

oc4j可以使用兩種身份認證方式:
基於xml配置檔案(jazn-data.xml)
基於LDAP(Oracle Internet Directory)

本文只涉及第一種方式,也就是採用xml配置檔案認證的方式,該配置檔案位於$ORACLE_HOME/oc4j/j2ee/isqlplus /application-deployments/isqlplus/config。但是該配置檔案中的密碼是加密過的,所以我們不能手動修改該檔案,而是通過JAZN(Java AuthoriZatioN)來配置。JAZN是oracle提供的一個JASS(Java Authentication and Authorization Service)工具。

1).進入到目錄
$ cd $ORACLE_HOME/oc4j/j2ee/isqlplus/application-deployments/isqlplus/

2).執行以下命令(telnet視窗裡,使用者名稱admin,密碼welcome):
$ $ORACLE_HOME/jdk/bin/java -Djava.security.properties=$ORACLE_HOME/sqlplus/admin/iplus/provider -jar $ORACLE_HOME/oc4j/j2ee/home/jazn.jar -shell
RealmLoginModule username: admin
RealmLoginModule password:********
JAZN:>

3).新建使用者並授予isqlplus DBA的許可權
JAZN:> adduser "iSQL*Plus DBA" wangnc iamwangnc
JAZN:> grantrole webDba "iSQL*Plus DBA" wangnc

4).其它可選操作
列出使用者:
JAZN:> listusers
iSQL*Plus DBA/admin
iSQL*Plus DBA/wangnc
刪除使用者:
JAZN:> remuser "iSQL*Plus DBA" wangnc
修改使用者密碼:
JAZN:> setpasswd "iSQL*Plus DBA" wangnc iamwangnc newpasswd
撤銷使用者登陸isqlplus DBA的許可權
JAZN:> revokerole webDba "iSQL*Plus DBA" wangnc

5).退出JAZN命令環境
JAZN:> exit

isqlplus服務在10gR2中無需重啟,再進入網址 http://ip:port/isqlplus/dba,在彈出的對話方塊中輸入wangnc和iamwangnc,就可以進入到資料庫登陸介面了,此時可以用資料庫使用者sys或system以sysdba或sysoper身份登陸了。而且以後也不會彈出那個isqlplus應用伺服器的使用者和密碼提示框了。

其實進去後發現和isqlplus普通介面差不多,另外又有個EM可以搞定DBA工作,不知道搞個isqlplus dba有什麼用,還不如直接sqlplus登陸管理呢。

5. 安裝10gR2(10.2.0.4) Patch Set 3


5.1 更新時區定義

如果當前資料物件裡含有TIMESTAMP WITH LOCAL TIME ZONE (TSLTZ) and TIMESTAMP WITH TIME ZONE (TSTZ)這兩種資料型別和TZ_OFFSET函式,則需要打此patch、
SQL> SELECT version FROM v$timezone_file; 只要結果不等於4即需要升級。
see OracleMetalink document 553812.1 "Actions for the DSTv4 update in the Release 10.2.0.4 patchset".

5.2 停止相關程式

$ emctl stop dbconsole
$ isqlplusctl stop
$ lsnrctl stop
$ sqlplus '/as sysdba'
SQL> shutdown immediate

5.3 備份資料庫(推薦)

5.4 開始打軟體的patch


$ xhost +
$ cd /u01
$ unzip_lnx p6810189_10204_Linux-x86.zip    (解壓補丁包)
$ cd Disk1/
$ ./runInstaller
如果ORACLE_HOME和ORACLE_SID設定沒問題,預設安裝即可。期間會要求以root身份執行$ORACLE_HOME/root.sh指令碼。

5.5 執行dbua升級oracle資料庫(xmanager模擬終端裡)
$ lsnrctl start
$ dbua    (時間較長)
期間選擇備份資料庫,並可以修改flash_recovery_area的位置和大小。

5.6 其它升級後工作

如果用到了rman catalog,那麼得升級catalog:
$ rman catalog username/password@alias
RMAN> UPGRADE CATALOG;
執行changePerm.sh放寬新建目錄和檔案的許可權,使其它客戶端能訪問:
$ cd $ORACLE_HOME/install
$ ./changePerm.sh
5.7 最後驗證你的升級成果,是不是都是10.2.0.4了!
SQL> select comp_name, version, status from sys.dba_registry;

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

相關文章