Ubantu7.10安装oracle10g

本文详细记录了在 Ubuntu 7.10 上安装 Oracle 10g 的全过程,包括系统必备包的安装、用户创建、目录权限设置、系统配置修改、安装过程及可能遇到的问题与解决方案。从增加 swap 区、修改 sysctl.conf 和 limits.conf 到创建 Red Hat 版本声明文件,每个步骤都有详尽的说明,旨在帮助读者顺利安装 Oracle 数据库并解决安装过程中遇到的各种问题。
 

1.引言

由于在工作中需要涉及到oracle数据库,因此开始了对oracle的学习。我的机器上面安装了两个操作系统,一个是Windows XP home ,另外一个就是ubantu7.10。个人的感觉还是ubantu好,很省资源,而且效率很高,还有一个原因就是工作中运用的oracle,基本上都是运行在linux/unix主机上面提供服务,因此,就开始了在ubantu7.10上面安装oracle 10g的历程。老实说,这个过程并不顺利,而且网上查找的资料大多数都是ubantu早期的版本,并不是太实用。经历了4次的安装之后,对oracle10g的安装过程终于完成,而这个文档,就是对这个过程的详细描述以及在这个过程中出现问题的集中描述与解决,希望能够对从事同样过程,或者正在经历同样过程的人们有一些帮助。

2.安装准备

要在ubantu7.10上面安装oracle,首先得有一个ubantu7.10,在网上可以免费下载得到。我个人的版本是ubantu7.10桌面版本,而不是网站上提供的服务器版。很多刚由Windows转过来的朋友可能会认为服务器版总会比桌面版多些功能,为此而下载了服务版来用。其实ubantu7.10的服务器版本与桌面版本并没有什么区别,尤其是性能方面。

另外一个要准备的就是oracle10g,可以从网上下载得到,也可以到oracle的官方网站上得到(只需要注册一个用户登陆即可)。

3.安装过程

3.1安装系统必须的包

这一步并不是每个人都需要,因为这些包有可能默认情况下已经安装了(我的系统就已经安装了所有必须的包)。在这一步,可以执行一下如下的命令或者也可以不执行,如果在之后的运行中出现了少包的错误再进行安装也不迟。

apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien

3.2创建用户

  我们需要为安装程序创建一个oracle 用户和两个组. 首先检查它们是否已经存在:

  $grep dba /etc/group

  $grep nobody /etc/group

  如果它们还不在系统中,那么创建它们。

  在之前很多教程中都用命令去创建用户。但是在ubantu7.10下面,我发现用命令去创建的用户,无法登陆图形界面(当登陆图形界面时, 就会系统当掉),所以用图形界面的用户管理器增加一下新组叫dba,然后再增加一个普通桌面的用户叫oracle(按默认的设置即可),          设置好用户名与密码。

  接着用命令增加一个用户与组

  addgroup nobody

  usermod -g nobody nobody

3.3 创建目录和设置权限

  注意: oracle缺省目录是 /u01 和 /u02. 我们为了和FHS有更好的兼容性,更改为 /opt/oracle 和 /opt/oradata:

#mkdir -p /opt/oracle

#mkdir -p /opt/oradata

#chown -R oracle:dba /opt/ora*

#chmod -R 775 /opt/ora*

3.4修改设置

3.4.1.设置swap区

  Oracle10g至少需要500M的内存和400M的交换空间,要查看swap区是否足够大小,用 fdisk -l 命令去查,如果小于400M的空间,那么就要增加swap的大小。

  重设交换分区可以使用如下操作:

dd if=/dev/zero of=tmp_swap bs=1k count=900000

chmod 600 tmp_swap

mkswap tmp_swap

swapon tmp_swap

  完成安装以后,可以释放这个空间:

swapoff tmp_swap

rm tmp_swap

count 值是根据你需要调整的交换分区大小而定。

3.4.2.修改 sysctl.conf

添加如下的行到/etc/sysctl.conf 中:

kernel.shmmax = 3147483648

kernel.shmmni = 4096

kernel.shmall = 2097152

kernel.sem = 250 32000 100 128

fs.file-max = 65536

net.ipv4.ip_local_port_range = 1024 65000

3.4.3.修改 limits.conf

添加如下的行到/etc/security/limits.conf中:

* soft nproc 2407

