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

Red Hat Enterprise Linux 4 下安装 Oracle 10g

2012-02-27 18:05 716 查看
上周用VM在RHEL4下装了oracle10.2,中间碰到不少问题。

总结了一下发个贴子,若有不足之处,请大家指正,谢谢!

参考资料:

Oracle官方网站: http://download.oracle.com/docs/html/B10813_01/toc.htm
国外非Oracle官方网站: http://www.puschitz.com/Installi ... uxErrorsAndProblems

一、以root用户登录, 进行如下操作:

1 检查硬件要求

* 主要包括:

**********************************************

* 内存: >=512M *

* 交换空间: 1.0 GB或者2倍内存大小 *

* 临时空间(/tmp>):>=400M *

* 软件所需空间: >=2.5G *

* 数据库文件: >=1.2G *

**********************************************

复制代码

# cat /etc/issue

# uname -r

# grep "model name" /proc/cpuinfo

# grep MemTotal /proc/meminfo

# grep SwapTotal /proc/meminfo

# free

# df -k /tmp

# df -k

2 检查软件要求(安装软件包)

说明:虽然官方文档只要求如下几个软件包(具体版本号可能不一样),

但实际上在真正安装的时候,往往需要更多.

binutils-2.15.92.0.2-10.EL4

compat-db-4.1.25-9

control-center-2.8.0-12

gcc-3.4.3-9.EL4

gcc-c++-3.4.3-9.EL4

glibc-2.3.4-2

glibc-common-2.3.4-2

gnome-libs-1.4.1.2.90-44.1

libstdc++-3.4.3-9.EL4

libstdc++-devel-3.4.3-9.EL4

make-3.80-5

pdksh-5.2.14-30

sysstat-5.0.5-1

xscreensaver-4.18-5.rhel4.2

2.1 首先,在你的RHEL光盘里找到如上RPM包;

2.2 然后,执行以下命令:

# rpm -Uvh binutils*

# rpm -Uvh compat-db*

# rpm -Uvh control-center*

# rpm -Uvh gcc-3.4*

# rpm -Uvh gcc-c++*

# rpm -Uvh glibc-2.3*

# rpm -Uvh glibc-common*

# rpm -Uvh gnome-libs*

# rpm -Uvh libstdc++-3.4*

# rpm -Uvh libstdc++-devel*

# rpm -Uvh make*

# rpm -Uvh pdksh*

# rpm -Uvh sysstat*

# rpm -Uvh xscreensaver*

说明:若执行以上命令时提示须安装其它,则再从RHEL4的安装盘拷贝相应的包,然后再继续安装

3 创建安装数据库的用户、组和安装目录

3.1 创建用户和相关的组

# /usr/sbin/groupadd oinstall

# /usr/sbin/groupadd dba

# /usr/sbin/useradd -g oinstall -G dba oracle 

# passwd oracle

3.2 建立相关目录并授权

# mkdir -p /usr/app/oracle (the Oracle base directory)

# mkdir -p /usr/oradata (an optional Oracle datafile directory)

# chown -R oracle:oinstall /usr/app/oracle /usr/oradata

# chmod -R 77

复制代码

4 配置内核参数

4.1 修改核心参数并检查

4.1.1 修改参数

# vi /etc/sysctl.conf

说明:在该文件末尾加入如下内容:

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.shmall = 2097152

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

4.1.2 启用新参数

# /sbin/sysctl -p

4.1.3 检查参数

# /sbin/sysctl -a | rpm sem

# /sbin/sysctl -a | rpm shm

# /sbin/sysctl -a | rpm file-max

# /sbin/sysctl -a | rpm ip_local_port_range

4.2 设置oracle用户的shell限制

4.2.1 编辑limits.conf

# vi /etc/security/limits.conf

说明:添加如下的行

# nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)

* soft nproc 2047

* hard nproc 16384

* soft nofile 1024

* hard nofile 65536

4.2.2 编辑/etc/pam.d/login,添加1行:

# vi /etc/pam.d/login

session required /lib/security/pam_limits.so

4.2.3 编辑/etc/profile,添加如下部分:

# vi /etc/profile

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

复制代码

5 装载CD,或上传并解压缩文件

5.1 若装载CD:

# mount /media/cdrom

5.2 若上传并解压缩文件

5.2.1 上传:可用ftp命令或ftp工具

5.2.2 解压缩:

# unzip 10201_database_linux32.zip -d /tmp/oracle

5.2.3 改变属主和权限:

# chown oracle /tmp/oracle

# chmod -R +755 /tmp/oracle

5.3 设置在安装Oracle的机器上以oracle用户安装

# xhost localhost:oracle

复制代码

二、以oracle用户登录, 进行如下操作

1 配置oracle用户的环境变量

1.1 切换到Oracle用户

# su - oracle

$ cd

1.2 设置环境变量

$ vi .bash_profile (在文件后面添加如下内容)

export ORACLE_BASE=/usr/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1

export ORACLE_SID=SHDB

export PATH=.:${PATH}:$HOME/bin:$ORACLE_HOME/bin

export PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin

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

export LANG=zh_CN.GBK

export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK

1.3 使环境变量生效

$ source .bash_profile

1.4 设置本地字符集类型

$ export LC_CTYPE=en_US.UTF-8

2 开始安装

