admin 管理员组

文章数量: 887357


2024年1月15日发(作者:while循环成立条件)

Redhat linux下安装oracle 10g

安装redhat5时要独立分配磁盘给SWAP,空间大小应该是内存大小*2,最好使用内存>1G的机器。

系统检查命令:

# grep MemTotal /proc/meminfo ――检查内存大小

# grep SwapTotal /proc/meminfo ――检查交换分区大小swap

# df -k /tmp ――要求/tmp 400MB

# grep "model name" /proc/cpuinfo ――cpu检查

# cat /etc/issue ――操作系统检查

# uname –r ――系统内核检查

当前为root超级用户下进行操作:

1、由于orcale10不支持 redhat as5 需要修改/etc/redhat-realease 将 Red

Hat Enterprise Linux Server release 5 (Tikanga) 改为Red Hat Enterprise

Linux Server release 4 (Tikanga) ,安装完成后再将其修改回来

2、修改/etc/hosts 文件将127.0.0.1改为本机IP地址 否则网络检查通不过

3、检查安装所需的软件包,如果提示依赖性错误,先按照提示内容安装所需软件包后继续

setarch-2*

make-3*

glibc-2*

libaio-0*

compat-libstdc++-33-3*

compat-gcc-34-3*

compat-gcc-34-c++-3*

gcc-4*

libXp-1*

openmotif-2*

compat-db-4*

4、修改 /etc/ 内核配置文件,增加/修改以下项目,如没有自己添加

= 2097152 # 可以使用的共享内存的总量。

= 2147483648 # 最大共享内存段大小。

= 4096 # 整个系统共享内存段的最大数目。

= 250 32000 100 128 # 每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。

-max = 65536 # 系统中所允许的文件句柄最大数目。

_local_port_range = 1024 65000 # 应用程序可使用的IPv4端口范围。

_default = 1048576 # 套接字接收缓冲区大小的缺省值

_max = 1048576 # 套接字接收缓冲区大小的最大值

_default = 262144 # 套接字发送缓冲区大小的缺省值

_max = 262144 # 套接字发送缓冲区大小的最大值

运行下面的命令使得内核参数生效:

/sbin/sysctl –p

注:内核参数并非必须修改,可以根据自己实际情况而定。

5、增加下面的内容到文件 /etc/security/ 文件中:

soft nproc 2047

hard nproc 16384

soft nofile 1024

hard nofile 65536

6、增加下面的内容到文件 /etc/pam.d/login 中:

session required /lib/security/pam_

session required pam_

7、因为SELINUX对oracle有影响,所以把secure linux设成无效,编辑文件 /etc/selinux/config :

SELINUX=disabled

当然你也可以用图形界面下的工具 (系统 > 管理 > 安全级别和防火墙). 选择SELinux页面并且设为无效.

8、新增组和用户:

groupadd oinstall

groupadd dba

useradd -m -g oinstall -G dba oracle

passwd oracle 自行设置密码

9、创建Oracle的安装目录,并把权限付给oracle用户:

例:

mkdir -p /u01/app/oracle/product/10.2.0/db_1

chown -R ll /u01

10、配置环境变量(/etc/profile或.bash_profile),增加一下内容

# Oracle Settings

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME

ORACLE_SID=orcl; export ORACLE_SID

PATH=$PATH:$ORACLE_HOME/bin ; export PATH

修改后使用source /etc/profile或.bash_profile 命令使配置生效

11、设置安装语言设置

登陆oracle用户

因为中文安装会有乱码所以设置用英文安装 export LC_ALL=en_US

12、开始安装

进入oracle安装目录中,执行./runInstaller

如果提示……/.oui权限不够,进入install目录,执行

chmod u+x .oui

chmod u+x unzip

后再执行./runInstaller便会出现安装界面

在安装过程中选择高级安装,并将数据库语言选中文字符集选simple chinese 16GBK---gbk编码集,在linux下无法识别gbk编号,查询后中文显示为乱码

安装快完成好的时候,会出现提示,必须以root 的身份执行两个脚本

13、安装完成后

数据库创建完成后,修改vi /etc/oratab,把orcl:/opt/oracle/oracle/product/10g:N那一行最后的N改成Y,

在/etc/rc.d/中加入如下:(注意:引号不能缺少,否则导致系统无法启动)

