CentOS 7.2 远程安装 Oracle 11g 及常用操作
近期从零安装Oracle,网上查看了许多教程,包括网友总结的和官方文档,这里总结了一些必备的配置和常见错误处理,以便日后查看。
前期准备
安装文件
- OS:
- CentOS 7,安装可参考: CentOS系统安装配置 和 磁盘分区格式与系统引导方式
- Oracle 11g:
- linux.x64_11gR2_database_1of2.zip
- linux.x64_11gR2_database_2of2.zip
配置用户(以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安装类型来配置,否则可不建此用户组。
- Oracle 清单组(一般为oinstall:
- 添加用户
- 新建:
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
11fs.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
8oracle 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 | umask 022 # 创建文件默认去除022权限,对应755 |
远程安装配置
- 远程安装时,需要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用户登录)
- 把两个ZIP文件,并解压至同一文件夹,如
/opt/oracle/
。运行runInstaller
可弹出图形窗口进行安装,根据需要选择安装选项。 - 安装时,installer会推荐默认的安装地址,如11g,通常为
$ORACLE_BASE/11g
,后续可添加如下环境变量将一系列oracle命令加到PATH中去。1
2export ORACLE_HOME=$ORACLE_BASE/11g
export PATH=$ORACLE_HOME/bin:$PATH - 中途有一步是检查依赖包。即使进行了上述依赖包安装,还可能提示一些i386的包不存在,但CentOS的32bit包都是i686的,此处可忽略这些。
- 目前还有一个问题就是提示,内核参数
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即可通过。