Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103682422
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-04 13:14:28

作者: yreqab 出自:
之前一直觉oracle复杂,不如mysql简单好用(虽然mysql也没有学好)。工作需要在机器上装oracle服务器,学习使用。oracle设计思路和mysql差别巨大,其间参考了众多帖子,终于搞好了。

安装oracle 10g
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
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/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环境可以显示中文,如果不行:
/usr/lib/jvm/java-6-sun/jre/lib/fonts 下面建立个 fallback的文件夹 拉一个中文字体进去就可以了。

7. 安装

用oracle用户登录X

进入安装文件目录,
./runInstaller -jreLoc /usr/lib/jvm/java-6-sun/jre/

采用默认设置,
选择创建一个数据库,全局数据库名:tmp,SID:tmp

设置一些管理用户的密码:
用户:sys, system,sysman, dbsnmp
密码:aaron

最后:sudo /opt/ora10/root.sh
一切默认即可。

安装完成后,oracle自动启动。
注销oracle用户,用系统主用户(我是aaron)登录,可以访问
Enterprise Manager 10g Database Control URL:


用户名:sys
密码:aaron
链接身份:sysdba

启动数据库
安装好oracle之后,不会每次自动启动。启动过程是:
1. 切换到oracle用户:su - oracle
2. 启动lisener: $ORACLE_HOME/bin/lsnrctl start
3. 启动db: $ORACLE_HOME/bin/dbstart

启动问题:
Failed to auto-start Oracle Net Listene using /ade/vikrkuma_new/oracle/bin/tnslsnr

解决方法:
修改$ORACLE_HOME/bin/dbstart的78行为
ORACLE_HOME_LISTNER=$ORACLE_HOME

4. 启动em
touch /var/lock/oracle
$ORACLE_HOME/bin/emctl start dbconsole

问题:
Timezone mismatch: The agentTZRegion value (GMT) in
/opt/ora10/aaron-pc_tmp/sysman/config/emd.properties
does not match the current environment TZ setting().
The dbconsole cannot run with this mismatch.

解决方法:
$emctl resetTZ agent
$emctl start dbconsole
就可以启动成功了。

经过1-3步之后就可以通过sqlplus连接数据库了,如果需要在浏览器上访问,需要启动第4步。

5. 用sys用户登录之后startup实例,才可以用其他用户登录
$su - oracle
$sqlplus "sys/aaron as sysdba"
SQL>startup
SQL>quit
$sqlplus "staimsp/staimsp"

启动脚本
oracle占用资源比较多,不设置默认启动,写启动脚本,用的时候再启动。

-------------------------------------------------------------
#!/bin/bash
#name: runoracle.sh

if [ $UID != 1002 ]
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:"
$ORACLE_HOME/bin/lsnrctl start
$ORACLE_HOME/bin/dbstart
touch /var/lock/oracle
$ORACLE_HOME/bin/emctl start dbconsole
echo
echo "OK!"
;;

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

restart)
$0 stop
$0 start
;;

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

esac
exit 0
-------------------------------------------------------------
脚本放到/home/oracle/bin中,用oracle用户启动
$su - oracle
$runorcale.sh

启动之后用sys用户startup数据库:
$sqlplus "sys/aaron as sysdba"
SQL>startup

然后就可以用了。

QA
1. 导入中文数据乱码问题解决方法:
$vim /home/oracle/.bashrc
增加:
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
即可。
阅读(1115) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~