linux redhat 5 安裝 oracle 數據庫總結
2011-06-29 11:59
總結了無數先人的經驗:下面簡短節說。
1、首先是安裝環境的檢查:
#free -m
查看swap 分區大小 應該大于1024M
增加swap的大小 重設交換分區可以使用如下操作:
dd if=/dev/zero of=tmp_swap bs=1k count=900000
chmod 600 tmp_swap
mkswap tmp_swap
swapon tmp_swap
完成安裝以后,可以釋放這個空間:
swapoff tmp_swap
rm tmp_swap
2.安裝Oracle10G需要的包,缺少哪個包就安裝哪個包。
用如下命令檢查
rpm -q binutils compat-db control-center gcc gcc-c++ glibc glibc-common \
gnome-libs libstdc++ libstdc++-devel make pdksh sysstat xscreensaver libaio openmotif21
安裝命令
rpm -ivh 包名
3.
設置內核參數(在/etc/sysctl.conf文件中加入下列行)
命令 vi /etc/sysctl.conf 回車,然后按字母“o” 進入 編輯狀態。直接在后面加就可以了,這個文件中有些參數是存在的,不用管,直接加最后。我裝的時候發現存在參數沒有加,后來出現out of memery 錯誤就是因為 kernel.shmmax這個參數沒加的原因。總之,把下面的都加在后面沒錯的。
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
net.ipv4.ip_local_port_range = 1024 65000
按"esc" 退出編輯 輸入:wq (保存并退出 )如果只退出 不保存輸入:q!
然后輸入命令
# /sbin/systcl -p 使參數生效。
4.
其他資源設置
4.1 修改/etc/security/limits.conf 文件
vi /etc/security/limits.conf
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
5.將下面一行添加到/etc/pam.d/login文件中最后一行:
vi /etc/pam.d/login
session required pam_limits.so
6.添加用戶和組,如果你想新建一個新用戶可以建一個oracle用戶。或者直接裝在你的常用用戶下面。
# useradd oracle
#groupadd dba
#groupadd oinstall
#groupadd nobody 這個組有可能是存在的,如果存在就不用管了
#gpasswd -a oracle dba 將oracle加入到dba組中
#gpasswd -a oracle oinstall 將oracle 加入到oinstall組中
#gpasswd -a oracle nobody
刪除用戶和組的命令是
userdel oracle
groupdel dba
7.建文件夾命令
mkdir -p /opt/oracle
chown -R oracle:root /opt
chmod -R 777 /opt
8.修改編輯內核
vi /etc/redhat-release
將內核參數5.4 這行前加個#
然后再下面加一行將上面的復制下來把5.4改成 3
#Red Hat Enterprise Linux Server release 5 (Tikanga)
Red Hat Enterprise Linux Server release 3
9.配置環境變量,這一步是重點中的重點,如果配置不好,問題多多。
vi ~/.bash_profile 加入下面的環境變量
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1 這個目錄是沒有的,裝完oracle就有了
export ORACLE_SID=orcl 名字隨便起這個就是服務名
export PATH=/opt/oracle/product/10.2.0/db_1/bin:$PATH
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 引號不能少
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/lib
然后保存退出編輯,輸入命令
source ~/.bash_profile
然后輸入命令
env 查看上面的環境變量是否都生效了。
最好在是將bashrc 這個文件也加入上面的環境變量 vi ~/.bashrc
10.切換到oracle用戶到安裝文件目錄下,首先要有oracle10G的安裝文件 然后用unzip 文件名 解壓到一個目錄下,我是將10201_database_linux32.zip放到opt目錄下,解壓出來一個database文件夾
執行
#export LANG=en_US
./runInstaller
開始安裝,安裝可以選擇完全安裝,語言選擇english 還有簡體中文 (SIMPLIFIED CHINESE)和windows上安裝是一樣的,就不多說了。
但是有一個非常非常重要的,就是在數據庫安裝完之后會彈出一個框,里面有二個命令要執行切換到root用戶下,
su root 輸入密碼
然后將二個命令執行一下,有一個讓輸入fullpath ,回車就好。
oracle就裝好了。
在窗口中執行sqlplus可以登陸,Ok。
11.設置實例自啟動
修改/etc/oratab將所需啟動的實例修改為Y
oracle:/opt/oracle/product/10.2.0/db_1:Y
12.編寫啟動腳本(OPTION)
為了方便管理,可以寫一個啟動腳本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]"
exit 1
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"
安裝后還有一些配置。網上有好多,下面的僅供參考
過一會兒就會出現Oracle的安裝界面
注意:
1、選擇advance install
2、數據庫home設置為/opt/oracle/product/10g
3、數據庫全局名稱設置為ge01
4、數據庫字符集選Simplified Chinese ZHS16GBK
2.其他用默認設置!
注意:安裝過程中會提示以root用戶登陸執行一些腳本 ,執行后再按“ok”按鈕繼續安裝。
3、登陸并啟動數據庫的操作。
[oracle@oracle oracle]$ lsnrctl start
[oracle@oracle oracle]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected.
SQL> shutdown immediate 關閉數據庫 (OR "dbshut" command)
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 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.
4, dbstart腳本修改
數據庫創建完成后,修改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
5. 編寫啟動腳本(OPTION)
為了方便管理,可以寫一個啟動腳本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]"
exit 1
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"
6, 關于數據庫刪除重新安裝的問題:
把ORACLE安裝目錄刪除及/etc/ora*.*刪除就行了
#rm –f /etc/ora*.*
7.修改Oracle10g數據庫字符集
SQL> connect sys/oracle as sysdba
SQL> startup mount
SQL> alter session set sql_trace=true;
Session altered.
SQL> alter system enable restricted session;
System altered.
SQL> alter system set job_queue_processes=0;
System altered.
SQL> alter system set aq_tm_processes=0;
System altered.
SQL> alter database open;
Database altered.
SQL> set linesize 120;
SQL> 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> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳過超集的檢查,ALTER DATABASE character set INTERNAL_USE
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
SQL> select name,value$ from props$ where name like '%NLS%';
NLS_CHARACTERSET
ZHS16GBK
8. oracle database備份
(1)vi bachupDb.sh
#!/bin/sh
#oracle用戶下
#crontab -e 增加 "35 4 * * * /home/oracle/dbbackup/backupDb.sh",保存后自動安裝
#或echo "35 4 * * * /home/oracle/dbbackup/backupDb.sh" > backupDb.cron
#crontab backupDb.cron
#############
#@tip 修改為本機數據庫home目錄
export ORACLE_HOME=/opt/oracle/product/10g
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/gedb@10.248.1.5/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
9. restore oracle backup
su - oracle
imp USERID=gedb/gedb file=gedb_6.dmp log=implogfile commit=y grants=y full=y