Oracle 10g for ubuntu 安装指南
(摘自Ubuntu中文论坛 作者:孙高勇)
本文是在 ununtu linux 下 Oracle10g 的安装笔记。我假设您已经成功的安装并配置了Ubuntu Linux。并且安装好了 gcc, make, binutils, lesstif2, libc6, and rpm libaio1 mawk rpm j2re 的运行环境,可通过 apt-get install 完成安装(ununtu 和 debian 的这种安装方式蛮方便的)。
/////////////////// 可以使用 sudo apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio1 libstdc++5 alien 完成必须安装包的安装(64位Oracle安装包:ia32-libs,gcc-multilib)(ubuntu_11.04 没有libmotif3,可以用libmotif4)
/////////////////// 还要安装 jdk_1.6.0
* 创建用户和组
oracle 安装需要两个 unix 用户组和一个运行时的 oracle 用户。
#addgroup oinstall
#addgroup dba
#addgroup nobody
#useradd -m -g oinstall -G dba -p passwd -d /home/oracle -s /bin/bash oracle
#usermod -g nobody nobody
* 创建目录
有很多文档,建议您将 oracle 安装到一个独立的分区上面。比如:/opt。请您根据您的需要选择合适自己的安装目录。在本文档中,我们假设 Oracle 的安装目录为/opt/ora10。确保有至少 3.0G 的可用空间。(晕死,我全部的剩馀空间呀:()
#mkdir -p /opt/ora10
#mkdir -p /opt/oradata
#chown -R oracle:oinstall /opt/ora*
#chmod -R 775 /opt/ora*
您生成了 oracle 的运行时路径,并且授写权限给 oracle 用户,执行权限给 dba 组。
* 设置内核参数
o 修改 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
注:shmmax(最大共享内存)是一个很重要参数,根据您的机器的内存来设定。如果您设置不合适的话,在创建数据库到约 86%的时候就会挂掉。祝您好运。_
*
o 修改 limits.conf
添加下面的行到/etc/security/limits.conf 以修改你的资源限制:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
*
o 让修改生效
修改了以上文件后,您必须让其生效,您重启系统,或者切换到 root 用户下用以下的方式改变内核运行参数:
#sysctl -p
*
o 创建程序链接
#ln -s /usr/bin/awk /bin/awk
#ln -s /usr/bin/rpm /bin/rpm
#ln -s /usr/bin/basename /bin/basename
* 设置 Oracle 用户环境
以 oracle 用户登录:
~$su oracle
修改~/.bash_profile 文件(也可能是 ~/.profile),去掉下列三行的注释符,使.bashrc 文件生效:
#if [ -f ~/.bashrc ]; then
# . ~/.bashrc
#fi
ununtu 默认是没有注释的,debian 用户需要取消掉这个。
添加下列行到~/.bashrc:
# oracle 10g
export ORACLE_BASE=/opt/ora10
export ORACLE_HOME=/opt/ora10
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=compiere
export ORACLE_TERM=xterm
////////////// 如果 /usr/lib/libstdc++.so.5 文件不存在,而是存在一个libstdc++.so.6文件执行以下操作
sudo cp libstdc++.so.6 libstdc++.so.5
我是将上面的内容保存到另一个文件中,.bash_oracle,然后在.bashrc 中使用 source.bash_oracle 进行调用 的。您可以根据您的好恶进行设置。您需要注意的是,ORACLE_BASE 和ORACLE_HOME 的设置一定得和您在前面创建的目录相符。 ORACLE_SID 是默认数据库的名称,在本文档中,我们假设默认的数据库名叫 compiere,如果您想用其他的名字,请您作相应的修改。
* 执行安装
o 交换分区的调整
以 oracle 用户启动 X,进行安装。///////////////////////这个很重要的,之前需要以宿主用户身份执行以下命令$xhost +机器名 ,在切换到oracle用户后执行 xclock
看看oracle用户是否可以启动图形界面。
*
o 安装前的准备
终于可以安装了。我们假设下载的安装文件位于/home/sungaoyong/oracle 下,名称为 10201_database_linux32.zip 解压后。
*
o 运行 Installer
进入 oracle 数据库解压的目录
./runInstaller -ignoreSysPrereqs(忽略系统版本检查) -jreLoc /usr/lib/jvm/java-6-sun/(指定启动jre环境)
ps:这个问题./runInstaller: 63 /home/oracle/database/install/.oui: not found需要安装如下软件包:
$ sudo apt-get install ia32-libs
如果你安装的是java6 可以使用jdk6来启动oracle安装文件省去了配置jdk1.4中文的麻烦
export LANG=en_CN
比较好, 直接使用英文环境来安装, 因为在安装界面用上面所说的方法,确实是中文了,但到后面的数据库配置界面,又会重新变回小方块。所以还是推荐大家直接用英文环境来安装吧。
* 启动数据库
o 启动
$ sqlplus " scott/tiger as sysdba"
将出现如下连接数据库信息:
SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 3 月 24 16:23:27 2004
Copyright (c) 1982, 2004, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL>
表明登录数据库系统成功,运行 startup 命令启动数据库。
SQL> startup
ORACLE instance started.
Total System Global Area 336356520 bytes
Fixed Size 279720 bytes
Variable Size 268435456 bytes
Database Buffers 67108864 bytes
Redo Buffers 532480 bytes
Database mounted.
Database opened.
SQL>
表示数据库正常启动。
*
o 关闭 Oracle10g 数据库
$ sqlplus "scott/tiger as sysdba" //以 sysdba 用户登录数据库
成功登录数据库系统后,运行 shudown 命令关闭数据库。
SQL> shutdown
*
o 启动 Oracle10g 监听程序
Oracle 的监听程序主要是为客户端的连接提供接口,在控制台窗口键入如下命令:
$ lsnrctl
将出现如下监听程序信息:
LSNRCTL for 32-bit Windows: Version 10.1.0.2.0 - Production on 24-3 月 -2004 16:59:51
Copyright (c) 1991, 2004, Oracle. All rights reserved.
欢迎来到 LSNRCTL, 请键入"help"以获得信息。
LSNRCTL>
表明登录监听程序控制台成功,运行 start 命令启动监听程序。
LSNRCTL> start
将出现监听程序的一系列启动和配置情况信息列表。信息行的最后一行是“The command completed successfully”字样时,监听程序启动成功。
*
o 关闭 Oracle10g 监听程序
运行 stop 命令关闭监听程序。
LSNRCTL> stop
* 创建自启动脚本
创建 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=compiere
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/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
* 使用企业管理器
启动控制台
#emctl start dbconsole
访问数据库控制器http://localhost.localdomain:1158/em/ 要提供 sys/passwd as sysdba; 你要从一个客户端浏览器访问 em 数据库控制器,必须要运行 dbconsole 进程.安装之后,dbconsole 进程是自动会启动的.然后,如果这个集成没有启动,你可以向下面的命令行手工的启动它:
#cd $ORACLE_HOME/bin
#emctl start dbconsole
这样你就可以打开 web 浏览器,输入下面的 http://hostnameortnumber/em 来访问 em db control. host 那么是你的计算机的名字或地址.portnumber 是 em db control http 的端口号,这是在安装的时候指定的.默认的是 1158 ,你可以在$ORACLE_HOME/install/portlist.ini 文件中找到这个值.
如果实例启动了,EM 就会显示 db control 登录页.你必须使用授权访问 db control 的用户登录到数据库.一开始是 sys 用户,使用在安装的时候你确定的 sys 用户的密码.从 connect as 下拉框选 sysdba,然后点登录.这样就会出现 dbcontrol 的主页.这是同 Oracle 9i 的不同的。其它的大家共同学习吧!
///////////////////////////////////
以下命令建议使用oracle用户身份执行(主用户要有ORACLE_HOME文件夹的所有权限),在netmgr和netca文件开头加入以下
内容(否则会提示没有 export ORACLE_HOME):
# sean add
OH=/opt/ora10
ORACLE_HOME=$OH
export ORACLE_HOME;
使用 /opt/ora10/bin/dbca 进行新增、删除、配置数据库操作,修改脚本其中jre路径,可解决中文显示问题。
使用 /opt/ora10/bin/netmgr 进行数据库端口、地址和监听器的配置,修改脚本其中jre路径,可解决中文显示问题。
使用 /opt/ora10/bin/netca 监听器的配置,修改脚本其中jre路径,可解决中文显示问题。
// 解决swing界面中文乱码问题(dbca/netmgr/netca三个文件)
# 为了解决中文显示问题JRE_DIR=/opt/ora10/jdk/jre,也可以删除原来的jdk目录,把自己在那装的jdk使用
# ln -s your-jdk-path /opt/ora10/jdk,做一个链接也可以。
JRE_DIR=/home/guo/java/jdk1.6.0_15/jre
// 启动 dbstart的脚本
#!/bin/sh
expect<<- END
spawn xhost +
spawn su oracle /opt/ora10/bin/dbstart
expect "密码:"
send "oracle\r"
expect eof
exit
END
PS:dbstart中的 listener_home的路径要修改为ORACLE_HOME;要把oracle用户的.bashrc文件中添加的oracle环境参数
添加到启动脚本用户的 .profile文件中。
PS:使用dbca创建新数据库时提示如下错误的解决办法:
严重: 无法在指定的范围内为以下进程分配端口: JMS [5540-5559],RMI [5520-5539],Database Control [5500-5519],EM Agent [3938] | [1830-1849]
修改 /etc/hosts 文件,把IP和机器名称对应,然后ORACLE缺省的主机是主机名称。
PS:在ubuntu11.04上安装Oracle数据库,安装前需要执行以下命令:
cp /lib/i386-linux-gnu/libgcc_s.so.1 /lib
PS:Oracle swing乱码时,设置jdk的字体
java程序是跨平台的,但需要解决中文支持问题。
方法一:java安装目录下放进去一个中文字体即可。
进入jre目录 例如cd /usr/java/jdk1.6.0_12/jre/lib/fonts/
sudo mkdir fallback
cd fallback
sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc(把某个中文字体链接进 fallback 目录,我选了最新的文泉驿夸父字体)
sudo mkfontdir
sudo mkfontscale
方法二:直接把中文字体拷贝到jre字体目录下
sudo cp /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc /usr/java/jdk1.6.0_12/jre/lib/fonts/