su - oracle -c “lsnrctl start”

su - oracle -c “dbstart”

如果安装后出现错误,进行卸载后重装,卸载命令如下:

$./runInstaller -silent -deinstall -removeallfiles -removeAllPatches

"REMOVE_HOMES={$ORACLE_HOME}" –responseFile

Linux系统下Oracle的自动启动服务创建

同时将Oracle自动启动加到了我的机器中,下面将过程分享一下

一、使用root用户修改/etc/oratab 文件:

$ vi /etc/oratab

orcl:/oracle/app/product/10.2.0/db_1:N

改为:

orcl:/oracle/app/product/10.2.0/db_1:Y

也就是将最后的N改为Y

二、使用Oracle用户修改$ORACLE_HOME/bin/dbstart文件:

# su - oracle

$ cd $ORACLE_HOME/bin

$ vi dbstart

找到 ORACLE_HOME_LISTNER=.....这行, 修改成

ORACLE_HOME_LISTNER=/u01/app/oracle/product/10.1.0/db_1

或者直接修改成:

ORACLE_HOME_LISTNER=$ORACLE_HOME

三、测试运行 dbshut, dbstart 看能否启动Oracle 服务及listener服务:

1.修改dbstart和dbshut的日志文件的权限:

$su - root

#cd $ORACLE_HOME

#chown oracle:oinstall

#chown oracle:oinstall

注: 和 可能没有,当你运行 ./dbstart 和 ./dbshut 之后才自动创建。

2.执行相应的脚本进行测试

#su - oracle

$cd $ORACLE_HOME/bin

$./dbstart (./dbshut)

$ ps -efw | grep ora_

$ lsnrctl status

$ ps -efw | grep LISTEN | grep -v grep

四:创建服务

$su - root

# cd /etc/rc.d/init.d/

# vi oradbstart

复制如下脚本1或者脚本2内容到oradbstart文件:

注意点:

(1) #开始的行不能少,否则后面运行chkconfig命令会报错:oradbstart 服务不支持chkconfig

(2) 根据自己的环境修改环境变量配置部分(蓝色字体位置)

(3) 从windows下面保存的如下脚本内容,通过ISO复制到linux,再将脚本复制到oradbstart文件中后

,在终端下用vi oradbstart命令打开,一些行后面可能有类似^M的字符,将其删除,否则在运行后面

的chkconfig命令后,在/etc/rc.d/rcN.d目录(N为运行级别)下生成的S99oradbstart文件是空的,可以

用vi查看S99oradbstart文件,内容应该和/etc/rc.d/init.d/oradbstart文件内容相同才是正确的

(第三种情况是我在xp下使用虚拟机VMWARE安装linux,并将如下脚本保存成文本文件,然后制作成ISO

文件,然后把ISO里面的文件的内容复制到oradbstart时遇到的,这种情况一些行后面类似^M的字符,

用gredit无法看到,只有使用vi才能看到)

--脚本1(数据库、监听、dbconsole、sqlplus)

#!/bin/bash

# chkconfig: 345 99 10

# description: Startup Script for Oracle Databases

# /etc/rc.d/init.d/dbstart

export ORACLE_BASE=/u01/app/oracle/

export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

export ORACLE_SID=orcl

export PATH=$PATH:$ORACLE_HOME/bin

ORA_OWNR="oracle"

# if the executables do not exist -- display error

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]

then

echo "Oracle startup: cannot start"

exit 1

fi

# depending on parameter -- startup, shutdown, restart

# of the instance and listener or usage display

case "$1" in

start)

# Oracle listener and instance startup

echo -n "Starting Oracle: "

su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"

touch /var/lock/Oracle

su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl start"

echo "OK"

;;

stop)

# Oracle listener and instance shutdown

echo -n "Shutdown Oracle: "

su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl stop"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"

su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"

rm -f /var/lock/Oracle

echo "OK"

;;

reload|restart)

$0 stop

$0 start

;;

*)

echo "Usage: `basename $0` start|stop|restart|reload"

exit 1

esac

exit 0

--脚本2(只启动数据库和监听)

#!/bin/bash

# chkconfig: 345 99 10

# description: Startup Script for Oracle Databases

# /etc/rc.d/init.d/oradbstart

