在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
------

技术人员如何”正确”的浪费时间?

iPhone产品用户要浪费时间,你就应该这样做:买个有锁的 iPhone ,每天刷几百次威锋网等待越狱或解锁,看到新 App 就安装,程序提示更新立刻升级;有新的固件(哪怕是 β 版)就压制不住升级的欲望;每次 WWDC 提前几个礼拜就关注,坚持看完所有 Keynote 和文章,然后到 Twitter 或是微博发表评论,再在微博上收听苹果产品有关的 ID…

Linux 操作系统用户如果要浪费时间,你就应该这样做:编译一个”更快”的内核;通过源代码编译 Firefox / Chromium ;反复调整字体;不停的美化桌面;闲着没事就跑一下APT更新一下程序;和 Windows 用户打嘴仗;

Windows 操作系统用户如果要浪费时间,你就应该这样做:安装杀毒软件并且按照提示更新;定期扫描病毒和木马;安装个360,不停根据提示更新软件,优化系统,每天查看开机速度击败了全国多少的电脑;重新安装操作系统;跟 Linux 用户和 Mac 用户打嘴仗;

开发人员如果要浪费时间,你就应该这样做:不停的寻找一个更趁手的编辑器,反复尝试不同的配色;尝试最新的语言;买个更好的显卡”挖矿”–bitcoin;和其它语言用户打嘴仗;

Mac 用户如何浪费时间?在Mac上跑一个Windows 虚拟机,再跑一个 Linux 虚拟机;上网购物用Windows,写代码用Linux;Mac OS X?不用。

恭喜你,这些都是”正确”浪费时间的办法。

修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets

新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。

vi /etc/sysctl.conf
编辑/etc/sysctl.conf文件,增加三行:

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

说明:
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

再执行以下命令,让修改结果立即生效:
/sbin/sysctl -p

用以下语句看了一下服务器的TCP状态:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回结果如下:
TIME_WAIT 300
CLOSE_WAIT 10
FIN_WAIT1 8
FIN_WAIT2 14
ESTABLISHED 835
SYN_RECV 4

效果:处于TIME_WAIT状态的sockets从原来的1000多减少到300左右。处于SYN_RECV等待处理状态的sockets为4,原来的为50~300。

实用的Linux/Unix快捷键大汇总

实用的Linux/Unix快捷键大汇总,近期在工作中发现,许多同事,尤其是我们的开发者,基本不会用Linux/unix下的快捷方式,严重影响工作效率,所以特撰写此文,每个用法后我会详细注释。

下述所有命令在Linux/unix的shell下有效,这里以bash为主。如有出入,以你自己的服务器为准。本文所指的Linux主要指RHEL/CentOS,unix指的是FreeBSD,这也是服务器中用得最多的版本。

Ctrl + a 切换到命令行开始

这个操作跟Home实现的结果一样的,但Home在某些unix环境下无法使用,便可以使用这个组合;在Linux下的vim,这个也是有效的;另外,在windows的许多文件编辑器里,这个也是有效的。 Continue reading 实用的Linux/Unix快捷键大汇总

为什么Linux到现在也不能双击安装软件

看最近互联网上的评论,有一位仁兄矢志不渝的重复“世界上最差的系统就是linux,双击不能安装软件”,而对于该评论的观点众多,但是真正正确的确极少。综合来看,广大网友尤其是喜欢评论的盆友对Linux理解的还比较少,而且很多都是跟Windows做比较(当然这里我承认高手也大有人在),所以我想在这里有必要说一下为什么Linux到现在也不能做到双击安装软件。

首先要说一下,很多Linux的发行版例如Ubuntu或者CentOS、Fedora等,已经早就可以双击安装自己发行版的安装包了,例如deb、rpm等。
那么为什么现在大部分软件还是需要下载一个tar.gz然后./configure/make/make install繁琐的命令安装呢?

其实,Linux下跟Windows的软件发布有一个最大的不同就是Linux下大部分软件都是开源的,只提供源码下载,不提供编译好的二进制下载。所以,上面的三个命令实际上是编译一个软件,然后拷贝到系统对应目录,准确来说不是安装。

但是为什么非要这三个命令,而不是双击之后自动执行上述三个命令呢? Continue reading 为什么Linux到现在也不能双击安装软件

在Centos上安装独立运行的subversion

市面上大多是使用Apache来建立一个仓库,但是,不用apache的项目其实是很多的,所以建立一个独立运行的Subversion仓库是很有必要的,建立一个独立运行的Subversion仓库相当简单,几步操作就可以完成。

首先当然是安装:
yum install subversion

接下来创建一个系统用户并修改它的口令:
useradd svn
passwd svn

然后我们切换到这个用户,创建仓库目录:
su svn
cd
mkdir repositories

对仓库目录进行初始化,创建第一个项目:
cd repositories
svnadmin create myproject

然后,让我们修改一下这个项目的参数,将conf目录中的svnserve.conf配置文件中被注释掉的两项修改如下,很显然,第一项的意思是允许验证用户写入,第二项的意思是指定密码验证方式:
auth-access = write
password-db = passwd

然后我们添加用户,修改conf目录下的passwd文件就可以了,这个文件中,用户名和密码都是明文的,例如我们添加一个用户gfw,密码是fuckfbx,格式应该如下:
[users]
gfw = fuckfbx

然后就很简单了,运行这行命令,或者将这行命令加入rc.local以便开机启动:
svnserve -d -r /home/svn/repositories

CentOS称RHEL 6.1发布不会影响CentOS 6进度

在RHEL 6.1发布之后,CentOS团队也第一时间得知了这个消息。很多CentOS的关注者担心这次的新发布是否会影响CentOS 6的进度,因为RHEL 6在2010年11月发布,至今已经经过了6个月的时间,而CentOS 6迟迟没有发布,让CentOS的关注者们十分担心。

RHEL 6.1发布的当天,CentOS管理组的Karanbir Singh在其博客上表示,RHEL 6.1的发布不会影响CentOS的现有开发进度。团队将仍然按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。

Karanbir还表示,如果这段时间内RHEL 5.7发布了,那么也没有关系,因为CentOS 5的进程和CentOS 6的进程已经完全分离,各自进行,互相之间不会形成干扰。

这对于期待CentOS 6的朋友们无疑是个好消息!感谢CentOS团队无私的奉献。

 

微软 Hyper-V 软件将支持 CentOS

虽然长期以来微软一直是Linux社区的公敌,但如今软件巨人却试图拓展一直由Linux统治的Web server市场。

今天微软宣布它的虚拟化软件Hyper-V将正式支持CentOS Linux,即基于RHEL的社区发行版。用户可以使用最新版本的 CentOS 部署微软的 Hyper-V 系统。CentOS 是第三个正式支持微软 Hyper-V 的 Linux操作系统,另外两个是 Red Hat Enterprise Linux 和 Suse Linux Enterprise Server。

微软现在也注意到CentOS在Web服务器市场的受欢迎程度,它宣布Windows Server2008 R2 Hyper-V将能运行CentOS,以巩固服务器合作伙伴的信心,降低在Windows Server Hyper-V上Windows + Linux混合架构的成本和复杂程度。

微软开源解决方案经理 Sandy Gupta 透露选择 CentOS 是因为 CentOS 是最多网页寄存公司使用的操作系统。

微软近期似乎愈来愈看重开源系统的重要性,这次微软的举动除了再一次证明开源操作系统在商用方面的影响力及重要性之外,微软似乎也明白了要令其所提供的数据中小方案更完善,便要扩充其支持的操作系统,包括 Windows、Linux 以及 Mac OS。

 

CentOS(RedHat)命令行修改主机名(主机别名)

Linux命令行修改主机名和主机别名。

主机名:通常意义上的主机名,标识你的主机。
主机别名:控制台提示符处的名称,例如主机别名为”node50″,则root控制台提示符为[root@node50 ~]#
修改主机名必须同时修改2个文件,即这两个文件内的主机名要完全一致。

1.修改文件 /etc/sysconfig/network

将HOSTNAME的值修改为你要设置的主机名即可,例如将localhost.localdomain替换成node50

错误纠正:这里一定要将主机名设置为xxx.xxx的网络主机名形式,如 node50.localdomain,因为不正确的网络主机名会导致sendmail在发送邮件的时候出现错误,甚至无法启动。

2.修改文件 /etc/hosts

找到127.0.0.1 localhost.localdomain localhost,最前面的127.0.0.1为本地回环地址,不需要更改;localhost.localdomain修改为你要设置的主机名,必须跟之前network文件内的一样;最后面的localhost为主机别名,即控制台提示符前的名称。

错误纠正:这里一定要将主机名设置为xxx.xxx的网络主机名形式,如 node50.localdimain

具体原因同上。

3.执行 reboot 命令重新启动系统。

Centos绑定多个IP的方法及批量绑定IP的方法

租用美国服务器的客户如果选择linux类的操作系统,一般都会选择性能比较稳定的centos做为首选,而美国服务器一般都会提供多于1个以上的IP地址,那么centos下如何绑定IP呢?如果有很多IP需要绑定,那么centos下如何批量绑定IP呢?

Centos 绑定单个IP
单个IP或者不连续IP的绑定
依次运行命令:
cd /etc/sysconfig/network-scripts
cp  ifcfg-eth0 ifcfg-eth0:0
vi  ifcfg-eth0:0
打开文件后如下。

注意:每增加一个IP创建一个文件,如第二个为:cp  ifcfg-eth0 ifcfg-eth0:1
========================分割线================================
# Broadcom Corporation NetXtreme BCM5715 Gigabit Ethernet
DEVICE=eth0:0      #此处添加:0,保持和文件名一致,添加多个IP依次递增
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:40:D0:xx:xx:xx   #此处为网卡MAC地址切勿修改
IPADDR=85.25.xxx.xxx                  #此处修改为要添加的IP
NETMASK=255.255.255.128
ONBOOT=yes

=========================分割线===============================
保存退出  (保存退出简洁命令: 摁ESC键 然后摁大写键 然后摁 ZZ)
然后重启网络让IP生效: service network restart

批量绑定连续的IP

在/etc/sysconfig/network-scripts下创建一个range文件
比如,vi /etc/sysconfig/network-scripts/ifcfg-eth0-range0
加入以下内容:
====================================

DEVICE=eth0
BOOTPROTO=static
#网卡地址要和原始的一致
HWADDR=00:40:D0:xx:xx:xx    #Mac地址
IPADDR_START=xx.xx.xx.xx     #起始IP
IPADDR_END=xx.xx.xx.xx       #结束IP
CLONENUM_START=1
NETMASK=255.255.255.248  #子网掩码
ONBOOT=yes
TYPE=Ethernet

====================================
CLONENUM_START — 网络克隆接口的启始号. # eg “1″  生成的网络接口会从 eth0:1开始。
然后重启网络让IP生效: service network restart

这样就完成了centos下批量绑定IP的任务。