CentOS 7.5离线安装Oracle 11gR2


操作系统:CentOS 7.5 64bit,安装方式为gnome Desktop,附加系统工具以及兼容X Window安装包
Oracle版本:11gR2

Oracle11gR2官方文档链接

安装系统建立默认用户的时候建立非oracle的账号。
由于是离线安装,使用ssh登录,上传CentOS DVD镜像文件,上传Oracle安装文件,之后直接操作服务器键盘鼠标进行安装。

1. 通过sftp上传文件
/Users/xieshaohu/Downloads
put /Users/xieshaohu/Downloads/CentOS-7-x86_64-DVD-1804.iso
put /Users/xieshaohu/Downloads/linux.x64_11gR2_database_2of2.zip
put /Users/xieshaohu/Downloads/linux.x64_11gR2_database_1of2.zip

2. 修改Linux为本地源
mkdir /media/CentOS
mount -t iso9660 /media/CentOS-7-x86_64-DVD-1804.iso /media/CentOS
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.old
mv /etc/yum.repos.d/CentOS-CR.repo /etc/yum.repos.d/CentOS-CR.repo.old
mv /etc/yum.repos.d/CentOS-Debuginfo.repo /etc/yum.repos.d/CentOS-Debuginfo.repo.old
mv /etc/yum.repos.d/CentOS-fasttrack.repo  /etc/yum.repos.d/CentOS-fasttrack.repo.old
mv /etc/yum.repos.d/CentOS-Sources.repo /etc/yum.repos.d/CentOS-Sources.repo.old
mv /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Vault.repo.old

3. 启用本地源
vi /etc/yum.repos.d/CentOS-Media.repo
enable = 1

4. 安装依赖
yum -y install elfutils-libelf-devel\
binutils \
compat-libcap1 \
compat-libstdc++*.i686 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
glibc*.i686 \
glibc \
glibc-devel*.i686 \
glibc-devel \
ksh \
libaio*.i686 \
libaio \
libaio-devel-*.i686 \
libaio-devel \
libgcc*.i686 \
libgcc \
libstdc++*.i686 \
libstdc++ \
libstdc++-devel*.i686 \
libstdc++-devel \
libXi*.i686 \
libXi \
libXtst-*.i686 \
libXtst \
make \
sysstat \
unixODBC \
unixODBC-devel xhost xdpyinfo xorg-x11-xauth

5. 建立账户
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/groupadd -g 503 oper
/usr/sbin/groupadd -g 504 asmadmin
/usr/sbin/groupadd -g 506 asmdba
/usr/sbin/groupadd -g 505 asmoper
/usr/sbin/useradd -u 502 -g oinstall -G dba,oper oracle
passwd oracle

6. 设置用户组
/usr/sbin/usermod -g oinstall -G dba,oper,asmdba oracle

7. 修改内核参数
vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

sysctl -p

8. 创建安装目录
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle/product/11.2.0/db_home1
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/

9. 修改/etc/security/limits.conf
vi /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536

10. 配置全局环境变量
/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

11. 配置Oracle环境变量
vi /home/oracle/.bash_profile
export DISPLAY=:0.0
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_SID=orcl; export ORACLE_SID
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_home1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/ust/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/jre:$ORACLE_/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

12. 禁用selinux
vi /etc/selinux/config
disabled

13. 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

14. 登录oracle账号,执行安装
./runInstaller

重要提示:安装过程中,如果碰到安装界面显示灰色遮盖,一直卡住不动,直接回车。出现次现象的原因是由于提示信息窗口没有展开显示,导致待确认操作。安装过程中一共出现三次此现象,前两次直接回车。最后一次是在数据库实例创建完毕后,把鼠标放到遮盖的窗口上拉开,按照提示执行两个脚本。最后即可安装完成。

Advertisements

Centos 6 配置 NFS 注意事项


Centos6默认已经安装了NFS所需软件包,只是没有启动。

通过修改/etc/exports文件,设置NFS共享文件目录,

/nfsdata 10.32.0.22(rw,root_squash,sync) 10.32.0.23(rw,root_squash,sync)

重新载入exportfs

# exportfs -arv

然后重启nfs服务。

# service nfs start

以上几步虽然可以启动nfs服务,但是却存在一些问题,第一是nfs防火墙配置,nfs有一部分端口默认是动态的,需要设置为固定端口号;其次是nfs server默认通过文件的uid和gid判断当前用户是否具备文件读写权限。如果有多台服务器共享同一个目录,那么需要确保多台服务器访问共享路径的用户uid和gid相同,否则将提示权限错误。

设置固定端口号

# vim /etc/sysconfig/nfs

解开以下行的注释

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

重新启动nfs服务

# service nfs restart

配置防火墙

# vim /etc/sysconfig/iptables
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 10.32.0.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT

重启防火墙

# service iptables restart

