ORACLE安装前期:
在这个阶段, 我们要作一些实质的东东了. 首先要建立oracle的用户与用户组:
# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
# usermod -g nobody nobody
我是把oracle直接安装在了oracle用户下的, 所以没有再另建立目录与设置目录权限, 要不然, 请建立你想安装的oracle的目录, 然后把权限设置给oracle用户, 组设置给oinstall.
设置一下oracle的.bashrc, 添加如下参数:
export GST_ID3_TAG_ENCODING=[GBK,GB13000,UTF-8]
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export ORACLE_BASE=/home/oracle/app/oracle
export ORACLE_HOME=/home/oracle/app/oracle/product/11.1.0/db_1
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=orcl
export ORACLE_TERM=gnome-terminal
export LD_LIBRARY_PATH=/lib:/usr/lib:$ORACLE_HOME/lib
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh:en_CN:en
export NLS_LANG="SIMPLIFIED CHINESE"_CHINA.UTF8
当 然这些目录的路径, 请自己根据自己的喜好来设置, 那个语言编码部分, 请参考你自己的客户端使用的语言编码, 我是设置成UTF8的, 后面会说到这个的用处. 另, 网上说要设置 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib/stubs / 而根据实际情况, 我发现这个是一定不能设置的, 要不然, 你会发现系统的比如ls啊之类的命令都不能使用了, 原因好像是11g会很神秘的把所有系统命令所用到的系统库, 都放一份在自己的lib目录下, 结果系统命令们要用到库时就会跑oracle的lib下找, 本来这也没什么, 就浪费一些硬盘空间吧, 但, 那些库居然有错, 造成这些命令根本不能用. 所以千万不要设置这个参数.
如果你现在直接用 su oracle 来运行安装程序, 你就会很惨的发现, 你的显示器居然是不满足oracle要求的, 通不过它的安装程序的检查, 这是怎么会事呢? 难道要登出, 然后用oracle登录来安装吗? 当然这也是一个解决办法, 不过这个办法太花时间了. 其实你只要运行下面这些命令就可以了.
# su
# xhost +
# exit
# su - oracle
$ export DISPLAY=:0.0
这段命令实际上是把xserver的权限管理关了. 让其它用户也可以使用你登录时用的xserver.
安装oracle:
这么一大段步骤后, 终于要安装了. 当你解完那个zip, 然后很高兴的 ./runInstaller 后, 你看见了一个都是框框框的很黄很暴力的界面, 于是你赶紧把它关了, 嗯,嗯.
这 个问题就是与java有关了, 你没有提供java虚拟机那些中文字体. 网上的这方面的中文资料都是10g的, 而虚拟机用的都是1.4, 如果你前面安装java时, 用的是apt-get install java的话, 那安装的应该是java1.6, 1.6与1.4的字体设置是不一样的, 而且你如果光设置了系统里的java的字体, 那安装是会显示出我们漂亮的中文, 但之后的数据库创建, 你又会看到框框框的很黄很暴力的界面了, 那次, 你要是关了, 你的劳动就白费啦.
这儿, 我们要分两个步骤来, 第一建立字体文件, 你可以找一个你喜欢的中文字体, 然后把它拷贝到/usr/share/fonts/zh_CN/TrueType中, 并命名为zysong.ttf. 第二步进入/usr/lib/jvm/java-6-sun/jre/lib下, 你就会看到很多的fontconfig, 打开 fontconfig.RedHat.properties.src , 找到
filename.-misc-zysong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
这行, 看看是不是 /usr/share/fonts/zh_CN/TrueType/zysong.ttf , 如果不是, 那改为这个. 然后找
awtfontpath.chinese-cn-iso10646
这行, 看看是不是 /usr/share/fonts/zh_CN/TrueType , 如果不是, 也改为这个.
可能要重启系统, 我方面我不是很清楚, 反正我是重启了, 然后运行 ./runInstaller 那个很黄很暴力的界面就变成了和谐的中文界面了.
你 如果很欢快的直接用其的默认设置安装了一个数据库的话, 那么, 祝贺你, 你可能要重装oracle了, 因为, 你会发现, 在你在客户端显示出来的数据库的中文居然你都不认识了. 那是因为数据库里的中文的编码与你的客户端的编码可能不一样, 当然只是可能, 如果是一样的, 那就当我没说. 一般来说, 客户端会的编码会设置为
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh:en_CN:en
export NLS_LANG="SIMPLIFIED CHINESE"_CHINA.UTF8
如 果你是如我一样设置了, 那么在安装oracle时, 请也设置一下数据库的编码格式为utf8. 当然, 你用其它编码的话, 也请安装库时将其数据库语言设置为你现在客户端的编码格式, 不过个人还是推荐UTF8, 那比什么 ZHS16GBK 什么的好多了, 而且发现一个事实是, 在LINUX上与其去改客户端的编码, 还不如直接重装数据库, 改数据库的编码, 特别是在什么数据都没有的新数据库服务器上呢. 当然如果您是牛人, 知道如何在数据库端为 ZHS16GBK时, 怎么设置客户端的话, 请给我来信(havasupai@gamil.com), 我会感激不尽的.
安装完了, 请使用一下sqlplus 试试你的中文是不是环境是不是好的.
安装后:
创建自启动脚本, 本脚本来自 wiki.ubuntu.org.cn 中孙高勇先生的 Oracle 10g for ubuntu 安装指南 这个文章.
* 创建自启动脚本
创建 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
这里, oracle的安装就都结束了, 这是我花了N个星期安装了N遍oracle 11g的心得, 其中大部分时间用于解决很黄很蓝图的框框框, 与客户端编码上, 如果你照本文作了还没有那个中文问题, 请给我发信(havasupai@gmail.com), 或这儿回复也行, 我会很感谢的
好了,至此,Oracle 11g就安装完了。重新登录后,你就可以使用oracle的命令了。
(ORACLE_SID=orcl 是你安装时候设置的值)
oracle@hardy:~$ export ORACLE_SID=orcl
oracle@hardy:~$ sqlplus '/as sysdba'
SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 5 02:39:27 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>connect /as sysdba
Connected to an idle instance.
SQL>startup 启动数据库命令。
.
ORACLE instance started.
Total System Global Area 418484224 bytes
Fixed Size 1300324 bytes
Variable Size 281020572 bytes
Database Buffers 130023424 bytes
Redo Buffers 6139904 bytes
Database mounted.
Database opened.
oracle@hardy:~$ export ORACLE_SID=orcl
oracle@hardy:~$ emctl start dbconsole 启动EM,地址为https://yourip:1158/em/console.这样你就可以通过IE登陆了。不过界面为乱码。呵呵!!解决方法自己在网上找吧!!
2.确认安装成功
Linux下的Oracle在安装结束后是处于运行状态的。运行top –u oracle可以看到以Oracle用户运行的进程。在图形化界面下,运行$ORACLE_HOME/sqldeveloper/sqldeveloper.sh可以出现Oracle自带的免费Oracle管理客户端SQL Developer。试着连接刚安装的Oracle,连接成功。
这时需要重启服务器,看服务器重启后,Oracle是否可以正常启动。以Root用户运行reboot命令可以重启Linux,重启完成后,默认情况下Oracle并不像Windows中的Oracle那样注册成服务,随机器一起启动的,所以需要手动敲入命令来启动。启动方式:以oracle用户登录运行以下语句:
1,进入sqlplus:
sqlplus /nolog
2,以sysdba的身份连接到数据库,并启动Oracle数据库引擎:
SQL> conn /as sysdba
SQL> startup
3,退出sqlplus,运行Listener
SQL> exit
$ lsnrctl start
这样数据库的TNS也启动了,可以通过网络连接数据库了。一般情况下就启动这两个就够了,如果想用Oracle提供的EM来管理Oracle的话还需要启动EM控制台,运行如下命令:
$ emctl start dbconsole
这样就可以通过https://servername:1158/em/console来访问EM控制台了。
这里我在实际操作中运行sqlplus出现了错误,大致如下:
sqlplus / as sysdba
sqlplus: error while loading shared libraries: /u01/app/oracle/product/11.1.0/db_1/lib/libnnz11.so: cannot restore segment prot after reloc: Permission denied
网上也有很多人遇到了这个问题,原来是SELinux在作怪,我采用的解决办法是禁止掉SELinux:
更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled,然后重启服务器。
好像这个办法不是很好,也有说的解决办法是使用chcon 命令
示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so
另外我在启动Listener时也报错TNS-12555: TNS:permission denied
后来网上搜了下,发现是oracle用户就无法进入/var/tmp/.oracle文件夹,方法很简单,执行:chmod 777 /var/tmp/.oracle 之后就ok了.
还有,我在启动EM控制台的时候又遇到了错误:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name.
设置了这个变量后(运行export ORACLE_UNQNAME=xxxx实例名)后,再启动EM控制台,又出现了新的错误:OC4J Configuration issue. /u01/app/oracle/product/11.2.0/db_1/oc4j/j2ee/OC4J_DBConsole_xxxx not found.没有这个文件?去查了一下,确实是没有这样一个文件存在,怎么办呢?其实很简单,运行:
emca -config dbcontrol db
根据向导重新配置一下就可以了。
3.配置Oracle为开机自启动
虽然说Oracle作为服务器不会经常关机,但是偶尔重启一下,每次都要去手动启动Oracle还是太麻烦了,希望的是能够像在Windows中一样,每次开机的时候自动启动Oracle,只需要将Oracle配置为Linux的服务就可以了。操作如下:
1,以root用户建立/etc/rc.d/init.d/oracle11g脚本文件,内容如下(环境变量设置根据实际情况进行修改):
#!/bin/bash
#
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 11g, TNS listener, EM
#
#
#
# match these values to your environment:
ORACLE_BASE=/home/oracle_11/app
ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/db_1
ORACLE_SID=BRDWDEV
ORACLE_UNQNAME=BRDWDEV
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG
# see how we are called:
case $1 in
start)
su - oracle<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - oracle<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
2,以root用户执行以下命令
chmod 755 /etc/rc.d/init.d/oracle11g
chkconfig --add oracle11g
3, 重启服务
service oracle11g stop
service oracle11g start
这样在开关机的时候oracle自动启动和停止。
另外,还有说,需要修改/etc/oratab这个文件,将最后的N改为Y,如下:
xxxxTEST:/home/oracle_11/app/oracle/product/11.2.0/db_1:Y
最后,我们要测试一下这个自启动是否真的有效,重启一下服务器吧,过几分钟后,可以看到客户端可以正常连接到Oracle了。Oracle环境配置成功!