在CentOS上安装Oracle11g

1,修改centos 的release文件以便oracle识别,并关闭SElinux
vi /etc/redhat-release
Red Hat Enterprise Linux AS release 5 (Taroon)

2,安装没有默认安装的一些包,在Oracle安装过程中会有些提示,但最好先装上。

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11

3,创建系统用户:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -g oinstall -G dba oracle
passwd oracle

4,创建数据库安装目录,赋权:
mkdir -p /u01/app/oracle/product/  //设置oracle的安装目录
chown -R oracle:oinstall /u01  //设置安装目录所属的用户和组
chmod -R 775 /u01

5,修改系统参数:
vi /etc/sysctl.conf
在最末尾的地方加上:
kernel.shmall = 2097152 //固定大小为2M
kernel.shmmax = 2147483648 //一般设置为物理的一半
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 262144

sysctl -p

6,修改系统limits.conf文件:
vi /etc/security/limits.conf 在末尾添加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

7,修改login配置
vi /etc/pam.d/login 在末尾添加
session required /lib/security/pam_limits.so
session required pam_limits.so

8,修改/etc/profile文件,在末尾添加
if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

9,修改Oracle用户的/home/oracle/.bash_profile 注意路径必须和安装目录一样
# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
export ORACLE_BASE=/u01
export ORACLE_HOME=$ORACLE_BASE/app/oracle/product/11.2.0/dbhome_1
export ORACLE_HOME_LISTNER=$ORACLE_HOME
export ORACLE_SID=jmj
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

10,解压缩文件,./runInstaller 即可,当然,也可以远程打开VNC进行安装。

11,设置Oracle开机启动,编写一个脚本:oracleinit.sh

在这个脚本之前,有一点点准备工作,需要将环境变量参数加入到启动停止脚本:dbstart dbshut
在dbstart 和 dbshut 找到此段话,在最前端
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1
//需要将此处的 ORACLE_HOME_LISTNER=$1 修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME
------
#!/bin/bash
# description: Oracle11g Server
# processname: oraserver  

RETVAL=0
prog="oraserver"  

ORACLE_HOME=/app/oracle/product/11.2.1/dbhome/
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
    echo "Oracle11g cannot start:Cannot find dbstart..."
    exit
fi  

start() {
    echo "Starting Oracle11g Server..."
    su - oracle -c "$ORACLE_HOME/bin/dbstart"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
    su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
    return $RETVAL
}
stop() {
    su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
    echo "Stoping Oracle10g Server..."
    su - oracle -c "$ORACLE_HOME/bin/dbshut"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
    return $RETVAL
}  

restart() {
echo "Restart Oracle11g Server"
stop
start
echo
}  

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 2
esac  

exit $RETVAL
------

Opening Windows to a Wider World

Opening Windows to a Wider World

这个广告词我觉得写得不错,如前述,在FreeBSD下频繁的读写ext3分区有导致分区dirty的可能,所以我把接入磁盘阵列的操作系统换成了Centos5.5,使用LiveCD灌到U盘,然后通过VNC,局域网网络安装,没有图形界面,速度很快,十几分钟就欧了,这台笔记本配置很低,一枚VIA的800Mhz处理器,2G内存,80G硬盘,我最中意它的是因为它作为一台笔记本,是没有风扇的~大大减少了物理损坏的可能。装好Centos,yum了一个samba3x上去,mount上磁盘阵列,修改好配置文件,发现总是启动failed,我英明的查看了一下samba日志,然后上网搜了搜~

[2011/04/01 15:28:20,  0] smbd/server.c:main(1275)
smbd version 3.3.8-0.52.el5_5.2 started.
Copyright Andrew Tridgell and the Samba Team 1992-2009
[2011/04/01 15:28:20,  0] lib/messages_local.c:messaging_tdb_init(96)
ERROR: Failed to initialise messages database: Permission denied
[2011/04/01 15:28:20,  0] lib/messages.c:messaging_init(204)
messaging_tdb_init failed: NT_STATUS_ACCESS_DENIED

搜索的结果是,出现这些个错误的原因林林种种,什么数据库错误,编码问题,但很明显都不是我要的结果,就在我准备放弃的时候,我看见有人在其它的问题上抱怨SElinux……电光火石间,我意识到了这个问题。

究其根本,是因为以前在安装Centos服务器的时候,考虑到使用Oracle数据库的可能,都装上了图形界面,而且我习惯性的在装好之后把SElinux和iptables都禁用掉,这次只安装了命令行,木有安装图形界面,于是,SElinux和iptables都在那运行着……找到了问题,解决起来就很简单,把SElinux直接disable掉(/etc/sysconfig/selinux),然后chkconfig iptables off,chkconfig ip6tables off,reboot。

终于可以顺利的启动Samba服务,接下来进行配置,参考原来mybookworld中的配置文件,简单的说呢就是,有一些目录大家可读可写,有一些目录大家可读不可写,有一些目录大家不可读不可写,有一些目录我可读可写,嗯,还没晕的话说明你逻辑思维能力很强。

smb.conf配置如下:

[global]
server string = MyBookWorld Version %v
netbios name = mybookworld
workgroup = WORKGROUP
interfaces=192.168.151.5/24 127.0.0.1/8
security=user
smb passwd file=/etc/samba/smbusers
guest account=www
log file=/var/log/log.%m
max log size=50
dns proxy=No
unix charset = utf8
lock directory=/var/lock
pid directory=/var/lock
use sendfile=Yes
map to guest = Bad User
create mask = 755
map hidden = Yes

[dummy-1]
include=/etc/samba/shares.inc

其中,包含了一个配置文件,shares.inc,这个文件中含有所有的共享目录设置,配置如下:

[PRIVATE]
path=/shares/PRIVATE
force user=www
valid users=kenbaby
write list=kenbaby

[MOVIE]
path=/shares/MOVIE
force user=www
guest ok=Yes
valid users=kenbaby www
write list=kenbaby
read list=www

[PUBLIC]
path=/shares/PUBLIC
force user=www
valid users=www kenbaby
write list=www kenbaby
guest ok=Yes

这个配置文件很简单,英文过了四级的都能看懂,第一个PRIVATE目录,只允许kenbaby进行读写,写入的文件权限赋给www用户,第二个MOVIE目录,所有用户都可以读取,但只有kenbaby可以写入,同样,写入的文件权限赋给www用户,第三个目录PUBLIC,所有的用户都可以进行读写。将写入的文件权限赋给www用户,很好的保证了文件在磁盘上的权限统一在一个用户下,前面的smb.conf配置文件中,已经将www用户指定为来宾用户,也就是说,在Windows PC访问共享的时候,默认的Guest用户就能够直接访问,不用输入用户名和密码了。

最后一步,添加系统用户和samba用户,首先是添加系统用户:

groupadd www
useradd www -g www
groupadd kenbaby
useradd kenbaby -g kenbaby

系统用户无需初始化密码,这样它们也无法通过shell登入操作系统。然后我们添加samba用户,由于www用户是指定的来宾帐户,不需要设置密码,我们只需要为kenbaby用户添加密码即可。

smbpasswd -La kenbaby

添加完成后,重新启动smb服务即可访问共享啦!当然,如果要使用netbios name,还需要启动nmbd服务(/etc/init.d/nmbd restart)

Mysql error

##########custom
max_connections = 1000
wait_timeout = 5
skip-bdb
skip-innodb
tmpdir = /disk2/tmp/

如果不指定mysql的tmpdir,且默认的/var/tmp目录空间不足,那么一旦自动脚本出现问题,就会把mysql卡住,继而出现更多错误。我完全有理由相信Oracle有同样的问题,特别是在reset重启之后,而他们几乎从来没有修复过。

 

Tomcat集群和Oracle EMS…..

这两天一直在搞tomcat的集群,网络上很多资料都是过时的,还有很多是错误的,不过没关系,我一般不看中文资料,一是翻译不到位,二是那些SB根本不 知道怎么去翻译一些专有名词,就像洋人始终理解不到成语的意思一样,tomcat的documents里面有一个简单的clustering,先用上,因 为javagroups使用的也是多播,和tomcat自带的这个是一个原理,在网络良好的状态下,这种方式应该没什么问题,虽然是执行的会话all to all copy,tomcat也说了,下一个发行版本会推出适用于大型集群的session复制体系,5.5是beta的,我想是不是要等到6.0哦。
———————————————–
In this release of session replication, Tomcat performs an all-to-all replication of session state. This is an algorithm that is only efficient when the clusters are small. For large clusters, the next release will support a primary-secondary session replication where the session will only be stored at one or maybe two backup servers. In order to keep the network traffic down in an all-to-all environment
———————————————-
总而言之呢,昨天和今天测试的集群看起来就像下面这样,不过呢,我不确定是不是每一个程序都能在上面正常的运行,而且分别是在redhat9和freebsd上面。

Oracle还是有问题,我想可能是我使用了额外的JDK1.1.8导致了错误,虽然表面上看起来一切都是正常的……找不出来问题所在就是最大的问题,下午开会的时候33打电话来了,没接,不知道她找我干嘛呢。

配好了Tomcat和Apache

得来全不费功夫啊,Apache2.1里面专门提供了给Tomcat的ajp接口,三行配置就搞定了Apche对Tomcat的代理,而且可以通过 proxy pass进行负载均衡,完美啊,而且实现http请求的负载均衡,也是很简单的事情,2.1里面更加入了多种cache的支持,包括磁盘缓存,内存缓存, 我在想,2.1一旦出了正式版,squid还有用武之地么?

Reffer:http://tomcat.apache.org/connectors-doc/proxy.html
——————————–
The AJP proxy is a new module based on the standard Http proxy it uses AJP instead of HTTP.
<Location />
ProxyPass ajp://localhost:8009/
</Location>

下面需要配置的就是最困难的oracle了,我还得再去读几遍国外各个网站上的资料了来……中文资料不可信,东抄抄西抄抄,结果TMD全部是错的。

 

重拾FreeBSD

我早料到有这么一天,阿金要我配置unix服务环境,重拾FreeBSD,我已经落后了,小红魔它已经升级到了6.0,5.0的终结版本是5.4,java不适用BSD平台已经成为过去,freebsd甚至有一个java project:http://www.freebsd.org/java/,可是我疑惑了,用6.0还是5.4呢?
————————————
This is the official port of Sun’s Java&#8482; Development Kit for FreeBSD. No known significant bugs exist at this time, but there are no guarantees of usability. However, many commercial companies rely on this port, so it should be safe to use.
————————————

之所以使用freebsd的原因:因为它是最正统的unix,不含有那些什么特有的linux命令,aix命令,solaris命 令等等…..就像吃肉吃多了吃咸菜一样爽口的感觉,我是很不愿意在日记里面提到亦彩的,所谓出其不意,攻其不备,亦彩的服务器架构于 freebsd5.3+apache2+php4+mysql4.1+icecast2+proftpd1.2+openssh4,比较难配置的就是 icecast,其他的还是比较简单,这次的任务有了新内容,要配置oracle10,java,tomcat,有挑战性,我喜欢!不过就是不知道我能不 能忍受256M内存下的oracle运行速度,oracle的标准配置是4G运行内存,看起来只有曙光的机器能担当这个重任……