客户端挂载

# mount -t nfs 10.32.0.10:/nfsdata /mnt/nfsdata

确认两台nfs客户端的uid和gid一致,例如:

# id java

如果id不一致可以通过usermod和groupmod命令修改id,id修改之后,用户关联的文件需要重新设定用户和用户组

Subversion pre-commit hooks


pre-commit内容如下

#!/bin/sh

REPOS="$1"
TXN="$2"

# Make sure that the log message contains some text.
SVNLOOK=/usr/bin/svnlook
LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | wc -c`

if [ "$LOGMSG" -lt 5 ];
then
  echo -e "***** Comment must be at least 5 characters. *****" 1>&2
  exit 1
fi# All checks passed, so allow the commit.
exit 0

添加完成之后需要修改文件具备执行权限,否则会提示

svn: Commit blocked by pre-commit hook (exit code 255) with no output.

通过SSH隧道安全连接vncserver


当前大部分Linux发行版中都能够安装vncserver,但是由于免费版的vncserver不支持加密协议连接,所以在internet上通过vnc管理服务器还是存在不安全的因素。

当然,可以购买vncserver企业版,下面的文章是介绍如何通过ssh协议在internet上建立加密通道。

首先需要配置vncserver监听localhost,配置文件如下:

VNCSERVERS="1:oracle"
VNCSERVERARGS[1]="-geometry 1366x768 -alwaysshared -localhost"

根据ssh客户端的不同,建立加密通道的方式也不同。

OpenSSH比较简单,一条命令即可搞定。

ssh -L 5901:127.0.0.1:5901 oracle@internet_ip

Putty客户端配置可以参考:Tunneling Tight-VNC over ssh using PuTTY截图。

最后连接的时候,在VNC Viewer中输入localhost:1即可连接internet_ip对应的5901端口。

需要注意的是,如果需要同时连接两个公网IP的5901地址,可以在创建ssh隧道的时候指定不同的本地端口。例如:

ssh -L 5901:127.0.0.1:5901 oracle@internet_ip1
ssh -L 5903:127.0.0.1:5901 oracle@internet_ip2

VNC Viewer中输入localhost:3将会连接internet_ip2的5901端口。

参考:How to use VNC over SSH tunnelling for secure remote graphical sessions

安装SVNManager注意事项


按照手册一路安装下来,最后碰到两个问题,第一个问题是SVN路径中包含中文,在设置用户和组权限的时候,中文全部乱码,编程\234?\344?这样子的形式。解决这个问题之后,在用户和组的权限管理时碰到了第二个问题,选择了中文目录后,跳转页面出现错误,显示拼接的svn路径在file前多了”\代码,导致svn命令不能正确识别该路径。

第一个问题,网上很多说是编码的问题,我修改为GBK,GB2312都未解决,最后通过分析代码的方式发现,在/usr/share/pear/VersionControl/SVN.php中672行执行exec()函数获得返回结果的时候就已经乱码了,而这个函数是php的,现在本机设置的语言环境是zh_CN.UTF-8,php相应的编码也都设置为UTF-8,apache默认编码也已经设置为UTF-8。

最后通过在将672行的代码修改为exec(“LANG=zh_CN.UTF-8; {$this->prepend_cmd}$cmd 2>&1”, $out, $ret_var);问题解决。

现在不太清楚,为何本地locale已经设置为LANG=zh_CN.UTF-8的情况下,exec命令仍然需要明确指定语言环境。

第二个问题,发现是svnmanager-1.08\svnmanager\RepositoryModule.php代码的Bug,如果svn路径中包含了空格,那么在245行做替换的时候,会在头加上”\,从而导致拼接的svn path错误,这个Bug没有细查了,暂时把svn目录的空格都去掉了。

如果出现PHP Fatal error:  Class ‘PEAR_ErrorStack’ not found错误
可以降版本
pear uninstall VersionControl_SVN-0.5.0卸掉0.5.0
pear install VersionControl_SVN-0.4.0重装0.4.0就没报这个错了

以上是安装SVNManager获得的一些经验,希望对看客有用。另:SVNManager最终配置成功的环境全部是UTF-8编码环境,包括Mysql数据库。

Ubuntu 添加 PPA 安装最新的Wine


由于Wine“极度”活跃,Ubuntu自带的Wine版本总是显得太低。我们可以通过添加Wine官方的PPA及时享受最新版Wine带来的好处。

添加方法:

sudo apt-add-repository ppa:ubuntu-wine/ppa && sudo apt-get update

如果已经安装了Wine,此时打开更新管理器就能看到Wine的更新了,没有安装的,现在开始安装体验吧。不过由于PPA的速度实在不敢恭维,所以各位U友多点耐心哈。

PPA for Ubuntu Wine Team主页:https://launchpad.net/~ubuntu-wine/+archive/ppa