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 | 包中没找到 |
openmotif21-2.1.30-8 | 0 | 1. 要先装libXp-1.0.0-8.1.el5.i386.rpm |
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