* hard nproc 16384

* soft nofile 1024

* hard nofile 65536

3.4.4.让修改生效

  修改了以上文件后,必须让其生效,或重启系统,或切换到 root 用户下用以下的方式改变内核运行参数:

sysctl -p

3.4.5.产生相应的软连接

  创建一个文件如 kk,内容如下:

#!/bin/bash

ln -s /usr/bin/awk /bin/awk

ln -s /usr/bin/rpm /bin/rpm

ln -s /usr/bin/basename /bin/basename

mkdir /etc/rc.d

ln -s /etc/rc0.d /etc/rc.d/rc0.d

ln -s /etc/rc2.d /etc/rc.d/rc2.d

ln -s /etc/rc3.d /etc/rc.d/rc3.d

ln -s /etc/rc4.d /etc/rc.d/rc4.d

ln -s /etc/rc5.d /etc/rc.d/rc5.d

ln -s /etc/rc6.d /etc/rc.d/rc6.d

ln -s /etc/init.d /etc/rc.d/init.d

创建后,切换到 root 用户去执行一下。

3.4.6创建RedHat的版本声明文件

  在/etc/redhat-release中添加以下语句,以使安装程序认为正在一个RedHat的系统上安装:

Red Hat Linux release 3.1 (drupal)

  注意:此处不能用VI来编辑redhat-release文件,这样在之后的安装过程中会出现执行失败。

3.4.7修改环境变量

  编辑 /home/oracle/.bashrc,增加以下export 的内容。(注意,在Ubnutu 7.10中用户的profile文件已改名为~/.profile,有很多安装教程都是用 ~/.bash_profile,在7.10中不行的)

export ORACLE_HOME=/opt/ora10

export ORACLE_OWNER=oracle

export ORACLE_SID=ora1

export ORACLE_TERM=xterm

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

3.5开始安装

  注销原来的用户,改用oracle用户登录。用env查看一下环境变量是否生效。

然后进行/ora_ins_disk中进行安装

cd/ora_ins_disk

./runInstaller

  在这个过程中,可能会出现说DISPLAY设置不正确的错误信息。这是由于并不是oracle默认登陆所以要对显示这边进行设置:

Export DISPLAY = youIp:0.0

在命令行中输入:xclock,可以显示一个小钟,说明设置正确,重新运行上面的命令,进行安装操作。

3.6设置自启动

创建自启动脚本

创建 oracledb 脚本到/etc/init.d/oracledb,内容如下

#!/bin/bash

#

# /etc/init.d/oracledb

#

# Run-level Startup script for the Oracle Instance, Listener, and

# Web Interface

export ORACLE_HOME=/opt/ora10

export ORACLE_SID=ora1

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

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/lsnrctl start"

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

touch /var/lock/oracle

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

echo "OK"

;;

stop)

# Oracle listener and instance shutdown

echo -n "Shutdown Oracle: "

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

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

rm -f /var/lock/oracle

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

echo "OK"

;;

reload|restart)

$0 stop

$0 start

;;

*)

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

exit 1

esac

exit 0

设置权限,放到启动脚本中去

chmod 755 /etc/init.d/oracledb

update-rc.d oracledb defaults 99

4.可能出现的问题及解决

4.1中文乱码

  这个问题相当的严重,当在3.5步骤时进行安装时,会发现出现的界面都是乱码,无法从安装界面中看到有价值的信息。

  这是由于oracle的安装时采用的语言是中文,但是中文设置的不对,因此才出现乱码。解决这个问题有两个方法:

A. 将安装的过程中语言环境设置为英文

  export LC_ALL=en_US

B. 彻底解决安装过程中的语言问题

  在安装的过程中设置语言环境,可以暂时的解决乱码问题。但是,当安装好后,启动EM的时候,会发现,EM里面还是乱码。因此,问题还是需要进行解决。

  在安装的过程中出现乱码是由于JDK的语言设置有问题,JDK包括了系统安装了JDK以及oracle自带的JDK(oracle自带的JDK的修改需要等到安装完成后再进行修改),而在启动了EM之后,乱码的显示主要是因为oracle自带的JDK的语言设置有问题。

