Linux-CentOS7下安装Oracle11g

时间:2023-03-09 19:27:36
Linux-CentOS7下安装Oracle11g

简述:

  • 本文操作环境采用CentOS7

  • Linux安装Oracle11g与Windows区别较大,在Linux下需要创建用户以及用户组来供Oracle使用

  • Windows可以直接图形化界面从第一步到最后启动服务和监听;Linux下安装采用静默安装则需要手动配置监听、实例、以及环境变量等设置;

下面详细介绍Oracle11g安装步骤

一、准备工作:

  1. 官方网站下载Linux版Oracle11g安装包(附下载地址)

    https://www.oracle.com/database/technologies/112010-linx8664soft.html
  2. 上传到Linux服务器,可采用Winscp工具、也可XShell、或者更好用的MobaXterm

  3. 在Linux下新建目录并且解压zip文件到同一个文件夹内

    下面详细介绍并且附上图片说明

二、详细步骤

  1. 下载oracle11压缩包并且上传到linux的目录下,此处我新建目录如下。

    [root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]# pwd
    /home/sakus/oracle/install/zipbackpage
    [root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]# ls
    linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip
    [root@iZ2zeifizy1bjjjvpnk71fZ zipbackpage]#

    把压缩包放在zipbackpage中,再解压的时候解压到install目录下

  2. 解压zip包

    [root@iZ2zeifizy1bjjjvpnk71fZ]# unzip linux.x64_11gR2_database_1of2.zip
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# unzip linux.x64_11gR2_database_2of2.zip

    如果没有unzip工具,则需要手动安装一下,执行一下命令

    yum install zip
    yum install unzip

    把解压后的database文件夹整个挪到新建的目录[/home/sakus/oracle/install]下

  3. 关闭selinux

    [root@iZ2zeifizy1bjjjvpnk71fZ /]# vim /etc/selinux/config
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    # enforcing - SELinux security policy is enforced.
    # permissive - SELinux prints warnings instead of enforcing.
    # disabled - No SELinux policy is loaded.
    SELINUX=disabled #此处修改为disable
    # SELINUXTYPE= can take one of three two values:
    # targeted - Targeted processes are protected,
    # minimum - Modification of targeted policy. Only selected processes are protected.
    # mls - Multi Level Security protection.
    SELINUXTYPE=targeted

    执行:

    [root@iZ2zeifizy1bjjjvpnk71fZ /]# setenforce 0
    setenforce: SELinux is disabled
  4. 关闭防火墙

    ---CentOS7操作步骤,CentOS6以下自行百度查看一下步骤

    [root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl restart firewalld.service
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl list-unit-files|grep firewalld.service
    
    firewalld.service                             disabled
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# systemctl disable firewalld.service
  5. 安装Oracle11g 所需依赖

    [root@iZ2zeifizy1bjjjvpnk71fZ]# yum install gcc make binutils gcc-c++ compat-libstdc++-33elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-develnumactl-devel sysstat unixODBC unixODBC-devel pcre-devel –y
  6. 添加安装用户以及用户组

    [root@iZ2zeifizy1bjjjvpnk71fZ]# groupadd oinstall
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# groupadd dba
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# useradd -g oinstall -G dba oracle
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# passwd oracle
    
    Changing password for user oracle.
    
    New password:
    
    BAD PASSWORD: The password is shorter than 8 characters
    
    Retype new password:
    
    passwd: all authentication tokens updated successfully.
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# id oracle
    
    uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba)
  7. 修改Linux内核参数的配置文件

    [root@iZ2zeifizy1bjjjvpnk71fZ /]# vim /etc/sysctl.conf

    在文件末尾增加如下配置

    ##oracle config date 2020-11-18
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 1073741824
    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
    [root@iZ2zeifizy1bjjjvpnk71fZ /]# sysctl -p
    vm.swappiness = 0
    net.ipv4.neigh.default.gc_stale_time = 120
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.lo.arp_announce = 2
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.tcp_max_tw_buckets = 5000
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 1024
    net.ipv4.tcp_synack_retries = 2
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    net.ipv6.conf.lo.disable_ipv6 = 1
    kernel.sysrq = 1
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 1073741824
    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

    看到添加的内容则表示添加成功并且生效了

  8. 修改用户的限制文件

    vim /etc/security/limits.conf

    在文件末尾增加如下配置

    #oracle config date 2020-11-18
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    oracle soft stack 10240

    修改/etc/pam.d/login文件

    vim /etc/pam.d/login

    文件末尾增加如下配置

    session required  /lib64/security/pam_limits.so
    session required pam_limits.so

    修改/etc/profile

    vim /etc/profile

    文件末尾增加如下配置

    ##oracle config date 2020-11-18
    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi
  9. 创建安装目录并且设置文件权限

    [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir -p /data/oracle/product/11.2.0
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/oradata
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/inventory
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# mkdir /data/oracle/fast_recovery_area
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# chown -R oracle:oinstall /data/oracle
    
    [root@iZ2zeifizy1bjjjvpnk71fZ]# chmod -R 775 /data/oracle

    此处大多数都认为仅设置775权限即可,不需要设置太高

  10. 设置Oracle的用户环境变量

    切换用户到Oracle
    [root@iZ2zeifizy1bjjjvpnk71fZ]# su -l oracle
    [oracle@iZ2zeifizy1bjjjvpnk71fZ]$ vim .bash_profile

    文件末尾增加如下内容

    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH
    ORACLE_BASE=/data/oracle
    ORACLE_HOME=$ORACLE_BASE/product/11.2.0
    ORACLE_SID=orcl
    PATH=$PATH:$ORACLE_HOME/bin
    export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
    ~
    ~

    ORACLE_SID必须与数据库的创建时候的实例名一致,否则无法启动实例

    执行
    source .bash_profile
  11. 静默安装Oracle的响应文件

    复制安装文件夹response到当前oracle用户的家目录下:
    
    [oracle@iZ2zeifizy1bjjjvpnk71fZ]$ cp -R /home/sakus/oracle/install/database/response/ .
    
    [oracle@iZ2zeifizy1bjjjvpnk71fZ]$ cd response/
    
    [oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ vim db_install.rsp
    
    

    增加如下配置

    oracle.install.option=INSTALL_DB_SWONLY
    
    ORACLE_HOSTNAME=CentOS
    
    UNIX_GROUP_NAME=oinstall
    
    INVENTORY_LOCATION=/data/oracle/inventory
    
    SELECTED_LANGUAGES=en,zh_CN
    
    ORACLE_HOME=/data/oracle/product/11.2.0
    
    ORACLE_BASE=/data/oracle
    
    oracle.install.db.InstallEdition=EE
    
    oracle.install.db.DBA_GROUP=dba
    
    oracle.install.db.OPER_GROUP=dba
    
    DECLINE_SECURITY_UPDATES=true
  12. 根据响应文件安装oracle11g

    • 切换到database目录

      [oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ cd /home/sakus/oracle/install/database/
    • 执行静默安装

      [oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq

    此处可能提示交换空间不足,先查看一下然后执行如下操作,如果没有遇到请忽略

    [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ free
    total used free shared buff/cache available
    Mem: 3734288 227224 166016 995936 3341048 2234452
    Swap: 524284 0 524284

    参考此文章操作,需要切换到root用户下执行

    https://www.cnblogs.com/gw811/p/4044436.html

    防止文章丢失,引用到此

    摘:linux下安装Oracle时交换空间不足的解决方法
    linux上安装Oracle时交换空间不足的解决办法
    增加交换空间有两种方法:
    严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法,
    至于第一种方法应该是安装系统时设置交换区。
    1、使用分区:
    在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。
    这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。
    2、使用swapfile:(或者是整个空闲分区)
    新建临时swapfile或者是空闲分区,在需要的时候设定为交换空间,最多可以增加8个swapfile。
    交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。
    在系统启动后根据需要在2G的总容量下进行增减。
    这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。
    下面是运用swapfile增加交换空间的步骤:
    涉及到的命令:
    free ---查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况;
    dd ---读取,转换并输出数据命令;
    mkswap ---设置交换区
    swapon ---启用交换区,相当于mount
    swapoff ---关闭交换区,相当于umount
    步骤:
    1、创建swapfile:
    root权限下,创建swapfile,假设当前目录为"/",执行如下命令:
    # dd if=/dev/zero of=swapfile bs=1024 count=500000
    则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中,
    个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了;
    命令中选项解释:
    ---of:输出的交换文件的路径及名称;
    ---bs:块大小,单位byte,一般为1k即1024个byte;
    ---count:总块数即空间总大小,单位为块即k;
    ---if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧;
    2、将swapfile设置为swap空间
    # mkswap swapfile
    3、启用交换空间,这个操作有点类似于mount操作(个人理解):
    # swapon swapfile
    至此增加交换空间的操作结束了,可以使用free命令查看swap空间大小是否发生变化;
    4、如果不再使用空间可以选择关闭交换空间,这个操作有点类似于umount操作(个人理解)::
    # swapoff swapfile
    使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法:
    在 /etc/rc.d/rc.local 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~)
    /sbin/swapon /swapfile
    保存后退出,这样在系统启动后,swap空间就会自动加载了;
    总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些, 想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。添加swap交换空间的步骤如下:
    第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件
    第二步:添加交换文件并设置其大小为2G,使用如下命令
    [root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000
    过段时间就返回如下结果:
    2048000+0 records in
    2048000+0 records out
    2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s
    第三步:创建(设置)交换空间,使用命令mkswap
    [root@sense image]# mkswap /opt/image/swap
    Setting up swapspace version 1, size = 2097147 kB
    第四步:检查现有的交换空间大小,使用命令free
    [root@sense image]# free -m
    total used free shared buffers cached
    Mem: 1011 989 21 0 1 875
    -/+ buffers/cache: 112 898
    Swap: 1027 0 1027
    或者检查meminfo文件
    grep SwapTotal /proc/meminfo
    第五步:启动新增加的2G的交换空间,使用命令swapon
    [root@sense image]# swapon /opt/image/swap
    第六步:确认新增加的2G交换空间已经生效,使用命令free
    [[root@sense image]# free -m
    total used free shared buffers cached
    Mem: 1011 995 15 0 4 877
    -/+ buffers/cache: 113 897
    Swap: 3027 0 3027
    或者检查meminfo文件
    grep SwapTotal /proc/meminfo
    第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效
    在文件最后加入:
    /opt/image/swap swap swap defaults 0 0

    注意切换到Oracle用户下继续执行静默安装命令

    [oracle@iZ2zeifizy1bjjjvpnk71fZ response]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq

    当出现:

    ​ Successfully Setup Software表示安装成功,中间提示warning不需要理会,当提示成功以后可以退出当前窗口了,切换到root用户继续执行一下操作

    执行1:
    sh /data/oracle/inventory/orainstRoot.sh
    执行结果如下:
    
    Changing permissions of /data/oracle/inventory.
    
    Adding read,write permissions for group.
    
    Removing read,write,execute permissions for world.
    
    Changing groupname of /data/oracle/inventory to oinstall.
    
    The execution of the script is complete.
    执行2:
    sh /data/oracle/product/11.2.0/root.sh
    执行结果如下:
    Check /data/oracle/product/11.2.0/install/root_iZ2f570bi1k56uZ_2018-05-13_14-25-04.log for the output of root script
  13. 配置监听

    • 切换到oracle登录

      su -l oracle
    • 执行

      netca /silent /responseFile /home/oracle/response/netca.rsp

      提示 Listener start Successful表示成功

      配置成功以后在/data/oracle/product/11.2.0/network/admin中可以看到监听文件

      listener.ora

    • netstat查看端口情况

      [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ netstat -an | grep 1521
      tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN
      tcp 0 0 172.22.11.111:1521 172.22.11.211:60173 ESTABLISHED
      tcp 0 0 172.22.11.211:60173 172.22.11.211:1521 ESTABLISHED
      unix 2 [ ACC ] STREAM LISTENING 1571367 /var/tmp/.oracle/sEXTPROC1521
      [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$

      表示监听启用成功

      安装netstat软件

      yum install net-tools
  14. 简历数据库,添加实例

    [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ vim /home/oracle/response/dbca.rsp
    [GENERAL]
    
    # oracle版本,不能更改
    RESPONSEFILE_VERSION = "11.2.0" # Description : Type of operation
    OPERATION_TYPE = "createDatabase" [CREATEDATABASE] # Description : Global database name of the database
    # 全局数据库的名字=SID+主机域名# 第三方工具链接数据库的时候使用的service名称
    GDBNAME = "orcl.myorcl" # Description : System identifier (SID) of the database
    # 对应的实例名字
    SID = "orcl" # Description : Name of the template
    # 建库用的模板文件
    TEMPLATENAME = "General_Purpose.dbc" # Description : Password for SYS user
    # SYS管理员密码
    SYSPASSWORD = "123456" # Description : Password for SYSTEM user
    # SYSTEM管理员密码
    SYSTEMPASSWORD = "123456" # Description : Password for SYSMAN user
    # SYSMAN管理员密码
    SYSMANPASSWORD = "123456" # Description : Password for DBSNMP user
    # DBSNMP管理员密码
    DBSNMPPASSWORD = "123456" # Description : Location of the data file's
    # 数据文件存放目录
    DATAFILEDESTINATION =/data/oracle/oradata # Description : Location of the data file's
    # 恢复数据存放目录
    RECOVERYAREADESTINATION=/data/oracle/fast_recovery_area # Description : Character set of the database
    # 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
    # (CHARACTERSET = "AL32UTF8" NATIONALCHARACTERSET= "UTF8")
    CHARACTERSET = "ZHS16GBK" # Description : total memory in MB to allocate to Oracle
    # oracle内存1638MB,物理内存2G*80%
    TOTALMEMORY = "1638"

    进行静默配置

    dbca -silent -responseFile /home/oracle/response/dbca.rsp

    检查进程实例

    ps -ef | grep ora_ | grep -v grep

    检查监听状态

    lsnrctl status

    如果此处执行有问题,请检查需要设置ORACLE_HOME

    数据库创建完成以后可以再/data/oracle/cfgtoollogs/dbca/orcl/orcl.log看到日志文件

  15. 测试登录状态

    sqlplus / as sysdba
    [oracle@iZ2zeifizy1bjjjvpnk71fZ database]$ sqlplus / as sysdba
    
    SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 19 15:05:24 2020
    
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL>

    表示登录成功,实例成功启动,监听也成功启动。

  16. 安装完成以后创建Oracle表空间以及用户

    需要执行以下内容

    --创建表空间
    CREATE TABLESPACE NNC_DATA01 DATAFILE '/data/oracle/oradata/orcl/nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
    CREATE TABLESPACE NNC_DATA02 DATAFILE '/data/oracle/oradata/orcl/nnc_data02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
    CREATE TABLESPACE NNC_DATA03 DATAFILE '/data/oracle/oradata/orcl/nnc_data03.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K ;
    CREATE TABLESPACE NNC_INDEX01 DATAFILE '/data/oracle/oradata/orcl/nnc_index01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ;
    CREATE TABLESPACE NNC_INDEX02 DATAFILE '/data/oracle/oradata/orcl/nnc_index02.dbf' SIZE 300M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K ;
    CREATE TABLESPACE NNC_INDEX03 DATAFILE '/data/oracle/oradata/orcl/nnc_index03.dbf' SIZE 500M AUTOEXTEND ON NEXT 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ; --创建用户
    CREATE USER username2019 IDENTIFIED BY password2019 DEFAULT TABLESPACE NNC_DATA01 TEMPORARY TABLESPACE temp;
    --用户授权
    GRANT connect,dba to username2019;
    --创建备份文件夹
    create directory exp_dir as '/data/oracle/oradata/orcl/dmpfile';
    --授权文件夹操作给用户
    grant read,write on directory exp_dir to username2019;