zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Nginx系列p5:进程管理(信号)
    Nginx系列p4:进程结构
    one_day_one_linuxCmd---crontab 命令
    Nginx系列p3:实现一个具有缓存功能的反向代理服务器
    Nginx系列p2:重载,热部署,日志分割
    Nginx系列p1:安装
    数据链路层
    物理层习题与真题
    物理层
    计算机网络体系结构习题与真题
  • 原文地址:https://www.cnblogs.com/biaopei/p/7730475.html
Copyright © 2011-2022 走看看