zoukankan      html  css  js  c++  java
  • 史上最详细最全的Linux上安装Oracle的教程-centos7

    一、安装Oracle前准备

    1.创建运行oracle数据库的系统用户和用户组

    [plain] view plain copy
     
    1. [humf@localhost ~]$ su root  #切换到root  
    2. Password:   
    3. [root@localhost sonny]# groupadd oinstall  #创建用户组oinstall  
    4. [root@localhost sonny]# groupadd dba  #创建用户组dba  
    5. [root@localhost sonny]# useradd -g oinstall -g dba -m oracle  #创建oracle用户,并加入到oinstall和dba用户组  
    6. [root@localhost sonny]# passwd oracle  #设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆  
    7. Changing password for user oracle.  
    8. New password:   # 密码  
    9. BAD PASSWORD: The password is shorter than 8 characters  
    10. Retype new password:   # 确认密码  
    11. passwd: all authentication tokens updated successfully.  
    12. [root@localhost sonny]# id oracle # 查看新建的oracle用户  
    13. uid=1001(oracle) gid=1002(dba) groups=1002(dba)  
    14. [root@localhost sonny]#   


    理论上单例按照需要3种用户组,实际只建两个oinstall和dba,后面再安装oracle数据库的时候把OSOPER组也设置是dba组。
    a.oracle 清单组(一般为oinstall):
     OINSTALL 组的成员被视为 Oracle 软件的“所有者”,拥有对 Oracle 中央清单 (oraInventory) 的写入权限。在一个 Linux 系统上首次安装 Oracle 软件时,
     OUI 会创建 /etc/oraInst.loc 文件。该文件指定 Oracle 清单组的名称(默认为 oinstall)以及 Oracle 中央清单目录的路径。
    b.数据库管理员(OSDBA,一般为 dba):
     OSDBA 组的成员可通过操作系统身份验证使用 SQL 以 SYSDBA 身份连接到一个 Oracle 实例。该组的成员可执行关键的数据库管理任务,如创建数据库、启动和关
     闭实例。该组的默认名称为dba。SYSDBA 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。不要混淆 SYSDBA 
     系统权限与数据库角色 DBA。DBA 角色不包括 SYSDBA 或 SYSOPER 系统权限。
    c.数据库操作员组(OSOPER,一般为 oper):
     OSOPER 组的成员可通过操作系统身份验证使用 SQL 以 SYSOPER 身份连接到一个 Oracle 实例。这个可选组的成员拥有一组有限的数据库管理权限,如管理和运行备份。
     该组的默认名称为oper。SYSOPER 系统权限甚至在数据库未打开时也允许访问数据库实例。对此权限的控制完全超出了数据库本身的范围。要使用该组,选择 Advanced 安装类型来安装 Oracle 数据库软件。 


     2.修改操作系统核心参数
    在Root用户下执行以下步骤:
    1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件
    输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件。

    [plain] view plain copy
     
    1. oracle soft nproc 2047  
    2.    
    3. oracle hard nproc 16384  
    4.    
    5. oracle soft nofile 1024  
    6.    
    7. oracle hard nofile 65536  


    编辑完成后按Esc键,输入“:wq”存盘退出
    2)修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件。

    [plain] view plain copy
     
    1. session required /lib/security/pam_limits.so  
    2. session required pam_limits.so  


    编辑完成后按Esc键,输入“:wq”存盘退出
    3)修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件

    [plain] view plain copy
     
    1. fs.file-max = 6815744  
    2.    
    3. fs.aio-max-nr = 1048576  
    4.    
    5. kernel.shmall = 2097152  
    6.    
    7. kernel.shmmax = 2147483648  
    8.    
    9. kernel.shmmni = 4096  
    10.    
    11. kernel.sem = 250 32000 100 128  
    12.    
    13. net.ipv4.ip_local_port_range = 9000 65500  
    14.    
    15. net.core.rmem_default = 4194304  
    16.    
    17. net.core.rmem_max = 4194304  
    18.    
    19. net.core.wmem_default = 262144  
    20.    
    21. net.core.wmem_max = 1048576  


    编辑完成后按Esc键,输入“:wq”存盘退出
    4)要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p 显示如下:

    [plain] view plain copy
     
    1. linux:~ # sysctl -p  
    2.    
    3. net.ipv4.icmp_echo_ignore_broadcasts = 1  
    4.    
    5. net.ipv4.conf.all.rp_filter = 1  
    6.    
    7. fs.file-max = 6815744  
    8.    
    9. fs.aio-max-nr = 1048576  
    10.    
    11. kernel.shmall = 2097152  
    12.    
    13. kernel.shmmax = 2147483648  
    14.    
    15. kernel.shmmni = 4096  
    16.    
    17. kernel.sem = 250 32000 100 128  
    18.    
    19. net.ipv4.ip_local_port_range = 9000 65500  
    20.    
    21. net.core.rmem_default = 4194304  
    22.    
    23. net.core.rmem_max = 4194304  
    24.    
    25. net.core.wmem_default = 262144  
    26.    
    27. net.core.wmem_max = 1048576  



    5)编辑 /etc/profile ,输入命令:vi /etc/profile,按i键进入编辑模式,将下列内容加入该文件。

    [plain] view plain copy
     
    1. if [ $USER = "oracle" ]; then  
    2.    
    3. if [ $SHELL = "/bin/ksh" ]; then  
    4.    
    5. ulimit -p 16384  
    6.    
    7. ulimit -n 65536  
    8.    
    9. else  
    10.    
    11. ulimit -u 16384 -n 65536  
    12.    
    13. fi  
    14.    
    15. fi  


    编辑完成后按Esc键,输入“:wq”存盘退出

    6)创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到oracle用户下,例如:
    输入命令:

    [plain] view plain copy
     
    1. mkdir /home/oracle/app  
    2.    
    3. mkdir /home/oracle/app/oracle  
    4.    
    5. mkdir /home/oracle/app/oradata  
    6.    
    7. mkdir /home/oracle/app/oracle/product  


    7)更改目录属主为Oracle用户所有,输入命令:

    [plain] view plain copy
     
    1. chown -R oracle:oinstall /home/oracle/app  


    8)配置oracle用户的环境变量,首先,切换到新创建的oracle用户下,
    输入:su – oracle ,然后直接在输入 : vi .bash_profile
    按i编辑 .bash_profile,进入编辑模式,增加以下内容:

    [plain] view plain copy
     
    1. export ORACLE_BASE=/home/oracle/app  
    2.    
    3. export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1  
    4.    
    5. export ORACLE_SID=orcl  
    6.    
    7. export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin  
    8.    
    9. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib  


    编辑完成后按Esc键,输入“:wq”存盘退出

    ps:我的云服务器没有防火墙,如果你们有,可以关闭
    --关闭防火墙 CentOS 7.2默认使用的是firewall作为防火墙

    [plain] view plain copy
     
    1. [humf@localhost /]$ su root  
    2. Password:   
    3. [root@localhost /]# systemctl status firewalld.service  #查看防火墙状态,运行中  
    4. ● firewalld.service - firewalld - dynamic firewall daemon  
    5.    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)  
    6.    Active: active (running) since Thu 2016-04-07 18:54:29 PDT; 2h 20min ago  
    7.  Main PID: 802 (firewalld)  
    8.    CGroup: /system.slice/firewalld.service  
    9.            └─802 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid  
    10.   
    11.   
    12. Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...  
    13. Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.  
    14. [root@localhost /]# systemctl stop firewalld.service  #关闭防火墙  
    15. [root@localhost /]# systemctl status firewalld.service  #再次查看防火墙状态,发现已关闭  
    16. ● firewalld.service - firewalld - dynamic firewall daemon  
    17.    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)  
    18.    Active: inactive (dead) since Thu 2016-04-07 21:15:34 PDT; 9s ago  
    19.  Main PID: 802 (code=exited, status=0/SUCCESS)  
    20.   
    21.   
    22. Apr 07 18:54:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...  
    23. Apr 07 18:54:29 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.  
    24. Apr 07 21:15:33 localhost systemd[1]: Stopping firewalld - dynamic firewall daemon...  
    25. Apr 07 21:15:34 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.  
    26. [root@localhost /]# systemctl disable firewalld.service  #禁止使用防火墙(重启也是禁止的)  
    27. Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.  
    28. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.  
    29. [root@localhost /]#   


     防火墙先禁用,搞好之后再配置,个人虚拟机,要毛线防火墙~~

    6.关闭selinux(需重启生效)

    [plain] view plain copy
     
    1. [root@localhost /]# vi /etc/selinux/config  
    2. [root@localhost /]# cat /etc/selinux/config  
    3.   
    4.   
    5. # This file controls the state of SELinux on the system.  
    6. # SELINUX= can take one of these three values:  
    7. #     enforcing - SELinux security policy is enforced.  
    8. #     permissive - SELinux prints warnings instead of enforcing.  
    9. #     disabled - No SELinux policy is loaded.  
    10. SELINUX=disabled   #此处修改为disabled  
    11. # SELINUXTYPE= can take one of three two values:  
    12. #     targeted - Targeted processes are protected,  
    13. #     minimum - Modification of targeted policy. Only selected processes are protected.   
    14. #     mls - Multi Level Security protection.  
    15. SELINUXTYPE=targeted   
    16.   
    17.   
    18. [root@localhost /]#   



    为啥要关闭selinux?因为selinux太高深,非专业人士搞不懂~~


    二、正式Oracle的安装过程


    1)当上述系统要求操作全部完成后,注销系统,在图形界面以Oracle用户登陆。


    PS:对于不会用图形界面的这边教你怎么用Windows远程连接Oracle图形界面
       前提: 
    2.1.1 CentOS已经安装桌面,如果无桌面,请执行 (yum不会的可以百度,这边不赘述了)

    [plain] view plain copy
     
    1. # yum -y groups install "GNOME Desktop"  
    2. # startx  

    2.1.2 配置源

    [plain] view plain copy
     
    1. <span style="white-space:pre;">     </span># yum install  epel* -y  

    2.1.3 安装xrdp

    [plain] view plain copy
     
    1. <span style="white-space:pre;"><span style="white-space:pre;">  </span> </span># yum --enablerepo=epel -y install xrdp  

    2.1.4 启动xrdp并设置开机启动

    [plain] view plain copy
     
    1. <span style="white-space:pre;">     </span># systemctl start xrdp  
    2.         # systemctl enable xrdp  


    2.1.5 打开Windows的远程工具输入服务器IP用Oracle账户登陆就行


    首先将下载的Oracle安装包复制到linux中,用SSH其他ftp工具拷贝。
    打开一个终端,运行unzip命令解压oracle安装文件,如:
    输入命令:

    [plain] view plain copy
     
    1. unzip linux.x64_11gR2_database_1of2.zip  
    2.    
    3. unzip linux.x64_11gR2_database_2of2.zip  



    解压完成后 cd 进入其解压后的目录database
    输入命令:

    [plain] view plain copy
     
    1. cd database  


    使用ls命令可以查看解压后database所包含的文件,如下图:

    2)执行安装,输入命令:./runInstaller

    装到这一步,可以看到,可以查看到有很多的rpm包没有,这里可以通过yum安装
    我这边的是操作系统:Oracle Linux 7 centos
    The following packages (or later versions) must be installed:
    binutils-2.23.52.0.1-12.el7.x86_64 
    compat-libcap1-1.10-3.el7.x86_64 
    gcc-4.8.2-3.el7.x86_64 
    gcc-c++-4.8.2-3.el7.x86_64 
    glibc-2.17-36.el7.i686 
    glibc-2.17-36.el7.x86_64 
    glibc-devel-2.17-36.el7.i686 
    glibc-devel-2.17-36.el7.x86_64 
    ksh
    libaio-0.3.109-9.el7.i686 
    libaio-0.3.109-9.el7.x86_64 
    libaio-devel-0.3.109-9.el7.i686 
    libaio-devel-0.3.109-9.el7.x86_64 
    libgcc-4.8.2-3.el7.i686 
    libgcc-4.8.2-3.el7.x86_64 
    libstdc++-4.8.2-3.el7.i686 
    libstdc++-4.8.2-3.el7.x86_64 
    libstdc++-devel-4.8.2-3.el7.i686 
    libstdc++-devel-4.8.2-3.el7.x86_64 
    libXi-1.7.2-1.el7.i686 
    libXi-1.7.2-1.el7.x86_64 
    libXtst-1.2.2-1.el7.i686 
    libXtst-1.2.2-1.el7.x86_64 
    make-3.82-19.el7.x86_64 
    sysstat-10.1.5-1.el7.x86_64 
    一个一个的安装,命令也很简单,反正文档要求高版本也可以:

    [plain] view plain copy
     
    1. [humf@localhost data]$ su root  
    2. Password:   
    3. [root@localhost data]# yum install binutils  


    省略...

    一个一个检查package,在准备阶段中漏掉的,此处再安装,有些系统报错是因为现有的包的版本比检测要高,最后右上角忽略即可

    3)安装过程是一个漫长的过程,中间有几次卡住,没有出现任何画面,屏幕中间有条小线,尝试多次,发现光标在该线上,右键点击Closed,不知道关闭了啥,又能继续安装了。先装吧,到时有问题看日志





    4)配置监听listener


    1)执行netca 报错

    [plain] view plain copy
     
    1. [Oracle@localhost ~]$ netca  
    2.   
    3.   
    4. Oracle Net Services Configuration:  
    5. #  
    6. # An unexpected error has been detected by HotSpot Virtual Machine:  
    7. #  
    8. #  SIGSEGV (0xb) at pc=0x00007f69a69fcb9d, pid=8033, tid=140092892297024  
    9. #  
    10. # Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_17-b03 mixed mode)  
    11. # Problematic frame:  
    12. # C  [libclntsh.so.11.1+0x62ab9d]  snlinGetAddrInfo+0x1b1  
    13. #  
    14. # An error report file with more information is saved as hs_err_pid8033.log  
    15. #  
    16. # If you would like to submit a bug report, please visit:  
    17. #   http://java.sun.com/webapps/bugreport/crash.jsp  
    18. #  
    19. /data/oracle/product/11.2.0/db_1/bin/netca: line 178:  8033 Aborted                 (core dumped) $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*  
    20. [oracle@localhost ~]$    



    错误原因:安装操作系统是默认主机名localhost造成错误

    解决办法:

    [plain] view plain copy
     
    1. racle]# cat /etc/sysconfig/network  
    2. # Created by anaconda  
    3.   
    4.   
    5. [root@localhost oracle]# vi /etc/sysconfig/network  #增加HOSTNAME  
    6. [root@localhost oracle]# cat /etc/sysconfig/network  
    7. # Created by anaconda  
    8. HOSTNAME=odb-sonny  
    9. [root@localhost oracle]# cat /etc/hosts  
    10. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
    11. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  
    12. [root@localhost oracle]# vi /etc/hosts  #增加HOSTNAME  
    13. [root@localhost oracle]# cat /etc/hosts       
    14. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 odb-sonny  
    15. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  
    16. [root@localhost oracle]# hostname odb-sonny  #执行  
    17. [root@localhost oracle]#    


    最后注销当前oracle用户,重新登陆即可!!这次发现打开配置界面正常




    5)创建Oracle数据实例Orcl


    执行dbca命令,启动oracle实例安装界面,剩下的与Windows上安装一样,不废话了:


    注意:必须先创建监听,并且监听是启动中,否则报错。





    经过漫长的等待,当看到此界面,说明oracle建库完成


    这样oracle服务器安装配置基本就完成了
    注意:
    1、Linux oracle数据库listener.ora存放路径

    [plain] view plain copy
     
    1. cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora  


    2、Linux oracle数据库tnsnames.ora存放路径

    [plain] view plain copy
     
    1. cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora  


    3、ORACLE启动监听器
    (1)切换至oracle安装用户(一般为oracle)

    [plain] view plain copy
     
    1. su - oracle   

    (2)启动监听器

    [plain] view plain copy
     
    1. lsnrctl start   

    (3)停止监听器

    [plain] view plain copy
     
    1. lsnrctl stop  

    4、启动测试oracle:

    [plain] view plain copy
     
    1. [oracle@oracle ~]$ sqlplus /nolog  
    2. SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012  
    3. Copyright (c) 1982, 2009, Oracle. All rights reserved.  
    4. SQL> quit  


    测试的另一种方法:找一台windows平台电脑,telnet oracle主机IP地址:1521,通的话,会出现一个黑屏,光标一闪一闪。
    5、Linux开放1521端口允许网络连接Oracle Listener
    症状:
    (1)TCP/IP连接是通的。可以用ping 命令测试。
    (2)服务器上Oracle Listener已经启动。
    lsnrctl status 查看listener状态
    lsnrctl start 启动Oracle listener 
    (3)客户端得到的错误信息通常是:ORA-12170: TNS:连接超时 
    这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)
    解决方法: 
    (1)假如你是在一个局域网环境,配置了防火墙。那么可以关闭Linux的防火墙。

    [plain] view plain copy
     
    1. sudo service iptables stop  

    (2)编辑iptables, 开放1521端口:

    [plain] view plain copy
     
    1. sudo vi /etc/sysconfig/iptables  
    2. -A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT   
    3. :wq  

    重启防火墙

    [plain] view plain copy
     
    1. sudo service iptables restart  

    保存配置,以便linux重启后依然有效

    [plain] view plain copy
     
    1. sudo service iptables save   

    查看防火墙规则:

    [plain] view plain copy
     
    1. sudo iptables -L –n  



    PS:如果你是云服务器,请看看自己的安全策略组有没有给1521添加


    6、linux下创建oracle用户表空间
    就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
    操作步骤如下:
    (1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
    (2)以sysdba方式来打开sqlplus,命令如下: sqlplus "/as sysdba"
    (3)查看我们常规将用户表空间放置位置:执行如下sql:

    [sql] view plain copy
     
    1. select name from v$datafile  

    (4)创建用户表空间:

    [sql] view plain copy
     
    1. CREATE TABLESPACE NOTIFYDB DATAFILE '/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;   

    (5)创建用户,指定密码和上边创建的用户表空间

    [sql] view plain copy
     
    1. CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;  

    (6)赋予权限

    [plain] view plain copy
     
    1. grant connect,resource to scs;  
    2. grant unlimited tablespace to scs;  
    3. grant create database link to scs;  
    4. grant select any sequence,create materialized view to scs;   


    --经过以上操作,我们就可以使用scs/scs登录指定的实例,创建我们自己的表了

    藏经阁技术资料分享群二维码

    藏经阁技术资料分享群二维码














  • 相关阅读:
    BZOJ2821 作诗(Poetize) 【分块】
    BZOJ2724 蒲公英 【分块】
    Codeforces 17E Palisection 【Manacher】
    BZOJ2565 最长双回文串 【Manacher】
    Codeforces 25E Test 【Hash】
    CODEVS3013 单词背诵 【Hash】【MAP】
    HDU2825 Wireless Password 【AC自动机】【状压DP】
    HDU2896 病毒侵袭 【AC自动机】
    HDU3065 病毒侵袭持续中【AC自动机】
    HDU2222 Keywords Search 【AC自动机】
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/9173713.html
Copyright © 2011-2022 走看看