Oracle数据库

CentOS 7下Oracle 12C 无图形界面静默安装

2019-12-14  本文已影响0人  火鸡不肥

一、安装环境
二、安装包下载
三、环境配置
四、安装及配置

文章参考链接

一、安装环境

以下安装环境是在虚拟机测试环境,仅供参考

操作系统:CentOS 7
内存:4G
CPU:单核
硬盘:50G
交换空间:4G

二、安装包下载

下载地址

三、环境配置

  1. 关闭防火墙

    # systemctl stop firewalld.service --关闭防火墙
    
    # systemctl disable firewalld.service -- 禁止防火墙开机启动
    
  2. 关闭selinux

    # setenforce 0
    
    # getenforce
    Permissive
    
    # vim /etc/selinux/config
    文件中设置SELINUX=disabled
    
  3. 修改host(可省略)

    # echo "10.0.0.40   huojibufei-oracle" >> /etc/hosts
    
    # cat /etc/hosts
    
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.0.40   huojibufei-oracle
    
  4. 安装必要的依赖包

    Packages for Oracle Linux 7 and Red Hat Enterprise Linux 7

    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
    
    # yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
    
    # rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
    
  5. 创建用户和组

    # groupadd oinstall
    # groupadd dba
    
    # useradd -g oinstall -G dba oracle
    # passwd oracle
    # id oracle
    uid=1000(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)
    
  6. 修改内核参数(根据需要修改 此为32G内存)

    vim /etc/sysctl.conf

    追加

    fs.aio-max-nr=1048576
    fs.file-max=6815744
    kernel.shmall=8388608
    kernel.shmmax=34359738367
    kernel.sem=250 32000 100 128
    kernel.shmmni=4096
    kernel.panic_on_oops=1
    net.core.rmem_default=262144
    net.core.rmem_max=4194304
    net.core.wmem_default=262144
    net.core.wmem_max=1048576
    net.ipv4.conf.all.rp_filter=2
    net.ipv4.conf.default.rp_filter=2
    fs.aio-max-nr=1048576
    net.ipv4.ip_local_port_range=9000 65500
    

参数说明(一脸懵逼)

fs.aio-max-nr:
    此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
fs.file-max:
    该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
kernel.shmall:
    该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求.
kernel.shmmax:
    是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
官方建议值:
    32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。
    64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为12GB物理内存,可取1210241024*1024-1=12884901887。
kernel.shmmni:
    该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem:
    以kernel.sem = 250 32000 100 128为例:

    250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。

    32000是参数semmns的值,表示系统内可允许的信号量最大数目。

    100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。

    128是参数semmni的值,表示系统信号量集合总数。

net.ipv4.ip_local_port_range:
    表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:
    表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:
    表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:
    表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:
    表示套接字发送缓冲区大小的最大值。

使配置文件生效

sysctl -p

  1. 修改配置

    vim /etc/security/limits.conf

    追加

    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    

    第1行是设置进程数软限制
    第2行是设置进程数硬限制
    第3行是设置文件数软限制
    第4行是设置文件数硬限制

    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
    

    source /etc/profile

  2. 挂载硬盘

    ·dd if=/dev/zero of=/var/swap bs=1024 count=8192000·添加swap

    fdisk /dev/sdb
    n p 1 默认 默认 w
    vim /etc/fstab
    追加
    
    mount -a
    
    df -h查看
    
  1. 创建数据库目录

    # mkdir -p /data/oracle  
    # chown -R oracle:oinstall /data/oracle/  
    # chmod -R 775 /data/oracle/
    
  2. 配置oracle用户

su - oracle

vim ~/.bash_profile

追加

export ORACLE_BASE=/data/oracle/oracIns
export ORACLE_SID=orcl

source ~/.bash_profile

