您的位置:首页 > 数据库 > Oracle

在 centos 5.2 系统安装 Oracle 10g 笔记和相关问题解决

2010-07-19 00:05 976 查看

1. 操作系统

1.1 CentOS 5.2 及以上版本

1.2 Redhat Advance Sever 4 及以上版本

2. Oracle 10g 安装准备工作

2.1 用 root 登录 linux 系统

su -

2.2 step1: 检查 host 文件

vi /etc/hosts

? 文件中必须包含 a fully qualified name for the server
? 一般格式:
<IP-address><fully-qualified-machine-name><machine-name>
? 建议必须含有 localhost ,这对启动 Oracle 监听等服务很重要

2.3 step2: 设置内核参数

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 = 262144
net.core.rmem_max = 262144


net.core.wmem_default = 262144
net.core.wmem_max = 262144

退出 vi ,让设置立即生效
/sbin/sysctl –p

说明:
? shmmax 定义单个进程共享内存段的最大值,它取值范围是 [0,4294967295],
单位为 byte 。
? 建议: kernel.shmmax = 2147483648 , SGA 的不要超过这个数字
? 对于 32bit 的 linux 来说,不管实际的内存有多大, shmmax 的最大值不应该
超过 4294967295 。
? 当然这个参数与 linux 内核和版本有关系
? 有兴趣的可以查询相关网络资料

2.4 step3 ,检查几个文件

系统资源限制配置文件 /etc/security/limits.conf 文件中加入:
vi /etc/security/limits.conf
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
要使 limits.conf 文件配置生效, 必须要确保 pam_limits.so 文件被加入到启
动文件中。即文件中加入下列行,如果里面没有的话
vi /etc/pam.d/login
session required /lib/security/pam_limits.so

2.5 step4: 禁用 selinux

vi /etc/selinux/config
SELINUX=disabled
备注:
出于解决安全问题, NSA ( National Security Agency 的缩写 . 它是五角大楼下属的 15 个国防局之
一)在 Linux 社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能
访问那些在他的任务中所需要文件。这种体系叫做 Security-Enhanced Linux 或简化为 SELinux 。
SELinux 提供了比传统的 UNIX 权限更好的访问控制


2.6 Step5: 检查必要的 rpm 包

rpm -q setarch
rpm -q compat-libstdc++ #注意检查时会报包没有找到,那是因为版本原因,可用rpm -qa | grep compat-libstdc++
rpm -q make
rpm -q glibc
rpm -q openmotif
rpm -q compat-db
rpm -q libaio
rpm -q gcc
rpm -q compat-gcc-32
rpm -q compat-gcc-32-c++

说明:
? 留意 rpm – q 的查询结果
? 没有目前系统没有安装相关 rpm ,就用 rpm – ivh ***.rpm 安装
? 相关 rpm 包一般在 linux 安装光碟中都有

包名
是否安装
说明
make-3.79.1
1
 
gcc-3.2.3-34
1
 
glibc-2.3.2-95.20
1
 
compat-db-4.0.14-5
0
安装盘中有
compat-gcc-7.3-2.96.128
1
 
compat-gcc-c++-7.3-2.96.128
1
 
compat-libstdc++-7.3-2.96.128
1
 
setarch-1.3-1
1
 
compat-libstdc++-devel-7.3-2.96.128
0
包中没找到
1. 下载了一个包,但需要:compat-libstdc++-7.3-2.96.126.i386.rpm 这个包,就下载吧
2. 安装过程 rpm -ivh compat-libstdc++-7.3-2.96.126.i386.rpm --replacefiles (把以前的版本替换掉)
3.rpm -ivh compat-libstdc++-devel-7.3-2.96.126.i386.rpm
openmotif21-2.1.30-8
0
1. 要先装libXp-1.0.0-8.1.el5.i386.rpm
2. 再装此包

2.7 Step6: 创建用户和组

用以下命令创建下列 Oracle 运行和安装需要的组和用户

groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba oracle
passwd oracle

说明:
? 建议为 Orcle 用户设置一个复杂的密码

2.8 Step7: 创建安装 oracle 的目录

创建 oracle 安装目录
mkdir -p /oracle/product/10.2.0/db_1

修改对应目录的权属关系
chown -R oracle.oinstall /oracle

2.9 Step8: 为用户打开访问 X 权限

用 root 登录,执行下列指令:
su-
xhost +
说明:
? xhost + 是使所有用户都能访问 Xserver.

2.10 Step9: 修改 Oracle 用户的参数

