Centos7下安装部署oracle数据库方法及问题汇总
目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库
系统环境: 
服务器:centos7  64位 
客户端:win7 64位 
注意cnetos7硬盘大小不能太小,其运行内存推荐2G,硬盘大小40G,交换内存3G(不用担心,稍后会讲到)
注意: firewalld和selinux都关掉 
软件包:
https://pan.baidu.com/s/1c3zNv4 
第一个文件是plsql安装程序 
第二第三个文件是oracle服务端安装文件 
第三个是plsql连接oracle服务端所需要的文件
Centos7安装oracle数据库过程
2017.9.11补充 
(1)需要关闭一些服务,以避免安装过程中出现冲突错误
#将下列命令写入某一脚本,然后执行(自己写的,可能不是很完善)
systemctl stop firewalld
systemctl stop cups
systemctl stop firstboot
systemctl stop wpa_supplicant
systemctl stop postfix
systemctl disable firewalld
systemctl disable cups
systemctl disable firstboot
systemctl disable wpa_supplicant
systemctl disable postfix
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
systemctl status firewalld
systemctl status cups
systemctl status firstboot
systemctl status wpa_supplicant
systemctl status postfix
setenforce 0
systemctl restart sshd
(2)需要安装一些依赖包之类的,也写一个脚本执行
yum install binutils* compat-libcap* compat-libstdc++* gcc* glibc* ksh* libgcc* libstdc++* libaio* -y
yum install libXext* libXtst* libX* libXau* libxcb* libXi* make* sysstat* unixODBC unixODBC-devel xterm -y
(3)修改一下内核参数
# 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来看一下参数是否修改正确,如果语法错误之类的,还会有相关的提示 
(4)创建用户组和用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle   #同时加入dba组,作用暂时不明
修改oracle密码
mkdir -p /u01/app/oracle/product/11.2.0/db_1
mkdir -p /u01/app/oralnventory
chown -R oracle:oinstall /u01/app
chmod -R 775 /u01/app
现在我们就可以把那两个服务器端安装文件解压到oracle的家目录中了 
(5)修改系统限制
# vi /etc/security/limits.conf最末尾添加下面语句
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
还需要修改一下会话参数
# vi /etc/pam.d/login
session required /lib/security/pam_limits.so
session required pam_limits.so
添加以下参数
# vi /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 
(6)切换到oracle用户,配置环境参数(oracle家目录下)
# vi .bash_profile,注释掉原来的path行和export行
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0./db_1
ORACLE_SID=shenlan
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH
使该文件立即生效 
source .bash_profile 
(7)开始安装oracle(接下来的这些步骤最后是直接切换到oracle用户,而不是从root用户su oracle,后者很可能导致意想不到的错误) 
进入oracle 家目录 
oracle用户下执行xhost +
2017.12.6日补充
如果提示找不到xhost
执行yum groupinstall "X Window System" -y
xhost +执行时可能出现各种unable
解决方法是安装vncserver,安装方法可以参考http://www.cnblogs.com/biaopei/p/7798951.html,即
yum install tigervnc-server -y
然后我们执行vncserver时会出现类似 localhost.localdomain:3 的结果,然后export DISPLAY= localhost.localdomain:3 最后执行xhost + 就可以了(还有一种说法是DISPLAY=本地ip(使用ssh连接远程的该主机的ip):0.0)
例如
[root@localhost ~]# vncserver
New 'localhost:1 (root)' desktop is localhost:1
Starting applications specified in /root/.vnc/xstartupLog file is /root/.vnc/localhost:1.log
[root@localhost ~]# export DISPLAY=localhost:1
[root@localhost ~]# xhost +
access control disabled, clients can connect from any host
运行runInstaller #此时会弹出oracle服务端安装界面
执行./runInstaller是可能会一直提示等待,不弹出oracle的安装界面,这个时候我们可以尝试执行xclock命令,如果连xclock也没有弹出来一个时钟,说明你不用等了。我就遇到过这种问题,解决方法是下载xmanager登录服务器(命令那里,我选择第二个xterm linux,选择其它的好像会无法正常弹出窗口), 再次执行runinstaller,很快就会弹出oracle的安装界面了。遇到很坑的问题,提示x11转移错误,这是因为X11 forwarding依赖“xorg-x11-xauth”软件包,所以必须先安装“xorg-x11-xauth”软件包
xclock命令也找不到,执行yum install xorg-x11-apps
然后重新登录oracle用户就可以了。
问题是,xmanager不支持中文,所以oracle的界面会乱码,最后还是将系统编码修改为英文编码才解决(export LANG=en_US.UTF-8可以临时修改编码而不用重启主机),虽然是界面变成英文,但好歹也比乱码强吧。使用xmanager貌似不需要配置xhost + 也可以
第一步:可以选择取消oracle support那个选项,避免不必要的麻烦,然后会弹出一个警告框,选yes 
第二步:选择最下面的跳过程序更新 
第三步:选择中间的仅安装数据库软件 
第四步:选择第一个安装简单的数据库用例 
第五步:找到列表中的简体中文项,点击右箭头选中 
第六步:选择第一个企业版本 
第七、八步:默认即可 
第九步:有一个选项选填,选择oinstall即可
大概在这个位置,还会有两个选择管理组的地方,都选择oinstall就可以了
第十步:安装程序会对安装环境进行检测,我遇到过几个问题,一个是内存、物理、交换空间不足(稍后会补充),一个是缺少某些安装,后者解决方法包http://blog.csdn.net/qq_34829953/article/details/77933482 (其实如果是警告而已的话,也可以不理它,直接选择忽略)
第十一步:安装即可,安装过程中可能会出现安装界面变灰色,中间有一个白色的竖线,但是不可拉伸放大,可按fn+alt+f4,多按几次,直到安装界面恢复正常,后面也会出现这种情况,不过是可以拉伸放大的,自己把鼠标放上去试一下。安装得差不多的时候会弹出一个窗口,提示需要用root用户执行两个脚本,新开一个终端并切换到root用户执行即可
Error in invoking target 'agent nmhs' of makefile
解决方案
在makefile中添加链接libnnz11库的参数
修改$ORACLE_HOME/sysman/lib/ins_emagent.mk,将
$(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
建议修改前备份原始文件
[oracle@ysserver ~]$ cd $ORACLE_HOME/sysman/lib
[oracle@ysserver lib]$ cp ins_emagent.mk ins_emagent.mk.bak
[oracle@ysserver lib]$ vi ins_emagent.mk
进入vi编辑器后  命令模式输入/MK_EMAGENT_NMECTL 进行查找,快速定位要修改的行
在后面追加参数-lnnz11
$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL) -lnnz11
保存退出后Retry
(8)dbca建库 
执行命令 
dbca  
第一步:默认添加数据库 
第二步:默认    (这附近有一步是需要开启监听的,所以,另外打开一个窗口执行netca,建库时可能要求要开启netca监听 
如果直接执行netca,提示无此命令 
那么find / -name netca 
弹出netca界面,一直默认,只需选择协议时选择tcp协议,即可完成监听设置)
第三步:熟人database name :shenlan (如果这里是你自己起的名字,那么ORACLE_SID的值需要改为你的值)
第四步:默认 
第五步:选择下面的统一密码,并输入自己的密码 
接着一直默认下去,直到storage locations选择common location,输入{ORACLE_BASE}/oradata 
继续,一直到初始化参数,选择字符那里,使用自定义字符,找到gbk 16bit简体中文,并选中 
然后默认下去,开始安装 
安装过程中会有警告 
1.ORACLE_UNQNAME 那里可以写shenlan
3. 。。。/emctl config emkey -repos -sysman_pwd 123456 (123456是我安装时设置的密码)
4. 。。。/emctl secure dbconsole -sysman_pwd 123456 (这个也是我的密码)
这些语句执行可能会报错,可以不管它,当然像很明显那些提示命令错误的,还是尽量能改就改吧
最下面那句可以不执行
不用慌,它不是有提示执行以下命令吗,那就开一个root终端执行就可以了
建库的过程中可能还会遇到
这个是网上的教程,实际上,我按照这个方法操作了之后,retry了多次,依旧报这个错误,一步小心误触空格键(不知道空格键在这里选择的是哪一个,不过我猜是忽略那个选项吧,对后续的安装没什么明显的影响),接着下一步
接下来的很多命令可能都是找不到的,所以我们需要把oracle相关的可执行文件路径加入到PATH中,export PATH=$PATH:/u01/app/oracle/product/11.2.0/dbhome_1/bin
另外上面的这个11.2.0这个文件夹需要复制到另一个文件夹中,并命名为11.2.0 ,还有dbhome_1这个文件夹下面原来可能什么东西都没有,所以,我们需要把db_1文件夹下的所有文件复制到dbhome_1下面
现在我们还需要配置netca的另一个选项 
执行netca,选择第三个net service,service name那里写shenlan,tcp协议,host name那里写上本机ip,最后选择yes perform a test,下一步会提示test成功,如果失败,选择change login(我用的账号是system,密码是我刚才设置的统一密码),netservice name填localdb,其余默认,配置完成
(9)首先在centos7上oracle是否配置完成 
lsnrctl start
lsnrctl start报错:TNS-01106: Message 1106 not found; No message file for product=network, facility=TNS
原因:ORACLE_HOME没有设置
方法: export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1
设置之后还需要设置ORACLE_SID(比较好的方法是,在oracle家目录下的.bash_profile文件下,添加export ORACLE_SID=shenlan,然后source .bash_profile就可以了,否则重新开一个端口又需要重新设置该值)
[oracle@asdlabdb01 ~]$ echo $ORACLE_SID
[oracle@asdlabdb01 ~]$
可见,此时只设置了ORACLE_HOME环境变量,但ORACLE_SID此时为空。我把这个值也设置为shenlan
sqlplus / as sysdba 
sql>startup(提示数据库开启即为配置成功) 
补充,有时候我们会遇到执行startup时提示需要关闭数据库 
可以执行shutdown immediate;立即关闭数据库
再centos7上下载前面两个文件,安装过程太长,主要说一下遇到的问题及解决方法 
问题: 
安装过程中,oracle弹出的窗口非常小,而且无法拉伸扩大,类似卡死 
解决方法: 
我在fedora22上安装的,跟你遇到了同样的问题,现在已经安装成功了,你选中这个窗口,然后用alt+f4,让他变成白色就行,你稍微等会,看会不会继续往下走,多试几次。(笔记本的话还需要注意同时按下fn键)
注意:别kill,这样的话这次安装就失败了。 
如果你这一部走到后面了,还有一步你会遇到这种竖线,你把鼠标方上去,会有一个黑色的角,可以拉伸。
问题: 
ORA-01102: cannot mount database in EXCLUSIVE mode 
解决方法: 
export ORACLE_SID=crd(这个值最好跟其他show parameter name 的值保持一致)
如果这个值已经正确了,那么我们只好关闭oracle数据库了,执行命令lsnrctl stop 即可(为什么执行这条语句之后,oracle就直接关闭了,原因我还不是很清楚)
问题: 
ORA-01078:failure in processing system parameters 
解决方法 
将$ORACLE_HOME/dbs目录下spflieorcl.ora改名为spfilecenter.ora即可。(注:spfilecenter.ora中的center为环境变量中设置的SID)
问题: 
安装完成后怎么启动oracle 
解决方法 
lsnrctlstartsqlplus / as sysdba 
sql>startup 
补充,有时候我们会遇到执行startup时提示需要关闭数据库 
可以执行shutdown immediate;立即关闭数据库
开启em(oracle企业级管理器) 
终端执行命令 
emctl start dbconsole 
执行完成后会提示started,然后把网址复制进浏览器打开就可以了(我的用户名是sys,密码是那个统一密码)
问题:
数据库莫名其妙出现下面这个问题
ORA-48108: invalid value given for the diagnostic_dest init.ora parameter
ORA-48140: the specified ADR Base directory does not exist [/volumeX/app/oracle/product/11.2.0/xe/dbs/|ORACLE_BASE|]
ORA-48187: specified directory does not exist
可能原因是我在安装oracle时使用的是xmanager安装,安装完成后返回使用系统自带终端执行命令,于是报此错误
解决方法:
我的原因是因为ORACLE_SID参数为空(可能是因为export只能在当前终端生效,另开一个终端该参数就又边空了),设置参数(你的数据库名称)后,例如我的数据库名称是ORCL,所以我执行命令export ORACLE_SID=ORCL,于是,再次startup就不会报这个错误,可能就是报下面这个错误了
ORA-00845: MEMORY_TARGET not supported on this system 
解决方法; 
mount -o remount,size=2G /dev/shm(如果还是不行,可以适当增减size的大小)
问题:
执行startup的时候提示27102错误,out of memory
可能是由于当前连接数过多,可以尝试关掉一些不用的连接,例如Navicat端的连接等
(10)win7远程连接oracle 
首先下载第一个和最后一个文件 
安装plsql程序 
然后把最后一个文件解压到C盘(当然,也可以是其它地方) 
打开plsql,取消登录,进入plsql界面,选中tools的第一个选项,配置oracle home为最后一个文件的解压路径,oci library为解压路径下oci.dll的完整路径(包括oci.dll名) 
最后还有一步很重要,就是在最后一个文件的解压路径下,直接看图就可以了
然后差不多就可以连接上了
win7客户端连接oracle数据库(win7系统环境变量不要设置oracle_home,否则容易导致无法连接上)
在win7上下载后面两个文件 
两个文件所在的位置需要注意一下,还有这两个文件的内容最好是复制centos7里面的,自己写的,哪怕一模一样也可能报错,需要改地方是把host改为centos7的ip,以及server_name的值(该值在centos7上安装好oracle之后,可以通过执行sqlplus / as sysdba进入oracle后执行show parameter name查看) 
其它的无非就是设置pl/sql还有系统环境变量,登录时用户名sys,密码,以及数据库名(我的是shenlan,就是那个server_name的值),连接方式sysdba
远程连接oracle
sqlplus dbauser/abc2017@//192.168.130.99:1521/orcl 用户名dbauser密码abc2017 端口是1521,数据库名是orcl
Centos7下安装部署oracle数据库方法及问题汇总的更多相关文章
- centos7 下 安装部署nginx
		
centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...
 - Centos7下安装部署MXNET
		
Centos下安装MXNET,参考官方文档http://mxnet.io/get_started/setup.html#prerequisites, 一.安装python的mxnet步骤如下: #!/ ...
 - centos7下安装部署mongodb集群(副本集模式)
		
环境需求:Mongodb集群有三种模式: Replica Set, Sharding,Master-Slaver. 这里部署的是Replica Set模式. 测试环境: 这里副本集(Replica ...
 - centos7 下安装mysql5.7 数据库并使用nevicat连接数据库
		
安装mysql5.7的教程: https://www.cnblogs.com/yybrhr/p/9810375.html 遇到的问题: 无法连接,到阿里云服务器安全组设置3306端口
 - centos7 下安装oracle 11g笔记
		
终于在vmare的centos7下将oracle11g安装成功了,不容易,将结果记录如下 启动oracle监听及服务的步骤,使用oracle用户登录,执行以下命令 登录到CentOS,切换到oracl ...
 - 在Centos7下安装与部署.net core
		
在Centos7下安装与部署.net core 2018年02月28日 19:36:16 阅读数:388 个人安装流程,参照文档 https://www.cnblogs.com/Burt/p/6566 ...
 - 记录CentOS7.X版本下安装MySQL5.7数据库
		
记录CentOS7.X版本下安装MySQL5.7数据库 设置rpm下载目录在/opt目录下新建一个目录存放mysql cd /opt sudo mkdir mysql12 下载MySQL的源 wg ...
 - Centos7下安装ORACLE 11g,弹窗不显示
		
Centos7下安装ORACLE 11gR2,弹窗不显示,安装界面显示为灰色. 解决方法:执行安装时带上一下参数 ./runInstaller -jreLoc /etc/alternatives/jr ...
 - CentOS7.0下安装FTP服务的方法
		
http://www.jb51.net/article/106604.htm 本篇文章主要介绍了CentOS7.0下安装FTP服务的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟 ...
 
随机推荐
- JXL生成Excel,并提供下载(1:生成Excel)
			
public String exportExcel(long id) { String preeReviewName = "文件名"; String filePath = 路径名; ...
 - 主机访问虚拟机centos7的服务器
			
一.虚拟机开启桥梁接 1.编辑-->虚拟网络编辑器 2.虚拟机-->设置 二.Centos的配置---关闭防火墙下的服务器接口 Centos7.0 默认使用firewall作为防火墙,这里 ...
 - 深入理解java虚拟机---垃圾回收(十一)
			
1.垃圾回收要解决的问题 可以通过配置虚拟机参数来打印出内存日志: -verbose:gc -XX:+PrintGCDetails 垃圾收集(Garbage Collection,GC),要设计一个G ...
 - MATLAB 地图工具箱 m_map 的安装和入门技巧(转)
			
reference: http://blog.sina.com.cn/s/blog_8fc890a20102v6pm.html 需要用一些地图工具,arcgis懒得装了,GMT(generic m ...
 - 3-D crustal model transfer to cdl format
			
The downloaded crustal model file, for example, its name is TW-PS-H14.nc The command is ncdump -b c ...
 - L290 英语中级班-3月上
			
1元音饱满度 a [ei] name gamee [i:] he she mei [ai] fine likeo [ou] go homeu [ u:] use blue 2口音适应 刚开始说时,慢点 ...
 - Linux运维命令总结(-)
			
Linux运维命令总结(-) 此次整理linux运维常用命令13个,常用linux运维命令大概有150个,约占百分之十,大牛见笑,本人菜鸟一枚不才整理如下,如有不正确之处,请多多指正. 1.创建目录 ...
 - 2019-03-25-day018-面向对象
			
re模块 字符串匹配 列表 = findall(正则表达式,待匹配的字符串) 找所有 结果集 = search 找第一个,结果集.group() 结果集 = match 从第一个字符开始匹配,结果集. ...
 - 2019-03-20-day015-序列化存储
			
昨日回顾 序列化模块: json -- load dump dumps loads pickle -- load dump dumps loads shelve -- 文件 + 字典 f = shel ...
 - Python 通过队列实现一个生产者消费者模型
			
import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time ...