<b>Linux</b><b>下oracle10g安裝配置說明</b>
注意:可以從 OTN 下載下傳 Oracle 資料庫 10g。Oracle 提供了一個免費的開發和測試許可。
但不提供支援,且該許可不允許用于生産目的。
<b></b><b>一.資源需要:</b>
至少1024 MB實體記憶體
1024-2048 需1.5倍的互動空間
2048-8192 需1倍的互動空間
8192- 需0.75倍的互動空間
至少400 MB /tmp 臨時目錄空間
oracle軟體需要1.5 GB 到 3.5 GB 磁盤空間
預設資料庫需要1.2 GB
<b>二.虛拟機分區情況:</b>

<b>三.檢視系統資源相關語句:</b>
uname指令介紹
1.名稱:uname
2.适用對象:所有使用者
3.指令格式:uname [選項]...
4.作用:列印出系統資訊
5.參數詳解:
-a, --all #列印出所有資訊,如果-p,-i的結果為unknown,将不顯示-p,-i的結果
-s, --kernel-name #列印出核心名稱
-n, --nodename #列印出網絡上主機名稱
-r, --kernel-release #列印出作業系統發行号
-v, --kernel-version #列印出作業系統的版本
-m, --machine #列印出電腦硬體類型
-p, --processor #列印出處理器類型
-i, --hardware-platform #這個不懂什麼意思 高手解釋下
-o, --operating-system #列印出運作的系統
<b>四.檢視系統配置:</b>
cat /etc/issue
uname -r
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
grep "model name" /proc/cpuinfo
free
df -k /tmp
df –k
<b></b><b>五.安裝前的檢查和準備工作:(下面是我在RHEL4.0上面安裝oracle時需要按章的軟體包,一定按順序安裝)</b>
Glibc-kernheaders-2.4-9.1.87.i386.rpm
Glibc-headers-2.3.4-2.i386.rpm
Glibc-devel-2.3.4-2.i386.rpm
Compat-gcc-32-3.2.3-47.3.i386.rpm
Compat-libstdc++-33-3.2.3-47.3.i386.rpm
compat-gcc-32-c++-3.2.3-47.3.i386.rpm
compat-libgcc-296-2.96-132.7.2.i386.rpm
compat-libstdc++-296-2.96.132.7.2.i386.rpm
gcc-3.4.3-9.EL4.i386.rpm
libstdc++-devel-3.4.3-9.EL4.i386.rpm
gcc-c++-3.4.3-9.EL4.i386.rpm
libaio-0.3.102-1.i386.rpm
libaio-devel-0.3.102-1.i386.rpm
openmotif21-2.1.30-11.RHEL4.2.i386.rpm
zlib-devel-1.2.1.2-1.i386.rpm
freetype-devel-2.1.9-1.i386.rpm
fontconfig-devel-2.2.3-7.i386.rpm
pkgconfig-0.15.0-3.i386.rpm
xorg-x11-devel-6.8.1-23.EL.i386.rpm
xorg-x11-deprecated-libs-devel-6.8.1-23.EL.i386.rpm
compat-libcwait-2.0-2.i386.rpm(更新檔包)
compat-oracle-rhel4-1.0-5.i386.rpm(更新檔包)
<b>1.</b><b>建立資料庫安裝的準備工作: </b>
⑴ 建立user/group;
groupadd dba
groupadd oinstall
useradd oracle -g oinstall -G dba
passwd oracle
如果nobody使用者不存在(id nobody指令檢視),則建立:
useradd nobody
⑵ 建立oracle安裝檔案夾(sample);
mkdir -p /opt/oracle/product/10g
mkdir /opt/oracle/database
chown -R oracle.oinstall /opt/oracle
chmod 755 -R /opt/oracle
<b>2. </b><b>配置環境變量;</b>
要使用 Oracle 産品,應該或必須設定幾個環境變量。
如果您在同一伺服器上安裝了多個 Oracle 産品或資料庫,則 ORACLE_HOME、ORACLE_SID 和 PATH 變量可能會更改。
ORACLE_BASE 變量不應更改,并可以在需要時在您的登入配置檔案中設定它。Oracle 提供了一個稱作 oraenv 的實用程式來設定其他變量。
對于資料庫伺服器,建議設定以下環境變量:
使用Oracle使用者登陸:
su oracle
vi ~/.bash_profile
以下是配置檔案的内容
export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/10g
export ORACLE_SID=ge01
export PATH=$ORACLE_HOME/bin:$PATH
# 安裝好後再取消屏蔽這些環境變量設定
# export TNS_ADMIN=$ORACLE_HOME/network/admin
#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#export LANG=AMERICAN_AMERICA.ZHS16GBK
配置好後用 source .bash_profile 指令使配置生效
<b>3.</b><b>置系統參數;</b>
Oracle 資料庫 10g 需要以下所示的核心參數設定。
其中給出的是最小值,是以如果您的系統使用的值較大,則不要更改它。
切換到root使用者:
su root
a) 修改/etc/sysctl.conf(vi /etc/sysctl.conf), 添加:
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144
修改後運作"/sbin/sysctl -p"指令使得核心改變立即生效;
B) 設定oracle對檔案的要求:
編輯檔案: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
<b></b><b>六.解壓縮Oracle10G的安裝檔案 :</b>
<b>1</b><b>. Oracle 使用者登入</b>
(1) 簡化過程(以oracle登入,釋放安裝檔案,使用更少的磁盤空間,速度更快)
在/tmp下解壓縮10201_database_linux32.zip:
unzip 10201_database_linux32
<b>2.</b><b>開始安裝oracle </b>
以oracle使用者登入系統,進行Oracle的安裝:
cd /tmp/database (或者你解壓縮安裝程式包的目錄)
./runInstaller
過一會兒就會出現Oracle的安裝界面
注意:一定在linux圖形界面下安裝oracle,否則會報錯!
1、選擇advance install
2、資料庫home設定為/opt/oracle/product/10g
3、資料庫全局名稱設定為ge01
4、資料庫字元集選Simplified Chinese ZHS16GBK
5、其他用預設設定!
注意:安裝過程中會提示以root使用者登陸執行一些腳本 ,執行後再按“ok”按鈕繼續安裝。
<b>3</b><b>、登陸并啟動資料庫的操作。</b>
[oracle@oracle oracle]$ lsnrctl start
[oracle@oracle oracle]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL&gt; connect / as sysdba
Connected.
SQL&gt; shutdown immediate 關閉資料庫 (OR "dbshut" command)
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL&gt; startup; 啟動資料庫
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
<b>4</b><b>。dbstart腳本修改</b>
資料庫建立完成後,修改vi /etc/oratab,把orcl:/opt/oracle/oracle/product/10g:N那一行最後的N改成Y,
然後執行dbstart啟動資料庫資料庫可能無法啟動,報告Can’t find init file …的錯誤,需要複制一個初始化檔案:
cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/product/10.2.0/dbs/initge01.ora
重新執行dbstart就可以了。
修改vi /opt/oracle/product/10g/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/oracle/product/10g/
vi /etc/rc.local 加入下面一行 起動ORACLE ON system boot
/opt/oracel/product/10g/bin/dbstart
<b>5. </b><b>編寫啟動腳本(OPTION)</b>
為了友善管理,可以寫一個啟動腳本ora10g:
以root身份進入,編寫以下腳本:
#!/bin/bash
#
# chkconfig: 2345 91 19
# description: starts the oracle listener and instance
status() {
pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print $8}'`
if [ "X$pid" = "X" ]
then
echo "oracle10g is not running."
exit 1
else
echo "oracle10g is running."
exit 0
fi
}
case "$1" in
start)
#startup the listener and instance
echo -n "oracle begin to startup: "
su - oracle -c "lsnrctl start"
su - oracle -c dbstart
echo "oracle10g started"
;;
stop)
# stop listener, apache and database
echo -n "oracle begin to shutdown:"
su - oracle -c "lsnrctl stop"
su - oracle -c dbshut
echo "oracle10g shutdowned"
reload|restart)
$0 stop
$0 start
'status')
status
*)
echo "Usage: ora10g [start|stop|reload|restart]"
esac
exit 0
存為ora10g後,然後
chmod a+x ora10g
ln -s /opt/oracle/product/10.2.0/bin/ora10g /etc/rc.d/init.d/
即可在以後以root身份運作/etc/rc.d/init.d/ora10g start |stop 來管oracle的啟動和停止了。
如果要将這個腳本加入到系統中使其可開機運作,那麼要運作以下指令:
chkconfig --level 345 ora10g on
或者可在/etc/rc.d/rc.local中加入如下:
su - oracle -c "lsnrctl start"
su - oracle -c "dbstart"
<b>6</b><b>。關于資料庫删除重新安裝的問題: </b>
把ORACLE安裝目錄删除及/etc/ora*.*删除就行了
#rm –f /etc/ora*.*
<b>7.</b><b>修改Oracle10g資料庫字元集</b>
SQL&gt; connect sys/oracle as sysdba
SQL&gt; startup mount
SQL&gt; alter session set sql_trace=true;
Session altered.
SQL&gt; alter system enable restricted session;
System altered.
SQL&gt; alter system set job_queue_processes=0;
SQL&gt; alter system set aq_tm_processes=0;
SQL&gt; alter database open;
Database altered.
SQL&gt; set linesize 120;
SQL&gt; alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL&gt; ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳過超集的檢查,ALTER DATABASE character set INTERNAL_USE
SQL&gt; shutdown immediate;
SQL&gt; STARTUP
SQL&gt; select name,value$ from props$ where name like '%NLS%';
NLS_CHARACTERSET
ZHS16GBK
<b>8. oracle database</b><b>備份</b>
(1)vi bachupDb.sh
#!/bin/sh
#oracle使用者下
#crontab -e 增加 "35 4 * * * /home/oracle/dbbackup/backupDb.sh",儲存後自動安裝
#或echo "35 4 * * * /home/oracle/dbbackup/backupDb.sh" &gt; backupDb.cron
#crontab backupDb.cron
#############
#@tip 修改為本機資料庫home目錄
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
# 注意字元集必須和資料庫的字元集一緻,以避免字元集轉化失敗
export NLS_LANG=AMERICAN_AMERICA.zhs16gbk
#@tip 125修改為要備份的oracle的ip位址的最後一段
dmpfile="`echo ~/`dbbackup/gedb_`date +%w`.dmp"
logfile="`echo ~/`dbbackup/gedb_`date +%w`.log"
if [ -w $dmpfile ]
then
echo "rm -f $dmpfile"
rm -f "$dmpfile"
fi
#@tip ip位址修改為要備份的oracle的主機位址
exp USERID=gedb/[email protected]/ge01 file=$dmpfile log=$logfile owner=gedb grants=y
(2)copy bachupDb.sh 到slave oracle srever 相應目錄,
chown oracle.oinstall bachupDb.sh
chmod 744 bachupDb.sh
vi bachupDb.sh 以符合安裝情況
(3)以oracle user role
crontab -e
35 4 * * * /home/oracle/dbbackup/backupDb.sh
<b>9. restore oracle backup</b>
su - oracle
imp USERID=gedb/gedb file=gedb_6.dmp log=implogfile commit=y grants=y full=y