export ORACLE_BASE=/u01/app/Oracle/

export ORACLE_HOME=/u01/app/Oracle/product/10.2.0/db_1

export ORACLE_SID=orcl

export PATH=$PATH:$ORACLE_HOME/bin

case "$1" in

start)

su Oracle -c $ORACLE_HOME/bin/dbstart

touch /var/lock/Oracle

echo "OK"

;;

stop)

echo -n "Shutdown Oracle: "

su Oracle -c $ORACLE_HOME/bin/dbshut

rm -f /var/lock/Oracle

echo "OK"

;;

*)

echo "Usage: 'basename $0' start|stop"

exit 1

esac

exit 0

保存退出。

打开终端执行:

$su - root

#chown ll /etc/rc.d/init.d/oradbstart

#chmod 775 /etc/rc.d/init.d/oradbstart

然后执行:

chkconfig --add oradbstart

chkconfig --list oradbstart

chkconfig --list oradbstart运行结果:

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

或者运行如下命令

chkconfig --level 345 oradbstart on

五.检查:

根据上面的运行结果,当相应的运行级别为on时(例如:5:on),在对应的/etc/rc.d/rcN.d(例如:和

5:on对应的是:/etc/rc.d/rc5.d)下面会生成一个文件:S99oradbstart,使用vi S99oradbstart打开

该文件,可以看到该文件的内容和/etc/rc.d/init.d/oradbstart内容相同,表示配置成功,其实

S99oradbstart是一个到/etc/rc.d/init.d/oradbstart的链接,我们可以使用file命令来查看:

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

S99oradbstart:symbolic link to '../init.d/oradbstart

$ps -ef | grep oracle 查看Oracle相关的进程是否启动了

六.一点说明:

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

指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是345)目录

下生成的链接文件的序号(启动优先级别)S99oradbstart,10为在除前面指出的级别对应

的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)

K10oradbstart。

命令说明:

ps:监控后台进程

-e 显示所有进程。

-f 全格式。

-h 不显示标题。

-l 长格式。

-w 宽输出。

grep:是linux下用于搜索输出内容中所含内容的一个命令。

1.例如我要搜索名为中的一串字符"bbb",可以用

cat |grep bbb

2.我要搜索当前目录含有bb的文件,可以用

ls |grep bb

例:ps -efw | grep LISTEN | grep -v grep:查看含有LISTEN的监听,除去含有grep的监听。

chkconfig:功能说明:检查,设置系统的各种服务。

语 法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系

统服务][on/off/reset]

补充说明:这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行

哪些系统服务,其中包括各类常驻服务。

参 数:

--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增

加相关数据。

--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除

相关数据。

--list 列出所指定的系统服务。

--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。

注:runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中

的Normal,safemode,和Command prompt only。进入每个runlevel都需要启动或关闭相应的一系列服

务(services),这些服务(services)以初始化脚本的方式放置于目录/etc/rc.d/rc?.d/或者/etc/rc?.d

下面(?代表runlevel的对应序号)。

在大多数的linux发行版本中,通常有8个runlevel

Runlevel System State

0 Halt the system

1 Single user mode

2 Basic multi user mode

3 Multi user mode

5 Multi user mode with GUI

6 Reboot the system

S, s Single user mode

多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面;

而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面;

runlevel 1和2除了调试之外很少使用;

runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备。

一个错误的解决

环境变量已经配好,但是仍报错:

[oracle@dg1 ~]$ vi .bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

export EDITOR=vi

export ORACLE_SID=dg1

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

export

PATH=/u01/app/oracle/product/10.2.0/db_1/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin

export PATH=$ORACLE_HOME/bin:$PATH

umask 022

解决方法:

[oracle@dg1 ~]$ sqlplus /nolog

bash: sqlplus: command not found

[oracle@dg1 ~]$ ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

ln: creating symbolic link `/usr/bin/sqlplus' to `/bin/sqlplus': Permission deni ed

[oracle@dg1 ~]$ su - root

Password:

[root@dg1 ~]# ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

[root@dg1 ~]# su - oracle

[oracle@dg1 ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 11 12:51:24 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 167772160 bytes

Fixed Size 1218316 bytes

Variable Size 79694068 bytes

Database Buffers 83886080 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SQL>


本文标签: 系统 文件 安装 服务 内容