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

被折叠的 条评论
为什么被折叠?