问题的实质就是JVM没有在默认的系统字体目录上找到需要的字体。

  解决问题只需要一件东西:中文字体

  你可以从WINXP下的C:/WINDOWS/fonts目录去烤贝,也可以从网上下载最新的雅黑字体。我用的就是雅黑字体。

   JDK 1.5中文问题的解决:

  sudo gedit /usr/java/jdk1.5.0_10/jre/lib/fontconfig.Redhat.3.properties.src

  查看这个文件的末尾部分,可以看见几行设定字体路径的代码。当然我们只需要关心简体中文字体的路径:

filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf

awtfontpath.chinese-gb18030=/usr/share/fonts/zh_CN/TrueType

  对于Ubuntu 7.10,默认下是找不到/usr/share/fonts/zh_CN/TrueType目录和zysong.ttf字体文件的。在JDK 1.5下运行SWING程序出现中文乱码,原因就在此。所以接下来就要建立这个目录,并拷贝一个中文字体,并重命名为zysong.ttf。

  至此,JDK1.5中文乱码问题已经解决。

   Oracle 10g dbca界面中文乱码的解决:

  解决原理与上文相同,只不过JDK 1.5换成了JDK1.4.

  sudo gedit {ORACLE_HOME}/jdk/jre/lib/font.properties

  转到这个文件的末尾,可以看到两行代码:

filename.-misc-fzsongti-medium-r-normal--*-%d-*-*-p-*-iso10646-  1=/usr/X11R6/lib/X11/fonts/truetype/songti_gb.ttf

appendedfontpath=/usr/X11R6/lib/X11/fonts/truetype

  很凑巧,我的Ubuntu 7.10上面根本找不到/usr/X11R6/lib/X11/fonts/truetype这个目录。和上文一样,改为:

filename.-misc-fzsongti-medium-r-normal--*-%d-*-*-p-*-iso10646-1=/usr/share/fonts/zh_CN/TrueType/zysong.ttf

appendedfontpath=/usr/share/fonts/zh_CN/TrueType

运行一下dbca,发现中文终于显示正常了

Oracle 10g EM企业管理器WEB界面中的中文乱码的解决:

这个要修改

{ORACLE_HOME}/jre/lib/font.properties文件,改动内容和上文完全一样。

$ emctl stop dbconsole

$ cd {ORACLE_HOME}//oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs

$ rm *.gif

$ emctl start dbconsole

然后把浏览器的缓存清理一下,重新访问:

http://localhost:1158/em

发现中文乱码终于不见了。

4.2 libaio.so.1错误

错误信息:

oracle@test2:~> sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 22 20:21:42 2007

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

SQL> connect /as sysdba

oraclehsc: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

ERROR:

ORA-12547: TNS:lost contact

解决方法:

寻找这个libaio.so.1:文件,发现它可以在$ORACLE_HOME/lib/stubs目录下找到。

于是,将$ORACLE_HOME/Lib/stubs加到了LD_LIBRARY的路径里面,但是,当这个时候,

source .bashrc,生效,这个时候,发现,一些shell的命令都开始出问题了。我想应该是属于那个文件目录

下的一些文件与系统支持命令的文件发生了冲突,导致了基本的命令寻找的首选目录变成了stubs,导致出错。

这是设置的LD_LIBRARY_PATH环境变量:export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib/stubs:LD_LIBRARY_PATH

后来觉得这样不行,那么我就把缺少的几个文件拷到其它的LIB中路径不就行了吗?于是,我将libaio.so.1拷到了/usr/lib下面,并且将环境变量LD_LIBRARY_PATH的设置

取消了。

再次启动sqlplus的时候,发现上面的这个错误没有了,但是,当我们联接 connect /as sysdba之后,再启动数据库的时候:startup

发现又出现了一个新的错误:

!!! WARNING !!! --> libaio-2.3.2-stub.so

This is a stub library which can be used for linking only.  It must

*not*

be used as a runtime library.  Please make sure this library is not

found

in LD_LIBRARY_PATH.

在这个错误下,数据库无法启动。在网上查询资料的时候,网上大多数都是讲,需要安装一下libaio-2.3.2-stub.so,但是,查了很多,都没有告诉如何安装。

而且,在stubs这个目录下面,确实发现了有libaio-2.3.2-stub.so这个文件,我把它拷到/usr/lib下面后,在stubs里面将其删除。

重新进行操作时,错误依然存在,看上面的错误信息,我觉得这个问题应该被解决了,但可惜的时,它依然存在。

