12/17/2007

利用Linux服务自动启动Oracle

利用Linux服务自动启动Oracle

1. 更改/etc/oratab
ryan:/u01/app/oracle/product/9.2.0:Y (把原来的N改为Y)

2. 增加Linux服务(名称为oracle9i)
2.1 cd /etc/rc.d/init.d/
touch oracle9i
chmod a+x oracle9i
2.2 vi oracle9i 并输入以下内容:
more /etc/rc.d/init.d/oracle9i
# !/bin/bash
# whoami
# root
# chkconfig: 345 51 49
# description: starts the oracle dabase deamons
#
ORA_HOME=/opt/ora9/product/9.2.0
ORA_OWNER=oracle
case "$1" in
'start')
echo -n "Starting oracle9i: "
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart" &
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start" &
su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl start"
touch /var/lock/subsys/oracle9i
echo
;;

'stop')
echo -n "shutting down oracle9i: "
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut" &
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop" &
su - $ORA_OWNER -c "$ORA_HOME/Apache/Apache/bin/apachectl stop"
rm -f /var/lock/subsys/oracle9i
echo
;;

'restart')
echo -n "restarting oracle9i: "
$0 stop
$0 start
echo
;;
*)
echo "usage: oracle9i { start stop restart }"
exit 1

esac
exit 0



2.3 设定oracle9i服务的启动级别
cd /etc/rc.d/init.d/
chkconfig --add oracle9i
chkconfig --list oracle9i
oracle9i 0:off 1:off 2:off 3:on 4:on 5:on 6:off


2.4 测试服务
/etc/rc.d/init.d/oracle9i start
/etc/rc.d/init.d/oracle9i stop


3. 重启linux
reboot -n
在linux启动的时候,你就可以看到一个启动项oracle9i,出现[OK]的时候,就表示你的数据库随系统启动了。

3.1 重启Linux后,查看进程
ps -efgrep ora_grep -v grep
ps -efgrep tnslsnrgrep -v grep

3.2 sqlplus测试
sqlplus '/as sysdba'

tips:
因为oracle本身脚本的bug导致启动oracle服务的时候会报一个Can't find init file for Database "SID"的错误
解决方法:cp /opt/ora9/admin/Ryan/pfile/initRyan.ora.* $ORACLE_HOME/dbs/initRyan.ora

12/13/2007

install Oracle9204 on rhel4 u5 手札

1.首先先检查安装oracle所需的包

[root@RHAS4 ~]# rpm -qa gcc make binutils openmotif setarch
binutils-2.15.92.0.2-13
openmotif-2.2.3-9.RHEL4.1
setarch-1.6-1
gcc-3.4.3-22.1
make-3.80-5

[root@RHAS4 oracle]# rpm -qa grep compat
compat-libcom_err-1.0-5
compat-gcc-32-3.2.3-47.3
java-1.4.2-gcj-compat-1.4.2.0-27jpp
compat-libgcc-296-2.96-132.7.2
compat-libstdc++-296-2.96-132.7.2
compat-openldap-2.1.30-2
compat-gcc-32-c++-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
compat-db-4.1.25-9
nss_db-compat-2.2-29

[root@RHAS4 oracle]# rpm -qa grep xorg-x11-deprecated
xorg-x11-deprecated-libs-6.8.2-1.EL.13.6
xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.6

[root@RHAS4 oracle]# rpm -qa grep gnome-libs
gnome-libs-devel-1.4.1.2.90-44.1
gnome-libs-1.4.1.2.90-44.1



一般情况下如果rhel4是默认安装的话,则需要再安装

compat-gcc-32-3.2.3-47.3 (RHEL4U5 cd3)
nss_db-compat-2.2-29 (RHEL4U5 cd4)
xorg-x11-deprecated-libs-devel-6.8.2-1.EL.13.6 (RHEL4U5 cd3)
gnome-libs-devel-1.4.1.2.90-44.1 (RHEL4U5 cd4)
compat-gcc-32-c++-3.2.3-47.3.i386.rpm (RHEL4U5 cd4)


2.补丁包的安装

p3006854_9204_LINUX.zip 运行 runInstaller 之前打
p4198954_21_linux.zip 在运行 runInstaller 之前打.
p3238244_9204_LINUX.zip 修复agent错误的补丁.
p2617419_210_GENERIC.zip 打3238244补丁所需要的补丁



3.Oracle用户权限的设置


[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -m -g oinstall -G dba oracle
[root@localhost ~]# id oracleu
id=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)
[root@localhost ~]# passwd oracle

Changing password for user oracle.New UNIX password:
BAD PASSWORD:

it is based on a dictionary wordRetype new UNIX password:passwd: all authentication tokens updated successfully.


4.设置系统环境参数



修改/etc/sysctl.conf 文件,增加绿色字体部分内容

kernel.shmmax=1073741824
kernel.shmmni=4096
kernel.shmall=2097152
kernel.sem=250 322000 100 128
fs.file-max=65536
net.ipv4.ip_local_port_range=1024 65000

shmmax 最大共享内存1GB物理内存,如果小的话可以按实际情况而定(一般为物理内存的一半)
shmmni 最小共享内存4096KB(固定大小4096)
shmall 所有内存大小sem 4个参数依次是SEMMSL(每个用户拥有信号量最大数),SEMMNS(系统信号量最大数),SEMOPM(每次semopm系统调用操作数),SEMMNI(系统辛苦量集数最大数)。(这4个参数为固定内容大小)
file-max (固定大小65536)
ip_local_port_range 端口的范围(为指定的内容)

设置oracle用户的环境变量

[root@localhost ~]# su - oracle
[oracle@localhost ~]$ ls -a
[oracle@localhost ~]$ vi .bash_profile


PATH=$PATH:$HOME/bin
export LD_ASSUME_KERNEL=2.4.19
export ORACLE_BASE=/opt/ora9
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export ORACLE_SID=Ryan
export NLS_LANG=AMERICAN
export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
unset USERNAME

然后执行环境参数

oracle@localhost ~]$ . .bash_profile

5.创建ORACLE安装目录

[root@localhost ~]# mkdir -p /opt/ora9/product/9.2.0
[root@localhost ~]# mkdir /var/opt/oracle
[root@localhost ~]# chown oracle.dba /var/opt/oracle
[root@localhost ~]# chown -R oracle.dba /opt/ora9


6.正式安装

先使用root用户安装安装前所需补丁

[root@localhost ~]#unzip p3006854_9204_LINUX.zip
Archive:p3006854_9204_LINUX.zip
creating:3006854/
inflating:3006854/rhel3_pre_install.sh
inflating:3006854/README.txt

[root@localhost ~]#cd 3006854
[root@localhost 3006854]#sh rhel3_pre_install.sh
Applying patch…
Patch successfully applied

[root@localhost ~]#unzip p4198954_21_linux.zip
Archive:p4198954_21_linux.zip
creating:4198954/
inflating:4198954/compat-libcwait-2.0-2.i386.rpm
inflating:4198954/compat-oracle-rhel4-1.0-5.i386.rpm
inflating:4198954/README.txt

[root@localhost ~]#cd 4198954
[root@localhost 4198954]#rpm -ivh compat-libcwait-2.0-2.i386.rpm
[root@localhost 4198954]#rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm


在X界面下,安装oracle

将oracle 安装介质copy到rhel4上的路径,然后解压缩

[oracle@localhost ~]$gunzip ship_9204_linux_disk1.cpio.gz
[oracle@localhost ~]$gunzip ship_9204_linux_disk2.cpio.gz
[oracle@localhost ~]$gunzip ship_9204_linux_disk3.cpio.gz
[oracle@localhost ~]$cpio -idmv <ship_9204_linux_disk1.cpio
[oracle@localhost ~]$cpio -idmv <ship_9204_linux_disk2.cpio
[oracle@localhost ~]$cpio -idmv <ship_9204_linux_disk3.cpio
[oracle@localhost ~]$startx
[oracle@localhost ~]$./home/oracle/Disk1/runInstaller
在安装过程中,系统会提醒你用root身份去执行两个sh文件,在root的登录终端中按提示操作就可以了

安装完毕后的补丁安装:
[root@localhost ~]#unzip p2617419_10102_generic.zip
[root@localhost ~]#cp -a OPatch/ $ORACLE_HOME
[root@localhost ~]#export PATH=$PATH:$ORACLE_HOME/OPatch
[root@localhost ~]#unzip p3238244_9204_linux.zip
[root@localhost ~]#cd 3238244
[root@localhost 3238244]#opatch apply

至此安装完毕

$ORACLE_HOME/bin/dbstart /dbstop 打开/停止 数据库
$ORACLE_HOME/bin/lsnrctl start/stop 打开/停止 监听器
$ORACLE_HOME/Apache/Apache/bin/apachectl start/stop 打开/停止 打开isqlplus
(一个小BUG 注释jserv.properties中"wrapper.env.copy=DISPLAY"行,否则httpd进程isqlplus不能启动。 $vi $ORACLE_HOME/Apache/Jserv/etc/jserv.propertie
#wrapper.env.copy=DISPLAY)


安装后可能碰见的问题:

执行installer时候报Can't connect to X11 window
安装前,使用root权限执行 xhost+命令即可.

执行dbca 报 jre was not found
错误in/opt/ora9/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/jre 这时我们需要手工建立一个连接文件 ln -s /opt/ora9/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/java/opt/ora9/product/9.2.0/oracle.swd.jre/bin/i386/native_threads/jre 然后再次执行dbca 出现创建数据库画面,一步一步下去,注意选择字符集和更改控制文件,系统表空间,会滚段文件为以前建立的裸设备文件。只要注意一下表空间大小要小于裸设备大小,应该不会有什么问题.

重启系统发现报告很多 The ld.so.preload file loads the /usr/lib/libcwait.so 错误,并且自
动重启是不能成功,解决方法如下:
把/usr/lib/libcwait.so 拷贝到 /lib/libcwait.so cp /usr/lib/libcwait.so /lib/libcwait.so
把/etc/ld.so.preload 文件中的/usr/lib/libcwait.so 改为/lib/libcwait

打补丁可能出现的问题:

提示错误 Cannot find liboraInstaller.so
解决方法:/opt/ora9/product/oui 拷贝到9.2.0/ 下,并将oui/bin/linux 改为 Linux就ok

提示错误 Command= fuser
Path= /usr/kerberos/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/home/oracle/bin:/home/oracle/product/10.1.0/db_1/bin:/home/oracle/OPatch
解决方法:export PATH=$PATH:/sbin