0%

CentOS 7.2 远程安装 Oracle 11g

CentOS 7.2 远程安装 Oracle 11g 及常用操作

近期从零安装Oracle,网上查看了许多教程,包括网友总结的和官方文档,这里总结了一些必备的配置和常见错误处理,以便日后查看。

前期准备

安装文件

配置用户(以root登陆)

  • 添加用户组
    • Oracle 清单组(一般为oinstall: groupadd oinstall)
      Oracle 所有者,拥有Oracle中央清单(oraInventory)的写入权限。
    • 数据库管理员(OSDBA,一般为dba: groupadd dba)
      OSDBA组的成员通过操作系统身份验证,使用SQL以SYSDBA身份链接到ORACLE实例。该组成员可执行关键的数据库管理任务,如创建数据库、启动和关闭实例。SYSDBA 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。不要混淆SYSDBA系统权限与数据库角色DBA。DBA角色不包括SYSDBA或SYSOPER系统权限。
    • 数据库操作员(OSOPER,一般为oper: groupadd oper)
      OSOPER组的成员,使用SQL以SYSOPER连接一个实例。这个成员拥有一组有限的数据库管理权限,如管理和运行备份。SYSOPER系统权限甚至也允许在未打开数据库的情况下访问实例。要使用该组,需选择Advanced安装类型来配置,否则可不建此用户组。
  • 添加用户
    • 新建:useradd -g oinstall -G dba oracle
    • 修改密码:passwd oracle

配置内核参数和资源限制

这一步可以省略,因为安装过程中Oracle会检测到这些配置不符合要求,会生成一个脚本,用root执行即可配置完毕。

  • 内核参数修改/etc/sysctl.conf。增加如下参数,并立即生效sysctl -p

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 536870912
    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
  • 资源限制修改/etc/security/limits.conf。增加如下参数,提高oracle用户的资源限制。分别是进程数、打开的文件数、堆栈、驻留内存上限。soft为软规则,超过限制警告,hard为硬规则,不允许超过。

    1
    2
    3
    4
    5
    6
    7
    8
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 4096
    oracle hard nofile 65536
    oracle soft stack unlimited
    oracle hard stack unlimited
    oracle soft memlock unlimited
    oracle hard memlock unlimited

    安装依赖包

    后续数据库安装时,会检测依赖包,此处可先行安装。

    1
    yum -y install binutils compat-libcap1  compat-libstdc++-33 compat-libstdc++-33*.i686 elfutils-libelf-devel gcc gcc-c++ glibc*.i686 glibc glibc-devel glibc-devel*.i686 ksh libgcc*.i686 libgcc libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 libXp

配置oracle用户环境变量

可修改~/.bash_profile~/.bashrc(zsh为~/.zshrc)。前者在用户第一次登录时执行一次,后者在该用户每次终端启用时均执行。使用source 文件名可立即生效。添加如下内容:

1
2
3
4
umask 022	# 创建文件默认去除022权限,对应755
export ORACLE_BASE=$HOME/app # 安装路径
export ORACLE_SID=lab # ORACLE实例名
export TMP=/tmp

远程安装配置

  • 远程安装时,需要SSH转发图形界面。检查/etc/ssh/sshd_config的配置X11Forwarding yes,并service sshd restart
  • 本地Windows可用Xmanager监听图形界面,远程服务器需有Xserver:yum install xorg-x11-server-util xorg-x11-apps xorg-x11-xauth xterm,可能还需要xhost +添加图形界面访问权限,运行xclock观察是否出现图形时钟进行测试。
  • 如使用Xshell登录,则可在连接属性“隧道”中选择转发X11连接到Xmanager,此设置会自动配置oracle用户DISPLAY环境变量。若使用ssh命令连接,可手动添加如下环境变量。
    1
    2
    3
    # xServer
    export DISPLAY=192.168.0.1:0.0 # IP为本地的IP,即,显示窗口的IP。
    export LANG=c # 设置语言为ASCII环境,如窗口显示乱码可加此环境变量。
  • 在运行runInstaller安装时可能需要手动打开Xmanager进行监听。

安装Oracle database(以oracle用户登录)

  1. 把两个ZIP文件,并解压至同一文件夹,如/opt/oracle/。运行runInstaller可弹出图形窗口进行安装,根据需要选择安装选项。
  2. 安装时,installer会推荐默认的安装地址,如11g,通常为$ORACLE_BASE/11g,后续可添加如下环境变量将一系列oracle命令加到PATH中去。
    1
    2
    export ORACLE_HOME=$ORACLE_BASE/11g
    export PATH=$ORACLE_HOME/bin:$PATH
  3. 中途有一步是检查依赖包。即使进行了上述依赖包安装,还可能提示一些i386的包不存在,但CentOS的32bit包都是i686的,此处可忽略这些。
  4. 目前还有一个问题就是提示,内核参数semmni期望设置为128,但在/etc/sysctl.conf中添加kernel.semmni = 128中后,sysctl -p提示找不到semmni文件,所以目前也忽略了此错误,未加semmni

遇到的问题

后续滚动条阶段时,遇到了两个编译错误,查看日志得到详细信息。

ins_ctx.mk 报错 undefined reference to memcpy@GLIBC_2.14

首先查看/usr/lib64/libc.a文件是否存在,如不存在可yum install glibc-static下载。然后修改出错的makefile文件($ORACLE_HOME/ctx/lib/ins_ctx.mk),在$(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)前面添加-static /usr/lib64/libc.a,即采用静态链接,可解决此错误,点击retry通过。

ins_emagent.mk 报错 Error in invoking target ‘agent nmhs’

修改出错的makefile文件,在$(MK_EMAGENT_NMECTL)之后加上-lnnz11链接libnnz11.so库,点击retry即可通过。