把下列行加在 /home/oracle/.bash_profile 文件末尾 , 注意把其中
ORACLE_SID 换成自己的实例名(如 orcl ):
vi /home/oracle/.bash_profile
# Oracle Settings

ORACLE_BASE=/oracle;
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
ORACLE_SID=orcl
PATH=/usr/sbin:$PATH
PATH=$ORACLE_HOME/bin:$PATH;

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

说明:
? 留意文本中红色部分关键信息
? 结合自己的应用设置 SID
2.11 Step10 :启动安装
? 用 oracle 用户登录。
su – oracle
? 如果用的是 X 模式,要把 DISPLAY 设置:
DISPLAY=<machine-name>:0.0; export DISPLAY

? 在 Oracle 安装文件 Disk1 目录下用如下命令开始安装:
./runInstaller

2.11 因为 oracle 10g 不支持 centos, 所以修改 CentOS 5 的版本

#vi /etc/redhat-release
redhat-4

4.Oracle 登陆,并启动 startx ,以便进行图形界面安装 oracle

改安装程序目标的权限 :
chown –R oracle:oinstall database && chmod 755 database -R

1 先只安装程序

启动 xwindows 后 (startx) ,启一个终端,到安装目录下运行, runInstall ……

2 配置监听程序 netca

3 建实例: dbca

4. 启动监听 lsnrctl start

退出到终端下, oracle 登陆
lsnrctl start
-- lsnrctl 是启动监听程序的;

5. 启动 DB

Oracle 用户登陆,
sqlplus ‘/ as sysdba’
startup immediate 关: shutdown immediate
exit

安装 rlwrap , sqlplus 实现回退、上下翻命令等 .....

由于 sqlplus 中回退键出现乱码,可以安装 rlwrap 进行解决( stty erase ^h 这招在 centos 5.2 上有时不起作 , 系统一样重装一次 oracle 又可以了。。。不知道为什么)

1. 安装: readline-5.0.tar.gz

http://ftp.gnu.org/gnu/readline/ 下载)

2. 安装: rlwrap-0.37.tar.gz

http://utopia.knoware.nl/~hlub/uck/rlwrap/

2. 运行 rlwrap sqlplus /nolog

这时就可以实现回显了,也可以上下翻命令,回退键 ...

3. 如果运行报: error while loading shared libraries libreadline.so.6 解决如下:

find / -iname libreadline.so.6 -- 确保能找到此文件
cp /etc/ld.so.conf /etc/ld.so.conf.backup
vi /etc/ld.so.conf
在 ld.so.conf 最后加入 /usr/local/lib ,文件内容信息变为如下:
include ld.so.conf.d/*.conf
/usr/local/lib
ldconfig -- 运行此命令,使配置文件起作用;

3. 把下两句写入运行 oracle 的用户 .bash_profle 文件中:

alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'



Oracle 开机自动启动和关闭方法:

su - oracle -c "/u02/oracle/bin/lsnrctl start" >> /var/log/oracle


1 修改启动选项

vi /etc/oratab

expbook:/oracle/product/10.2.0/db_1:Y

说明:
? 格式为: SID:ORACLE_HOME:Y
? 把 AUTO 域设置为 Y( 大写 ) ,只有这样, oracle 自带的 dbstart 和 dbshut 才能够发挥作用

2 处理服务脚本:

将脚本命名为 oracle ,保存在 /etc/rc.d/init.d 下
改变文件属性: chmod 755 oracle
chown root.root oracle

3 脚本内容

#!/bin/bash
# Oracle DataBase
#
# chkconfig: 345 99 10
# description: Oracle
#

#################FUNCTION#############
#
# AutoStart Oracle and listener
# AutoStop Oracle and listener
# Created by bluefox 2003-11-26
#####################################


case "$1" in
start)
echo "Starting Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Databasee as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - oracle -c "dbstart" >> /var/log/oracle
echo "Done."
echo "Starting Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo "Stoping Oracle Listeners ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo "Stoping Oracle Databases ... "
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
su - oracle -c "dbshut" >>/var/log/oracle
echo "Done."
echo ""
echo "-------------------------------------------------" >> /var/log/oracle
date +" %T %a %D : Finished." >> /var/log/oracle
echo "-------------------------------------------------" >> /var/log/oracle
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac

4 保存文件 , 退出以后 , 添加并启动察看服务。

#chkconfig --add oracle
#chkconfig --list oracle

chkconfig --list oracle 的运行结果:

oracle 0:off 1:off 2:off 3:on 4:off 5:on 6:off

5. 附说明 chkconfig 作用

根据上面的运行结果,当相应的运行级别为 on 时 ( 例如: 5:on) ,在对应的 /etc/rc.d/rcN.d( 例如:和 5:on 对应的是: /etc/rc.d/rc5.d) 下面会生成一个文件: S99oracle ,使用 vi S99oracle 打开该文件,可以看到该文件的内容和 /etc/rc.d/init.d/oracle 内容相同,表示配置成功,其实, S99oracle 是一个到 /etc/rc.d/init.d/oracle 的链接,我们可以使用 file 命令来查看:

$file /etc/rc.d/rc5.d/S99oracle

S99oracle:symbolic link to '../init.d/oracle

说明一点:

脚本文件中的: # chkconfig: 345 99 10

指出 3 , 4 , 5 级别启动这个服务, 99 是在相应的 /etc/rc.d/rcN.d(N 为前面指定的级别,这里是 345) 目录下生成的链接文件的序号 ( 启动优先级别 )S99oracle , 10 为在除前面指出的级别对应的 /etc/rc.d/rcN.d(N 为除 345 之外的级别 ) 目录生成的链接文件的序号 ( 服务停止的优先级别 )K10oracle

重启系统,就可以在启动的过程中看到 Starting oracle ,因为我们设置的优先级为 99 ,一般是最后启动。 [OK] 以后就可以了。因为要启动 emctl ,可能有点慢,等待的时间要稍微长一点。

启动以后可以以 root 执行 oracle start 或者 oracle stop 来启动或停止服务。

注意 :

这样的脚本启动一般不会启动实例 , 如果想让实例也随脚本一起启动的话 , 就需要修改文件 :/etc/oratab
如果这个文件不存在 , 那么就得运行脚本文件产生它 sh /u01/app/oracle/product/10.2.0/root.sh

改 /etc/oratab 最后一行
sid:/oracle/product/10.2.0.1:N
=>
sid:/oracle/product/10.2.0.1:Y (其中 sid 为想要启动的 database )

只要在这里设置好后 , 在配合上面的脚本 , 即可实现开机自动启动 oracle 以及实例了 .

Chkconfig –-add 做的工作:

把 /etc/rc.d/init.d/oracle 依据 # chkconfig: 345 99 10 拷贝到相应目录,并以 345 ,为启动,目标, 99 的启动时顺序, 10 的关机时关掉顺序;

附 . 由于硬盘空间不够,新加一个盘;

用 fdisk 分区,然后格式化分区; mkfs.ext3 /dev/sdb1 ,接下来挂载上去;
启动自动挂载硬盘, /etc/fstab 文件 ,格式为:
fs_spec   fs_file   fs_type   fs_options   fs_dump   fs_pass  
/dev/sdb1 /home/u01 ext3 defaults 1 1
fs_spec   -  该字段定义希望加载的文件系统所在的设备或远程文件系统,对于一般的本地块设备情况来说: IDE 设备一般描述为 /dev/hdaXN , X 是 IDE 设备通道 (a,   b,   or   c) , N 代表分区号; SCSI 设备一描述为 /dev/sdaXN 。对于 NFS 情况,格式一般为 :, 例如: `knuth.aeb.nl:/' 。对于 procfs ,使用 `proc' 来定义。

fs_file   -  该字段描述希望的文件系统加载的目录点,对于 swap 设备,该字段为 none ;对于加载目录名包含空格的情况,用 40 来表示空格。

fs_type   -  定义了该设备上的文件系统,一般常见的文件类型为 ext2   (Linux 设备的常用文件类型 ) 、 vfat(Windows 系统的 fat32 格式 ) 、 NTFS 、 iso9600 等。

fs_options   -  指定加载该设备的文件系统是需要使用的特定参数选项,多个参数是由逗号分隔开来。对于大多数系统使用 "defaults" 就可以满足需要。其他常见的选项包括:

选项含义

ro       以只读模式加载该文件系统

sync     不对该设备的写操作进行缓冲处理,这可以防止在非正常关机时情况下破坏文件系统,但是却降低了计算机速度

user     允许普通用户加载该文件系统

quota    强制在该文件系统上进行磁盘定额限制

noauto   不再使用 mount  - a 命令(例如系统启动时)加载该文件系统

fs_dump   -  该选项被 "dump" 命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为 0

fs_pass   -  该字段被 fsck 命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统 "/" 对应该字段的值应该为 1 ,其他文件系统应该为 2 。若该文件系统无需在启动时扫描则设置该字段为 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: