之前在Windows server上安装Oracle 11g是有图形界面的对于我这样的新手是非常友好的。可是今天想要在Linux上使用下Oracle(我自己使用MySQL更多,Oracle使用的很少),虽然centos是可以安装图形界面的,但是我们知道大部分的Linux服务器基于资源暂用是不使用图形界面的,那么要怎么在无图形界面下进行安装呢。。。下面的我的小段爬坑经历,有不对的地方还望能够指出。
一、准备centos系统(centos6与centos7有比较大的区别,具体的系统命令参考各自的手册就好,当然也可以使用其他Linux)这里我使用的是centos7.3x
安装过程省略(我使用的是带开发工具的最小安装)
二、下载Oracle 11g R2和其他软件工具
1.
官方下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
选择64位下载。一共有两个文件:linux.x64_11gR2_database_1of2.zip 和linux.x64_11gR2_database_2of2.zip
ps:为保证文件完整性可以测下md5值与官方比对。
2.为方便操作VMware里的Linux虚拟机,使用远程登录工具进行操作:
xshell和xftp:链接: https://pan.baidu.com/s/1MQYcPpgSNLQRNQ7srl7bEA 提取码: 63fn (此为学校or家庭使用的免费版,企业版请购买正版)
putty:链接: https://pan.baidu.com/s/1ygPEXSb37laU5g_CwJqDLg 提取码: w9ui
ftp工具也可以使用:filezilla(个人认为也是比较好用的一款工具)
三、安装
1.安装依赖包:
yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat unixODBC unixODBC-devel
使用yum方式不能安装pdksh因此需要自己去下载安装:
安装pdksh的RPM包:
cd /opt wget http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
ps:有可能会遇到
pdksh和ksh只能保留一个,这里我们保留pdksh
这里我把yum源改成了国内的yum源使用的是系统自带的yum源有时候会很慢,更换方法为:
创建备份
mkdir /back
cd /etc
mv yum.repos.d /back/yum.repos.d.bak
更新阿里的yum源
mkdir yum.repos.d wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache #生成缓存
检查安装的依赖包,使用rpm -qa 或者再次使用yum来检查所有包是否安装。
2.安装前的环境准备
添加用户和用户组:
oinstall为Oracle的主组,dba设置为附加组
初始化Oracle用户密码:
passwd oracle
在安装centos时我没有进行主机名初始化,现在来配置hostname:
vim /etc/hosts
ip地址的查看方式:ifconfig 或者ip addr
修改好了以后:ping 修改的主机名 能ping通就ok!
优化系统内核参数:
因为是虚拟机的原因我们选择最小化(具体配置需要根据自己的硬件参照手册进行修改):
vim /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 = 1048586
使参数生效:
sysctl -p
设置创建的Oracle用户权限
vim /etc/security/limits.conf #末尾加入
oracle soft nproc 2047 #oracle 在 linux上打开 proc 数量
oracle hard nproc 16384
oracle soft nofile 1024 #oracle 在 linux上打开 file 数量
oracle hard nofile 65536
vim /etc/pam.d/login #末尾加入
session required /lib64/security/pam_limits.so
session required pam_limits.so
vim /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
创建Oracle安装路径:
mkdir -p /app/oracle/product/11.2.0
mkdir -p /app/oracle/inventory
mkdir -p /app/oracle/oradata
chown -R oracle:oinstall /app
配置Oracle环境变量
vim ~oracle/.bash_profile
ps:
export ORACLE_BASE=app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.4/db_1 #path路径设置方法与jdk基本一致
export ORACLE_SID=orcl # 最多 8个字符 ; 操作系统和 oracle实例关联的纽带 ;ORACLE_HOME+ORACLE_SID==>hash==> 共享内存段
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin #将安装后的 oracle 命令追加到执行搜索路径
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #动态库的位置
export nls_lang="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" #客户端字符集设置
到此重启系统:
reboot init 6 shutdown -r now #上面3个命令都可以用于重启。
hostname等设置已经生效
3.开始安装
使用xftp或者其他ftp工具上传从官网下载的安装包:(也可以直接使用wget工具直接将安装包下载到Linux)这是上传到/opt路径下
分别解压2个压缩包:
[root@centos7 opt]# unzip linux.x64_11gR2_database_1of2.zip [root@centos7 opt]# unzip linux.x64_11gR2_database_2of2.zip
[root@centos7 opt]# cd ./database/ [root@centos7 database]# ls doc install response rpm runInstaller sshsetup stage welcome.html [root@centos7 database]# cd ./response/ [root@centos7 response]# ls dbca.rsp db_install.rsp netca.rsp [root@centos7 response]#
进入响应文件夹有3个文件分别是数据库静默响应文件、数据库安装响应文件以及监听响应文件。
修改安装响应文件:
[root@centos7 response]# vim ./db_install.rsp
修改以下选项:
29 oracle.install.option=INSTALL_DB_SWONLY #安装选项
37 ORACLE_HOSTNAME=centos7 #hostname
42 UNIX_GROUP_NAME=oinstall #主组
47 INVENTORY_LOCATION=/app/oracle/inventory
78 SELECTED_LANGUAGES=en,zh_CN
83 ORACLE_HOME=/app/oracle/product/11.2.0
88 ORACLE_BASE=/app/oracle
99 oracle.install.db.InstallEdition=EE #版本
108 oracle.install.db.isCustomInstall=true
142 oracle.install.db.DBA_GROUP=dba #admin管理组名
147 oracle.install.db.OPER_GROUP=dba #oper操作员组名
160 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
170 oracle.install.db.config.starterdb.SID=orcl
200 oracle.install.db.config.starterdb.memoryLimit=800 #根据自己设定的物理内存设置,一般为物理内存的40%-60%
233 oracle.install.db.config.starterdb.password.ALL=123456 #设置所有用户密码,方便后面更改。
开始静默安装:
[root@centos7 response]# su oracle [oracle@centos7 response]$ ls dbca.rsp db_install.rsp netca.rsp [oracle@centos7 response]$ cd ../ [oracle@centos7 database]$ ls doc install response rpm runInstaller sshsetup stage welcome.html [oracle@centos7 database]$ ./runInstaller -silent -ignorePrereq -responseFile /opt/database/response/db_install.rsp
另起一个终端查看安装实时日志:
注意安装过程会持续一会,没有出现[FATAL]或者[error]安装程序仍在运行。也可通过安装日志来确定安装进程:
看到如下表示安装成功:
按要求运行脚本:
到此Oracle 11g r2就安装成功了!
4.配置Oracle。
配置监听:
在Oracle用户下执行:
[oracle@centos7 ~]$ netca /silent /responseFile /opt/database/bakrsp/netca.rsp
我这里备份了response里的文件,bakrsp是备份目录,不需要备份直接从response文件夹中的文件执行!
结果反馈:
检查监听状态:
[oracle@centos7 ~]$ netstat -tnulp | grep 1521 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp6 0 0 :::1521 :::* LISTEN 18790/tnslsnr
创建数据库:
[oracle@centos7 ~]$ dbca -silent -responseFile /opt/database/bakrsp/dbca.rsp
dbca.rsp可以根据自己的安装情况修改,大致需要修改的选项差不多有:
GDBNAME SID SYSPASSWORD SYSTEMPASSWORD SYSMANPASSWORD DBSNMPPASSWORD DATAFILEDESTINATION CHARACTERSET = "AL32UTF8" TOTALMEMORY = "1638" #物理内存的40-80%,一般80%
查看监听状态:
[oracle@centos7 ~]$ lsnrctl status
结果为:
如果遇到:上图中的实例状态REDAY为“UNKNOW”则需要检查自己的监听配置,或者查看/app/oracle/product/11.2.0/network/admin目录下的监听文件参考自己的情况进行排查。
最后,登录数据库:
[oracle@centos7 ~]$ lsnrctl start [oracle@centos7 ~]$ sqlplus / as sysdba
常见问题:
- startup后出现:
解决方法:参考:https://www.linuxidc.com/Linux/2012-12/76976.htm
- 无法使用
sqlplus / as sysdba 登录,解决方法在/app/oracle/product/11.2.0/network/admin中编辑sqlnet文件加入SQLNET.AUTHENTICATION_SERVICES=(ALL)
- startup后出现:
这个情况比较复杂具体参考:https://www.linuxidc.com/Linux/2016-10/135746.htm
看到这个基本就问题不大了:
尝试远程连接:
由于是在虚拟机内,可以关掉防火墙:
[root@centos7 ~]# systemctl stop firewalld
连接成功。。。。爬坑第一天到此结束啦。。。
PS:至于增加开机启动添加到服务等事宜,大家可以参考论坛等,或者我也会在开一个随笔来记录下。下一篇就说说简单点的MySQL的安装配置吧。