后来,我想有可能还是这几个.so文件的问题,再上网查了查,发现网上的说法都是要安装这几个文件,后来看到一篇文章上面讲安装ORACLE10G的简易版的时候,

需要选安装libaio1这个包,由于 oracle10g对其构成了依赖。于是,我尝试着安装libaio1这个包:sudo apt-get install libaio1

安装完成后,再重新上面的操作,已经没有上面的警告错误了。

4.3 shared pool错误

错误信息:

Sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on Thu Apr 7 06:39:41 2005

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

Connected to an idle instance.

SQL>; startup

ORA-00371: not enough shared pool memory, should be atleast 52132659 bytes

解决办法:

这是由于ORACLE启动的时候参数配置的不正确。

找到oraora1.ora打开这个文件,将shared_pool_size调整成为需要的大小(注意,这里ora1是我安装的时候的实例名)

调整好后,再进行操作,发现数据库已经启动。

OK,成功。

4.4 requirements  failed错误

运行runInstaller,错误提示如下:

  Checking requirements...

  Checking operating system version: must be redhat-2.1,redhat-3,SuSE-9,SuSE-8,UnitedLinux-1.0

  Failed<<<<

  解决方法:

  方法一:

创建RedHat的版本声明文件

在/etc/redhat-release中添加以下语句,以使安装程序认为正在一个RedHat的系统上安装:

Red Hat Linux release 3.1 (drupal)

  然后就可以正常启动安装程序。注意不要使用vi编辑该文件,否则可能会引起ORA-12547: TNS: lost contact的错误。

  方法二:

  运行runInstaller -ignoreSysPrereqs,这样会跳过检查

  方法三:

  修改Oracle 的/.../disk1/install/linux/oraparam.ini这个参数文件,将检查项目全部注释掉。

4.5 processing system parameters 错误

错误信息:

SQL> startup

ORA-01078: failure in processing system parameters

LRM-00109: could not open parameter file '/opt/oracle/products/10.1.0.3/db_1/dbs/initora1.ora'

解决办法:

cp $ORACLE_BASE/dbs/init.ora /opt/oracle/products/10.1.0.3/db_1/dbs/initora1.ora

(其中ora1是我安装时候的实例名,在实际中要改为自己安装的实例名)

> sqlplus /nolog

SQL*Plus: Release 10.1.0.3.0 - Production on Thu Jun 8 13:16:00 2006

Copyright (c) 1982, 2004, 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 778212 bytes

Variable Size 57679900 bytes

Database Buffers 109051904 bytes

Redo Buffers 262144 bytes

Database mounted.

Database opened.

SQL>

问题解决!

注:Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.Oracle在启动过程中,寻找参数文件的顺序为:spfile<sid>.ora,spfile.ora,init<sid>.ora.

4.6 TNS: lost contact 错误

建库的过程中或者连接数据库的时候提示:

  ORA-12547: TNS: lost contact

  引起该错误的环境比较复杂,原因可能是:

  1、用vi编辑的/etc/UnitedLinux-release文件

  2、内核参数设置不正确

  3、察看一下listener是否正常启动: lsnrct1 status

  4、机器负载过大

5.附录

5.1启动和停止isqlplus服务

通过以下命令启动和停止isqlplus服务:

isqlplusctl start

isqlplusctl stop

通过查看$ORACLE_HOME/install/portlist.ini 文件可以找到当前的isqlplus application server的监听端口,默认是5560.

然后打开浏览器,输入地址http://youserverip:5560/isqlplus就可以访问isqlplus了

如果要修改isqlplus的默认端口,打开配置文件ORACLE_HOME/oc4j/j2ee/isqlplus/config/http-web- site.xml,将其中的<web-site port="5560" display-name="OC4J Java HTTP Web Site">行的端口号5560修改成新的端口号

默认情况下,sysdba用户无法通过isqlplus登入。如果要以sysdba身份登入isqlplus,则需要访问下面的网址http://youserverip:5560/isqlplus/dba,但是还需要进行一定的配置才可以访问,具体的配置过程参考http://downloadwest.oracle.com/docs/cd/B19306_01/server.102/b14357/ch2.htm#CIHDEFBA

5.2启动和停止em

emctl start dbconsole启动

emctl stop dbconsole 停止

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值