四、安装及配置

  1. 上传Oracle安装包

    mkdir /home/oracle/oradb

  2. 安装unzip

    su root

    rpm -ivh unzip-6.0-20.el7.x86_64.rpm

    su - oracle

    unzip -d /home/oracle/oradb/ /opt/oracle12cR2_linux64.zip

  3. 复制模板

    cd /home/oracle
    mkdir etc
    cp /home/oracle/oradb/database/response/* /home/oracle/etc
    

    su root

    chmod -R 700 /home/oracle/etc/*.rsp

  4. 编辑文件内容

    su - oracle

    vim /home/oracle/etc/db_install.rsp

    找出以下项,根据个人实际情况修改(还是一脸懵逼)

    oracle.install.option=INSTALL_DB_SWONLY // 安装类型  
    UNIX_GROUP_NAME=oinstall // 安装组  
    INVENTORY_LOCATION=/data/oracle/oraInventory //INVENTORY目录(不填就是默认值)  
    ORACLE_HOME=/data/oracle/oracIns/product/12/db_1
    ORACLE_BASE=/data/oracle/oracIns
    oracle.install.db.InstallEdition=EE     // 企业版本  
    oracle.install.db.OSDBA_GROUP=dba
    oracle.install.db.OSOPER_GROUP=oinstall  
    oracle.install.db.OSBACKUPDBA_GROUP=oinstall  
    oracle.install.db.OSDGDBA_GROUP=oinstall  
    oracle.install.db.OSKMDBA_GROUP=oinstall  
    oracle.install.db.OSRACDBA_GROUP=oinstall  
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型  
    oracle.install.db.config.starterdb.globalDBName=orcl  
    oracle.install.db.config.starterdb.SID=orcl  
    oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M)  
    oracle.install.db.config.starterdb.password.ALL=oracle//设定所有数据库用户使用同一个密码  
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false  
    DECLINE_SECURITY_UPDATES=true
    
  5. 开始安装

    cd /home/oracle/oradb/database

    ./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile /home/oracle/etc/db_install.rsp


    su root

    /data/oracle/oraInventory/orainstRoot.sh

    /data/oracle/oracIns/product/12/db_1/root.sh

  6. 修改oracle用户环境变量

    su - oracle

    vim ~/.bash_profile

    export ORACLE_BASE=/data/oracle/oracIns
    export ORACLE_SID=orcl
    export ORACLE_PID=oral12
    #export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
    export ORACLE_HOME=$ORACLE_BASE/product/12/db_1
    export PATH=$PATH:$ORACLE_HOME/bin
    export LANG="zh_CN.UTF-8"
    export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
    export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
    

    配置监听

    cd /home/oracle/etc/

    netca /silent /responsefile /home/oracle/etc/netca.rsp

    lsnrctl start

    若有报错 参照此处手动创建listen配置文件

    vim /data/oracle/oracIns/product/12/db_1/network/admin/listener.ora
    
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = orcl)
          (ORACLE_HOME = /data/oracle/oracIns/product/12/db_1)
          (SID_NAME = orcl)
        )
      )
    
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = huojibufei-oracle)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
    
  7. 修改静默建库文件

    vim /home/oracle/etc/dbca.rsp

    responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0  
    gdbName=orcl  
    sid=orcl  
    databaseConfigType=SI  
    createAsContainerDatabase=true  
    numberOfPDBs=1  
    pdbName=orclpdb  
    templateName=/data/oracle/oracIns/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc  
    emExpressPort=5500  
    omsPort=0  
    characterSet=ZHS16GBK  
    listeners=LISTENER  
    memoryPercentage=40  
    automaticMemoryManagement=false  
    totalMemory=0
    

    执行静默建库

    dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp

    ·dbca -silent -deleteDatabase -sourcedb orcl -sid orcl·

    [oracle@huojibufei etc]$ dbca -silent -createDatabase  -responseFile  /home/oracle/etc/dbca.rsp
    输入 SYS 用户口令: 
    
    输入 SYSTEM 用户口令: 
    
    输入 PDBADMIN 用户口令: 
    
  8. 切换PDB

    sqlplus / as sysdba
    
    startup
    
    show con_name;
    
    show pdbs;
    
    # 切换容器
    alter session set container=ORCLPDB;
    
    - startup(如果pdb容器为mount状态,startup一下)
    - 可以让CDB重启后,pdb维持其关机前的状态
        - alter pluggable database ORCLPDB save state;
        - alter pluggable database ORCLPDB discard state;
    
    # 创建用户及赋权
    create user huojibufei identified by huojibufei;
    
    grant connect, resource to huojibufei;
    grant create view to huojibufei;
    # 表空间权限
    grant unlimited tablespace to huojibufei;
    
    select username from dba_users where INHERITED='NO';
    
    # 查看监听状态
    lsnrctl status
    
    
  9. 修改字符集为gbk

    su - oracle
    sqlplus / as sysdba
    select * from v$version;
    shutdown immediate
    startup mount
    
    alter session set sql_trace=true; 
    alter system enable restricted session; 
    alter system set job_queue_processes=0; 
    alter system set aq_tm_processes=0;
    alter database open;
    alter database character set internal_use ZHS16GBK;
    shutdown immediate;
    startup
    
    select userenv('language') from dual;
    select * from nls_database_parameters;
    
    alte1000 ystem set job_queue_processes=1000;
    
上一篇下一篇

猜你喜欢

热点阅读