ubuntu 8.10 安装Oracle 10G 企业版综合指南

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
zzhui31
帖子: 40
注册时间: 2008-06-12 13:27

ubuntu 8.10 安装Oracle 10G 企业版综合指南

#1

帖子 zzhui31 » 2008-11-25 17:35

ubuntu 8.10 安装Oracle 10G 企业版综合指南

首先把系统更新到最新(可能有一个包libaio1需要手工安装)

1. 增加swap分区(根据需要确定是否要增加)
安装需要1G的swap分区,如果不够的话
$dd if=/dev/zero of=/tmp/tmp.swap bs=1M count=100
$chmod 600 /tmp/tmp.swap
$mkswap /tmp/tmp.swap
$sudo swapon /tmp/tmp.swap

查看 swap分区: swapon -s

安装完毕,恢复swap
$swapoff /tmp/tmp.swap
$rm /tmp/tmp.swap

2. 创建用户
要用oracle用户安装,安装好后,同样用oracle用户启动。
$addgroup oinstall
$addgroup dba
$addgroup nobody

$useradd -g oinstall -G dba -d /home/oracle -m -s /bin/bash oracle
$usermod -g nobody nobody

$sudo passwd oracle

3. 创建目录
oracle安装在此。
$mkdir -p /opt/ora10
$chown -R oracle:oinstall /opt/ora10
$chmod -R 775 /opt/ora10

4. 修改内核参数
$sudo vim /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

$sudo vim /etc/security/limits.conf

添加:
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

让修改生效:
$sudo sysctl -p

创建链接:
$ln -s /usr/bin/awk /bin/awk
$ln -s /usr/bin/rpm /bin/rpm
$ln -s /usr/bin/basename /bin/basename

5. 设置用户环境
$su - oracle
$vim ~/.bash_profile

增加:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

$vim ~/.bashrc
增加:
export ORACLE_BASE=/opt/ora10
export ORACLE_HOME=/opt/ora10/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_OWNER=oracle
export ORACLE_SID=tmp
export ORACLE_TERM=xterm

设置数据库的sid为tmp

6. 安装准备
$sudo vim /etc/redhat-release
添加:
Red Hat Linux release 3.1 (drupal)

确定java环境可以显示中文,如果不行:
方法很简单,就是在java安装目录下放进去一个中文字体即可。

cd $JAVA_HOME/jre/lib/fonts

  sudo mkdir fallback

  cd fallback

  sudo ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttf(把某个中文字体链接进 fallback 目录,我选了最新的文泉驿夸父字体)

  sudo mkfontdir

  sudo mkfontscale
把$JAVA_HOME/替换成实际的路径

7. 安装
用oracle用户登录X
进入安装文件目录,
./runInstaller -jreLoc $JAVA_HOME/jre/
把$JAVA_HOME/替换成实际的路径

在安装过程中,请使用 Advanced Installation,然后一路按默认的设置进行往下设置,在安装的后期,系统提示需要用 root 用户去运行两个脚本文件orainstRoot.sh和root.sh,不要点击ok按钮,这个时候再打开一个终端,用root用户登录,按提示执行那两个脚本,执行完后再点击ok按钮。
最后可以安装成功。


8. 手工启动:
设置oracle10g环境变量:
export ORACLE_HOME=/opt/ora10/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH

报错:ORA-12162: TNS:net service name is incorrectly specified
解决办法:设置SID:export ORACLE_SID=tmp

1)启动监听器:
:~$ lsnrctl
LSNRCTL> start
停止监听器:
LSNRCTL> stop

2)sqlplus登录oracle10:
:~$ sqlplus /nolog
SQL> conn /as sysdba

3)启动数据库:
SQL> startup
停止数据库
SQL> shutdown

4)启动控制台:
:~$ emctl start dbconsole
可以使用web访问:
http://localdomain:1158/em/

停止控制台:
:~$ emctl start dbconsole

5)启动isqlplus:

先切换到oracle用户,再执行下面的语句:

$ isqlplusctl start
http://localdomain:5560/isqlplus/
需要在http://localdomain:1158/em/ 中先创建一个非dba用户,才可以登录http://localdomain:5560/isqlplus/

9. 在/home/oracle中建启动脚本:
1)用oracle用户新建文件:vi runoracle.sh
文件内容如下:
#!/bin/bash
#name: runoracle.sh

export ORACLE_HOME=/opt/ora10
export PATH=$ORACLE_HOME/bin:$PATH

if [ $UID != 1001 ]
then
echo "should run by user 'oracle'"
exit 1
elif [ $# != 1 ]
then
echo "Usage: `basename $0` start|stop|restart"
exit 2
fi

case "$1" in
start)
echo -n "Starting Oracle:"

lsnrctl start
dbstart
touch /var/lock/oracle
emctl start dbconsole
isqlplusctl start
echo
echo "OK!"
;;

stop)
echo -n "Shutdown Oracle:"
lsnrctl stop
dbshut
rm -f /var/lock/oracle
emctl stop dbconsole
isqlplusctl stop
echo
echo "OK!"
;;

restart)
$0 stop
$0 start
;;

*)
echo "Usage: `basename $0` start|stop|restart"
exit 2

esac
exit 0

保存文件


2)修改权限:chmod 755 runoracle.sh

3)要启动的时候先切换到oracle用户:
su - oracle
再输入:
./runoracle.sh start

如果启动oracle10g报错:
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr
解决办法:
用oracle用户编辑dbstart文件
vi /opt/ora10/bin/dbstart
将ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle改为:
export ORACLE_HOME_LISTNER=$ORACLE_HOME
保存退出,ok

如果要通过web方式使用sqlplus,
需要在http://localdomain:1158/em/ 中先创建一个非dba用户,
再使用新增加的用户登录http://localdomain:5560/isqlplus/



10. oracle 10g字符集查看:
SQL> col value$ format a40
SQL> select name,value$ from props$;


11. 如果使用sqlplus查询表的中文是乱码,可以按照以下办法解决:
1)先查看数据库的字符集:
select name,value$ from props$ where name like 'NLS_CHAR%';
显示如下:
NAME VALUE$
------------------------------ ----------------------------------------
NLS_CHARACTERSET AL32UTF8

2)在终端中设置NLS_LANG的值和数据库一致:
export NLS_LANG=american_america.AL32UTF8
再登录sqlplus就不会有乱码了。
其原理是保持客户端和服务器端字符集一致。


3)可以编辑 bash_profile 文件进行永久设置
vi .bash_profile
加入以下语句:
export NLS_LANG=american_america.AL32UTF8

字符集的设置要注意,如果设置错了是登录不了sqlplus的。
通常不建议永久设置。另外,使用web方式是不错的选择。


再重新登录sqlplus:
sqlplus /nolog
conn /as sysdba ---以管理员身份登录
conn user/password@sid ---以其他用户登录
(登录不要使用 sqlplus "user/password as sysdba",这样会报错,按照我上面的)


安装过程参考了
http://www.linuxidc.com/Linux/2008-05/12707.htm
http://wiki.ubuntu.org.cn/index.php?tit ... iant=zh-cn


一些教程忽略了许多细节问题,这是我使用后遇到的问题和已经解决的问题,希望可以帮到大家。
上次由 zzhui31 在 2010-10-29 9:31,总共编辑 4 次。
tamsun
帖子: 451
注册时间: 2006-07-07 21:07

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#2

帖子 tamsun » 2008-11-25 18:32

不错,顶一个。
哪天试试安装看。原来只装过express edition的。
头像
陶朱公
帖子: 44
注册时间: 2007-09-13 9:04
来自: china
联系:

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#3

帖子 陶朱公 » 2008-12-01 15:11

兄弟写的不错!顶顶!
============================

人无我有,于之; =
人有我无,夺之; =
人有我有,弃之? =

============================
blacksnow
帖子: 14
注册时间: 2008-06-14 13:31

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#4

帖子 blacksnow » 2008-12-08 14:34

请问必须要新建一个用户吗。
sudan
帖子: 46
注册时间: 2008-01-20 16:39

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#5

帖子 sudan » 2008-12-08 16:12

不錯,值
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#6

帖子 birdbird » 2008-12-13 20:01

谢谢lz.

开头加这句。
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien

注:
不过libaio包已经被libaio1替代了。
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#7

帖子 birdbird » 2008-12-17 21:24

关于/opt/ora10/bin/dbstart的说明

安装后如果直接运行这个命令不会启动sid。
需要在/etc/oratab中加入
tmp:/opt/ora10:Y
才能在dbstart中启动这个instace。
zzhui31
帖子: 40
注册时间: 2008-06-12 13:27

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#8

帖子 zzhui31 » 2008-12-18 13:02

birdbird 写了:关于/opt/ora10/bin/dbstart的说明

安装后如果直接运行这个命令不会启动sid。
需要在/etc/oratab中加入
tmp:/opt/ora10:Y
才能在dbstart中启动这个instace。
有时候起数据库的时候确实报过实例没有起来,很奇怪,难道跟这个设置有关?
在打开sqlplus的web管理后,通过页面上也能启动实例。
zzhui31
帖子: 40
注册时间: 2008-06-12 13:27

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#9

帖子 zzhui31 » 2008-12-18 13:04

blacksnow 写了:请问必须要新建一个用户吗。

是的。
zzhui31
帖子: 40
注册时间: 2008-06-12 13:27

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#10

帖子 zzhui31 » 2008-12-18 13:04

birdbird 写了:谢谢lz.

开头加这句。
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5 alien

注:
不过libaio包已经被libaio1替代了。
谢谢你的补充。
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#11

帖子 birdbird » 2009-01-02 17:59

谈谈oratab的作用吧

由来:
执行root.sh后,会生成/etc/oratab

用途:
此文件用来放数据库上创建的实例(可以是复数的)。
执行dbstart 时会查oratab文件的内容,实现自动启动。

文件内容:
cat oratab
...
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
...
关键的那句话:
------------------------------------------
$ORACLE_SID:$ORACLE_HOME:<N|Y>:

如果设了Y,那么
执行dbstart 时,此sid实现自动启动。
执行dbshut 时,此sid实现自动关闭。
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#12

帖子 birdbird » 2009-01-02 18:13

zzhui31 写了:
birdbird 写了:关于/opt/ora10/bin/dbstart的说明

安装后如果直接运行这个命令不会启动sid。
需要在/etc/oratab中加入
tmp:/opt/ora10:Y
才能在dbstart中启动这个instace。
有时候起数据库的时候确实报过实例没有起来,很奇怪,难道跟这个设置有关?
在打开sqlplus的web管理后,通过页面上也能启动实例。
oratab中定义的为自动启动。
通过web管理启动的,是手工启动。
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#13

帖子 birdbird » 2009-01-02 19:42

关于内核参数的补充(简要的,详细的话,自己google吧)
4. 修改内核参数
$sudo vim /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
预备知识
--------------------------
shm:share memory
linux的共享内存是按段(segment)管理的。
--------------------------

kernel.shmmax单位是byte.每个段的最大值。
是oracle的sga相关 最重要的参数。
1)kernel.shmmax要大于sga_max_size(oracle的sga的最大值),否则产生多段操作。性能下降。
2)kernel.shmmax 建议 大于 物理内存的1/2 或 2G。

kernel.shmmni 共享内存的最大段数。
如果按 kernel.shmmax要大于sga_max_size 设定,那么就是本机上oralce 启动的最大实例数。
(呵呵,一个实例只有一个sga!)
建议 4096

kernel.shmall 单位是页(page)。所有共享内存段的总和的最大值。
页是对段细分管理。这个有点搞。
段的管理中引入了虚拟内存的观念,所以这个值不是 物理内存的合计/页的大小。
同时,它应该大于 kernel.shmmax/页的大小。
建议 2097152

剩下的就用oracle的推荐值。
信号量,控制多个进程访问共享内存的锁。
kernel.sem=250 32000 100 128

每个进程的最大开文件数。
fs.file-max = 65536

进程使用的端口号
net.ipv4.ip_local_port_range = 1024 65000
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#14

帖子 birdbird » 2009-01-02 20:02

用户和组的补充

oinstall组 为安装,管理oracle软件 的组。
dba组为 oracle的 dba 的组。
nobody的话,请参照如下。
-----------------------------------
権限を付与されていないユーザー
権限を付与されていないユーザー(nobody)がシステムに存在することを確認する必要があります。nobodyユーザーは、インストール後、外部ジョブ(extjob)実行可能ファイルを所有する必要があります。
-----------------------------------
remark:
ref from oracle.co.jp
翻訳すれば、おそらく、元の意味はなくなると思いますが...

创建用户,并加入oinstall 和 dba组
useradd -g oinstall -G dba -d /home/oracle -m -s /bin/bash oracle
birdbird
帖子: 18
注册时间: 2008-12-09 14:11

Re: ubuntu 8.10 安装Oracle 10G 企业版综合指南

#15

帖子 birdbird » 2009-01-03 10:47

关于监听器的补充。
---------------------
lsnrctl start
lsnrctl stop
lsnrctl status
---------------------
对应文件在 $oracle_home 下的network/admin/listener.ora
如果不修改此文件的话,系统会自动加载所有启动实例的listener。
如果修改此文件,即添加了某个实例的listener,则系统不进行自动加载。
回复