zoukankan      html  css  js  c++  java
  • oracle-3-Linux-11g安装-静默安装

    oracle下载地址:https://www.oracle.com/database/technologies/112010-linx8664soft.html

    系统是最小化安装的Centos7.2

    Centos7下安装ORACLE 11g,弹窗不显示或者显示太小

    ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

    一、系统环境配置

    1、修改主机名
    hostnamectl  set-hostname oracledb
    exec bash
    
    2、添加hosts解析
    echo "11.11.11.2 oracledb" >> /etc/hosts3、关闭seLinux
    sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  
    setenforce 0
    
    4、关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    或
    firewall-cmd --zone=public --add-port=1521/tcp --permanent
    firewall-cmd --reload
    
    5、配置阿里云的yun源(不是必须的,可以不做)
    cd /etc/yum.repos.d/
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    mv CentOS-Base.repo CentOS-Base.repo_ori
    mv Centos-7.repo CentOS-Base.repo
    yum clean all
    yum makecache
    yum update
    
    6、安装依赖包
    yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel numactl-devel sysstat unixODBC unixODBC-devel kernelheaders pdksh pcre-devel readline rlwrap compat-libcap1 libXi libXtst
    
    
    7、检测是否有安装
    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
    
    
    8、新建oracle用户
    groupadd oinstall
    groupadd dba
    useradd -g oinstall -G dba oracle
    echo "oracle" | passwd --stdin oracle
    id oracle
    
    9、修改内核参数
    cat >> /etc/sysctl.conf <<EOF
    fs.file-max = 6815744
    kernel.shmall = 2097152
    kernel.shmmax = 1073741824  #最低:536870912,最大值:比物理内存小1个字节的值,建议超过物理内存的一半
    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
    EOF
    
    #参数的值不能小于上面的配置,这是oracle官方建议的最小值,生产环境建议调整这些参数,以优化系统性能。 sysctl
    -p 10、修改用户的限制文件 cat >>/etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 EOF

      9.修改/etc/pam.d/login文件
      ```bash
    cat >>/etc/pam.d/login <<EOF
    session required /lib64/security/pam_limits.so
    session required pam_limits.so
    EOF

    11、修改/etc/profile文件
    cat >>/etc/profile <<EOF
    if [ $USER = "oracle" ]; then
      if [ $SHELL = "/bin/ksh" ]; then
       ulimit -p 16384
       ulimit -n 65536
      else
       ulimit -u 16384 -n 65536
      fi
    fi
    EOF
    
    12、设置Oracle用户环境变量
    su - oracle
    
    vim /home/oracle/.bash_profile
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
    export ORACLE_SID=orcl           #如果要新建的数据库是itpuxdb,就应该写成itpuxdb
    export ORACLE_UNQNAME=$ORACLE_SID
    export PATH=$ORACLE_HOME/bin:$PATH
    export LANG="en_US"
    export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"   # 如果要求是UTP8的话,american_america.AL32UTF8
    export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
    
    或者
    echo 'export ORACLE_BASE=/u01/app/oracle' >> /home/oracle/.bash_profile
    echo 'export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' >> /home/oracle/.bash_profile
    echo 'export ORACLE_SID=orcl' >> /home/oracle/.bash_profile
    echo 'export ORACLE_UNQNAME=$ORACLE_SID' >> /home/oracle/.bash_profile
    echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /home/oracle/.bash_profile
    echo 'export LANG="en_US"' >> /home/oracle/.bash_profile
    echo 'NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG' >> /home/oracle/.bash_profile   # 如果要求是UTP8的话,american_america.AL32UTF8
    echo 'export LANG=C' >> /home/oracle/.bash_profile
    echo 'export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' >> /home/oracle/.bash_profile
    
    source ~/.bash_profile
    
    13、查看配置是否生效
    [oracle@oracledb ~]$ env |grep ORACLE
    ORACLE_SID=orcl
    ORACLE_BASE=/u01/app/oracle
    ORACLE_PID=ora11g
    ORACLE_HOME=/product/11.2.0/db_1
    
    14、创建安装目录、修改文件权限
    以下关于软件的目录不用改,关于数据的目录可改可不改
    su - root
    mkdir -p /u01/app/oracle/product/11.2.0/db_1    #软件安装目录
    mkdir -p /u01/app/oracle/oradata                  #数据文件存放目录
    mkdir -p /u01/app/oracle/inventory               #软件事件存放目录
    mkdir -p /u01/app/oracle/fast_recovery_area      #数据快速恢复区
    chown -R oracle:oinstall /u01/app/oracle
    chmod -R 775 /u01/app/oracle
    
    15、上传解压oracle安装包
    yum -y install lrzsz unzip
    cd /tmp
    rz -E         #将oracle的两个安装包上传到服务器上,目录无所谓
    unzip /tmp/p13390677_112040_Linux-x86-64_1of7.zip
    unzip /tmp/p13390677_112040_Linux-x86-64_2of7.zip

    二、静默安装Oracle数据库

    1.修改静默安装响应文件
    su - root
    cp /tmp/database/response/db_install.rsp /tmp/database/response/db_install.rsp.bak
    
    vim /tmp/database/response/db_install.rsp
    oracle.install.option=INSTALL_DB_SWONLY             # 安装类型
    ORACLE_HOSTNAME=oracledb                    # 主机名称(hostname查询)
    UNIX_GROUP_NAME=oinstall                # 安装组
    INVENTORY_LOCATION=/u01/app/oracle/oraInventory    #INVENTORY目录(不填就是默认值)
    SELECTED_LANGUAGES=en,zh_CN                 # 选择语言
    ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1     # oracle_home
    ORACLE_BASE=/u01/app/oracle                 # oracle_base
    oracle.install.db.InstallEdition=EE                #   oracle版本
    oracle.install.db.isCustomInstall=false           #  自定义安装,否,使用默认组件
    oracle.install.db.DBA_GROUP=dba             # dba用户组
    oracle.install.db.OPER_GROUP=oinstall             #  oper用户组
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE     # 数据库类型
    oracle.install.db.config.starterdb.globalDBName=orcl     # globalDBName
    oracle.install.db.config.starterdb.SID=orcl            # SID
    oracle.install.db.config.starterdb.memoryLimit=81920     # 自动管理内存的内存(M),可默认
    oracle.install.db.config.starterdb.password.ALL=oracle     # 设定所有数据库用户使用同一个密码
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false             #(手动写了false)
    DECLINE_SECURITY_UPDATES=true             # 设置安全更新
    
    2.执行静默安装
    su - oracle
    cd /tmp/database

    可能出现的报错:swap分区大小不够
    解决方法:
    dd if=/dev/zero of=/swapfile bs=1024 count=524288
    使用mkswap命令来设置交换文件:
    mkswap /swapfile
    启用交换分区:
    swapon /swapfile
    写入/etc/fstab,以便在引导时启用:
    /swapfile swap swap defaults 0 0

    4.配置监听
    su - oracle
    netca /silent /responseFile /tmp/database/response/netca.rsp
    #运行成功之后,会在
    /u01/app/oracle/product/11.2.0/db_1/network/admin/中生成listener.ora和sqlnet.ora两个文件。可自行进入这个目录查找这两个文件是否存在。

     注释:配置完成后默认就是启动状态,如果没有就启动下
     su - oracle
     lsnrctl start
     netstat -tunlp|grep 1521 

    三、静默建库

    5.查看监听端口
    su - root
    netstat -tnulp | grep 1521
    
    6、修改建库脚本
    su - root
    vim /tmp/database/response/dbca.rsp
    GDBNAME = "orcl"          #不要写成数字1了
    SID = "orcl"
    SYSPASSWORD = "oracle"
    SYSTEMPASSWORD = "oracle"
    SYSMANPASSWORD = "oracle"
    DBSNMPPASSWORD = "oracle"
    DATAFILEDESTINATION =/u01/app/oracle/oradata
    RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
    CHARACTERSET = "ZHS16GBK"          #注意:这里使用的GBK,如果需要使用UTF-8,则改成AL32UTF8
    TOTALMEMORY = "1638"            #可默认
    
    7、静默建库
    su - oracle
    [oracle@oracledb ~]$ dbca -silent -responseFile /tmp/database/response/dbca.rsp 
    Copying database files
    1% complete
    3% complete
    11% complete
    18% complete
    26% complete
    37% complete
    Creating and starting Oracle instance
    40% complete
    45% complete
    50% complete
    55% complete
    56% complete
    60% complete
    62% complete
    Completing Database Creation
    66% complete
    70% complete
    73% complete
    85% complete
    96% complete
    100% complete
    Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
    [oracle@oracledb ~]$ 
    
    8.建库后检查
    ps -ef |grep ora_|grep -v grep     #只有在启库的完成后才有进程出现,停库后就没有了进程了
    
    9、用超级管理员用户登录,并启动数据库
    su - oracle
    [oracle@oracledb ~]$ sqlplus / as sysdba
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 12 13:06:02 2019
    Copyright (c) 1982, 2009, Oracle.  All rights reserved.
    Connected to an idle instance.
    
    SQL> startup    
    ORACLE instance started.
    
    Total System Global Area 1068937216 bytes
    Fixed Size            2220200 bytes
    Variable Size          281022296 bytes
    Database Buffers      780140544 bytes
    Redo Buffers            5554176 bytes
    Database mounted.
    Database opened.
    SQL> select name from v$database;
    
    NAME
    ---------
    ORCL
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> 
    SQL> exit
    Disconnected from 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> select * from v$version;
    
    BANNER
    --------------------------------------------------------------------------------
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE    11.2.0.1.0    Production
    TNS for Linux: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production

    四、基本安全设置

    10.为超级管理员设置登录密码,并设置密码永不过期
    su - oracle
    sqlplus / as sysdba
    alter user sys identified by "NVvXRPrHFwLyJMrv";
    alter user system identified by "NVvXRPrHFwLyJMrv";
    
    11、禁止操作系统验证登陆数据库
    1)、使用正确的用户名和密码登陆数据库
    [oracle@oracledb ~]$ sqlplus sys/oracle as sysdba
    注释:斜杠“/”左面是用户名,右面是密码,此时,无论是否使用账号、使用错误的账号和密码都是可以正常登陆的。
    
    系统认证方式登录数据库禁用的方法很简单,仅需在sqlnet.ora配置文件中添加一条“SQLNET.AUTHENTICATION_SERVICES=(NONE)”即可。
    [oracle@oracledb ~]$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    SQLNET.AUTHENTICATION_SERVICES=(NONE)
    
    [oracle@oracledb ~]$ sqlplus sys/NVvXRPrHFwLyJMrv as sysdba
    
    SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 12 15:16:12 2019
    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> 
    11、 进一步提高系统的安全性
    因为sqlnet.ora文件默认条件下oracle用户可以对其进行任意修改,通过调整sqlnet.ora文件权限提高系统的安全性。
    
    1)调整sqlnet.ora文件的owner和权限信息
    [root@oracledb ~]# chown root:root /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    [root@oracledb ~]# chmod 744 /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    [root@oracledb ~]# ls -l /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    -rwxr--r-- 1 root root 256 11月 12 15:03 /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
    注释:调整之后,oracle用户将再无权限对sqlnet.ora文件进行调整。
    12、修改密码为永不过期
    (1)查看用户的proifle是哪个,一般是default:sql>SELECT username,PROFILE FROM dba_users;
       
    2)查看指定概要文件(如default)的密码有效期设置:sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
      
    3)将密码有效期由默认的180天修改成“无限制”:ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;(注:修改之后不需要重启动数据库,会立即生效。)
    
    (4)检验:sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
       

    修改之后不需要重启动数据库,会立即生效。
    4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;
    已经被提示的帐户必须再改一次密码,举例如下:
    sql> alter 数据库名 identified by <原来的密码> ----不用换新密码
     
    修改密码步骤:
    用管理员账号登录进去alter user 数据库名 identified by "要设置的密码";

    4. 设置Oracle开机启动

    修改 /u01/app/oracle/product/11.2.0/db_1/bin/dbstart 
    ORACLE_HOME_LISTNER=$ORACLE_HOME
    
    修改/u01/app/oracle/product/11.2.0/db_1/bin/dbshut 
    ORACLE_HOME_LISTNER=$ORACLE_HOME
    
    修改vi /etc/oratab
    orcl:/data/app/oracle/product/11.2.0:Y

    注释:在oracle账号下echo $ORACLE_HOME 可以查看到相应变量具体指明路径

     4.1、新建文件/etc/rc.d/init.d/oracle

    #! /bin/bash
    # oracle: Start/Stop Oracle Database 11g R2
    #
    # chkconfig: 345 90 10
    # description: The Oracle Database is an Object-Relational Database Management System.
    #
    # processname: oracle
    . /etc/rc.d/init.d/functions
    LOCKFILE=/var/lock/subsys/oracle
    ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
    ORACLE_USER=oracle
    case "$1" in
    'start')
       if [ -f $LOCKFILE ]; then
          echo $0 already running.
          exit 1
       fi
       echo -n $"Starting Oracle Database:"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
       touch $LOCKFILE
       ;;
    'stop')
       if [ ! -f $LOCKFILE ]; then
          echo $0 already stopping.
          exit 1
       fi
       echo -n $"Stopping Oracle Database:"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
       su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
       rm -f $LOCKFILE
       ;;
    'restart')
       $0 stop
       $0 start
       ;;
    'status')
       if [ -f $LOCKFILE ]; then
          echo $0 started.
          else
          echo $0 stopped.
       fi
       ;;
    *)
       echo "Usage: $0 [start|stop|status]"
       exit 1
    esac
    exit 0

     4.2、权限设置

    给/etc/init.d/oracle添加执行权限
    chmod +x /etc/init.d/oracle
    
    开机启动oracle
    systemctl enable oracle
    或
    chkconfig oracle on
    
    给启动文件加权限
    cd /data/app/oracle/product/11.2.0/bin/
    chmod 6751 oracle
    cd /var/tmp
    chown -R oracle:oinstall .oracle

     5、开启实例(使用SQL*PLUS)

    STARTUP [选项]
    选项说明:
    
    NOMOUNT—开启实例,不加载数据库.允许访问数据库,仅用于创建数据库或重建控制文件
    MOUNT—开启实例,并加载数据库,但不打开数据库。允许DBA进行操作,但是不允许普通的数据库访问
    OPEN—开启实例,加载数据库,打开数据库,等同STARTUP
    FORCE-在启动或关闭遇到问题时,强制启动实例
    OPEN RECOVER—在完成完整的备份后启动实例。
    注意:通过共享服务处理器即共享池,连接到数据库无法启动实例

    6、Navicat Premium 连接oracle 

    前提:oracle要启动监听1521端口,实例也要起来,否则连接时报ORA-12514

    连接时报错:ORA-28547:connection to server failed, probable Oracle Net admin error
    
    如果使用Navicat连接Oracle服务器出现ORA-28547错误时,多数是因为Navicat本地的OCI版本与Oracle服务器服务器不符造成的。所以我们要做的就是下载OCI使之与我们所安装的Oracle服务器相符合。
    
    OCI下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
    链接:https://pan.baidu.com/s/1UtLSnScK1dS8SjS_SDwvqA 提取码:djfj  
    下载下来后解压到D盘的某个目录下

     FAQ:

    1、TNS-01106: Listener using listener name LISTENER has already been started

    [oracle@oracledb ~]$ lsnrctl start
    LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 06-FEB-2017 15:30:14
    Copyright (c) 1991, 2014, Oracle.  All rights reserved.
    
    TNS-01106: Listener using listener name LISTENER has already been started
    -- 通过ps 命令没有发现 监听的进程
    
    [root@sh ~]# ps -ef | grep -i tns
    root        36     2  0 Jan26 ?        00:00:00 [netns]
    root     14995 14824  0 15:30 pts/1    00:00:00 grep -i tns
    
    -- 这个问题基本2个原因导致, :
    1,  /etc/hosts 文件中的 ip和主机名不一致
    2, listener.ora 中监听主机非当前主机.
    
    排查步骤:
    su - oracle
    hostname    #确定当前系统名称
    vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
    vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
    确定这两个文件下的hosts=的是当前主机名
     (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))     #确定HOST=的是主机名称
    
    然后重启系统
    
    [oracle@oracledb ~]$ lsnrctl start      #启系统
    netstat -tnulp | grep 1521    #查看监控是否正常
  • 相关阅读:
    注册博客园
    算法与数据结构-树-简单-二叉搜索树中的众数
    算法与数据结构-最小化舍入误差以满足目标
    算法与数据结构-设计有限阻塞队列
    分布式学习笔记2
    JS学习笔记1
    生活-上海租房经验
    分布式技术-学习笔记1
    HashMap-线程不安全的原因
    MySQL-复制
  • 原文地址:https://www.cnblogs.com/huangyanqi/p/11600359.html
Copyright © 2011-2022 走看看