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