说明:为了便于后结安装,最好在安装前打开两个shell窗口,1个以root登录,另外1个以oracle登录

2.1 $ ./runInstaller

2.2 根据安装提示进行相应操作,中间需要root执行2个脚本:

# $ORACLE_BASE/oraInventory/orainstRoot.sh

# $ORACLE_HOME/root.sh

说明:把$ORACLE_BASE和$ORACLE_HOME替换成实际的目录即可

2.3 安装过程中,不要选择创建数据库;

其它就没什么了,只须根据提示进行相应操作,直至安装成功。

三、安装过程的问题

1 Q: 执行./runInstaller后,弹不出安装界面,提示如下错误信息:

---------------------------------------------------------------------------------------------

Xlib: connection to ":0.0" refused by server

Xlib: No protocol specified

Error: Can't open display: :0.0

A: 在安装Oracle的机器上,以root身份运行命令:

# xhost localhost:oracle

(备注: 如果上面的命令有错误,则运行 # xhost +

然后 切换到 oracle账号,$export DISPLAY=':0.0'

)

2 Q:安装时,弹出的界面出现乱码

---------------------------------------------------------------------------------------------

A:以oracle用户身份,设置本地字符集类型

$ export LC_CTYPE=en_US.UTF-8

3 Q:安装过程中,提示OUI-10066错误:

Not all the dependencies for the component Oracle Database 10g 10.2.0.1.0 could be found.

Missing component oracle.doc 10.2.0.1.0.

---------------------------------------------------------------------------------------------

A:可能是oracle安装文件没有完全解压缩,重新解压缩一下再安装

注意:若用root解压后,更改其属主为oracle

4 Q:INFO: /bin/sh: /usr/bin/gcc: No such file or directory

......

INFO: cannot stat `ntcontab.o'

INFO: No such file or directory

......

Exception Name: MakefileException

Exception String: Error in invoking target 'ntcontab.o' of

makefile '/usr/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'

---------------------------------------------------------------------------------------------

A: 检查Linux系统的所有补丁是否安装,尤其是gcc包,然后再继续安装

四 创建与配置数据库(使用oracle用户登录RHEL)

1 创建数据库

1.1 以oracle用户登录RHEL, 输入:

$ dbca

1.2 在输入数据库SID时, 要注意保持与oracle配置文件的$ORACLE_SID的值一致.

否则,创建完数据库后就启动不了(具体看下节).

2 配置服务名

修改listener.ora

$ vi $ORACLE_HOME/network/admin/tnsname.ora

增加以下内容:

--------------------------------------------------------------------------

# 说明: 把HOST的值设置为你要安装数据库那台机器的IP (SHDB为创建的数据库SID)

SHDB =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = SHDB)

)

)

3 配置数据库的监听器

3.1 修改listener.ora

$ vi $ORACLE_HOME/network/admin/listener.ora

输入以下内容:

--------------------------------------------------------------------------

# 说明: 把HOST的值设置为你要安装数据库那台机器的IP

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)

(PROGRAM = extproc)

)

(SID_DESC =

(SID_NAME = SHDB)

(ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)

)

)

3.2 启动监听器

$ lsnrctl start

4 启动数据库

$ sqlplus / as sysdba

$ startup

若数据库能正常启动, 则配置到此结束

五、配置数据库的问题

1 Q: TNS-01155: Incorrectly specified SID_LIST

NL-00303: syntax error in NV string

---------------------------------------------------------------------------------------------

A: 可能是profile中设置的sid和你创建的DB的SID不一致

(1) 查看数据库的SID是否与.bash_profile的ORACLE_SID一致

$ echo $ORACLE_SID

$ ls $ORACLE_HOME/dbs/init*.ora

(2) 修改.bash_profile的ORACLE_SID为你创建DB的SID, 然后保存并生效

$ source .bash_profile

(3) 创建pfile

$ sqlplus /nolog

SQL> connect /as sysdba

SQL> create pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora' from spfile='/usr/app/oracle/product/10.2.0/db_1/dbs/spfileSHDB.ora';

SQL> startup pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'



SQL> startup nomount pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'



SQL> startup

说明: 把pfile和spfile的路径修改成这两个文件在系统的实际位置即可

2 Q: ORA-01102:cannot mount database in EXCLUSIVE mode

---------------------------------------------------------------------------------------------

A: 可能是关闭异常,造成数据库已经装载或共享的假象,而造成以下问题:

(1) "lk<sid>" and "sgadef<sid>.dbf"这两个用于锁内存的文件存在着。

oracle$cd $ORACLE_HOME/dbs

oracle$ls -l sgadef<sid>.dbf

* 如果存在删掉它

oracle$rm sgadef<sid>.dbf

oracle$ls -l lk<sid>

* 如果存在删掉它

oracle$rm lk<sid>

(2) pmon、smon、lwgw及dbwr这些后台进程依然存在着

oracle$ps -ef | grep ora_ | grep $ORACLE_SID

* 如果有pmon这些后台进程的残留,kill -9掉它

oracle$kill -9 pid

(3) Oracle开辟的共享内存没有释放掉

① 清共享内存段

oracle$ipcs -m --显示一下,看owner是Oracle用户的

oracle$ipcrm -m <Shared_Memory_ID>

② 清信号集

oracle$ipcs -s --显示一下,看owner是Oracle用户的

oracle$ipcrm -s <Semaphore_ID>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: