CentOS7 Oracle12c 静默安装

Stella981
• 阅读 856

CentOS7 Oracle12c 静默安装
izaibuzai 2018-11-11 14:26:35 5598 收藏 11
分类专栏: CentOS7 Oracle
版权

参考:

http://blog.51cto.com/12790274/2062955

https://blog.csdn.net/github\_39294367/article/details/77057149

https://blog.csdn.net/sinat\_41525226/article/details/78909706

https://blog.csdn.net/dbagaoshou/article/details/78964122

一、准备工作:

1.VM虚拟机:

2.CentOS7 映像:

3.Oracle12c 安装包:

4.Linux系统远程工具

5.文本编辑工具

二、系统环境部署

1.新建虚拟机,这里设置的两个虚拟硬盘属于个人习惯,可以忽略,主要用于试验;

2.安装CentOS7系统,这里安装的是64位的系统

3.系统安装时选择的是最小安装,使用的时候连 ifconfig 也用不了,正好把回顾一遍 yum 安装相关知识

CentOS7 设置yum安装的本地资源为光盘资源

CentOS7 ifconfig命令无法使用的解决办法

CentOS7 修改设置静态IP和DNS

【注意】修改IP和主机名,要设置一下HOSTS配置文件,不然启动oracle监听和实例会比较慢

    [root@vs ~]# vi /etc/hosts
     
    # 增加信息格式如下:
    IP地址    主机名

三、安装Oracle数据库系统

1.检查oracle所需包 (以root身份操作)

rpm -q binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

2.安装oracle依赖包(以root身份操作)  

yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686 glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.i686 libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686 libXtst libXtst*.i686 libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686  libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

    # 也可以分段执行,避免遗漏
    yum install -y compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*.i686
    yum install -y glibc*.i686 glibc-devel glibc-devel*.i686
    yum install -y ksh libaio*.i686 libaio-devel libaio-devel*.i686
    yum install -y libX11 libX11*.i686 libXau libXau*.i686 libXi libXi*.i686
    yum install -y libXtst libXtst*.i686 libgcc*.i686 libstdc++*.i686 libstdc++-devel libstdc++-devel*.i686
    yum install -y libxcb libxcb*.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel
    yum install -y gcc gcc-c++ libXext libXext*.i686 zlib-devel zlib-devel*.i686 unzip

3.修改内核参数(参考的资料有这么一段,考虑到这个是系统性能优化的设置,所以没有做这一步)

    [root@Oracle ~]# vim /etc/sysctl.conf
     
    #修改或添加以下内容
    fs.aio-max-nr = 1048576  
    fs.file-max = 6815744               // 设置最大打开文件数  
    kernel.shmall = 16777216            // 共享内存的总量,8G内存设置:2097152*4k/1024/1024
    kernel.shmmax = 34359738360         // 最大共享内存的段大小,G换算成k计算
    kernel.shmmni = 4096                // 整个系统共享内存端的最大数  
    kernel.sem = 250 32000 100 128  
    net.ipv4.ip_local_port_range = 9000 65500        // 可使用的IPv4端口范围  
    net.core.rmem_default = 262144  
    net.core.rmem_max = 4194304  
    net.core.wmem_default = 262144  
    net.core.wmem_max = 1048576
     
    #
    [root@Oracle ~]# sysctl -p
     
    # 检查并生效
    [root@Oracle ~]# sysctl -a

4.创建用户组和用户(以root身份操作)

    [root@Oracle ~]# groupadd oinstall
    [root@Oracle ~]# groupadd dba
    [root@Oracle ~]# groupadd oper
    [root@Oracle ~]# useradd -g oinstall -G dba,oper oracle
    #修改用户密码
    [root@Oracle ~]# passwd oracle
    或
    [root@Oracle ~]# echo "123456" | passwd --stdin oracle

5.创建相关目录

    [root@Oracle ~]# mkdir /u01
    [root@Oracle ~]# mkdir -p /u01/app/oracle                 //oracle数据库安装目录
    [root@Oracle ~]# mkdir -p /u01/app/oraInventory           //oracle数据库配置文件目录
    [root@Oracle ~]# mkdir -p /u01/app/oracle/oradata         //存放数据库的数据目录
    [root@Oracle ~]# mkdir -p /u01/app/oracle/oradata_back    //存放数据库备份文件
    [root@Oracle ~]# chmod -R 775 /u01/app
    [root@Oracle ~]# chown -R oracle:oinstall /u01            //设置目录所有者为oinstall用户组的oracle用户

6.修改etc/profile

    if [ $USER = "oracle" ]; then  
            if [ $SHELL = "/bin/ksh" ]; then  
                  ulimit -p 16384  
                  ulimit -n 65536a  
            else  
                  ulimit -u 16384 -n 65536  
            fi  
    fi

7.修改/home/oracle/.bash_profile

    #oracle数据库安装目录
    ORACLE_BASE=/u01/app/oracle
    #oracle数据库路径
    ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
    #oracle启动数据库实例名
    ORACLE_SID=orcl
    #添加系统环境变量
    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

    # 使配置生效
    [root@Oracle ~]# source /home/oracle/.bash_profile

8.配置Java环境

    [root@Oracle ~]# java -version                     # 查看安装版本
    [root@Oracle ~]# yum remove openjdk                # 如果是系统自带的openjdk,则卸载
    [root@Oracle ~]# rpm -ivh jdk-8u191-linux-x64.rpm  # 安装自己下载的JDK

  这里要用到工具  ,把JDK安装包上传到虚拟机,oracle安装包也是用同样的方法上传,我是放到home目录下,用完就可以删掉。

9.解压oracle安装包,解压后路径:/u01/database

[root@Oracle ~]# unzip linuxx64_12201_database.zip -d /u01        # 没有unzip命令,则先安装unzip

10.修改应答文件,静默安装配置文件路径:/u01/database/response/db_install.rsp

    oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
    # 30行 安装类型,只装数据库软件
    oracle.install.option=INSTALL_DB_SWONLY
    # 35行 用户组
    UNIX_GROUP_NAME=oinstall
    # 42行 INVENTORY目录(不填就是默认值)
    INVENTORY_LOCATION=/u01/app/oraInventory
    # 46行 oracle目录
    ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
    # 51行 oracle基本目录
    ORACLE_BASE=/u01/app/oracle
    # 63行 oracle版本
    oracle.install.db.InstallEdition=EE
    # 80行
    oracle.install.db.OSDBA_GROUP=dba
    # 86行
    oracle.install.db.OSOPER_GROUP=oper
    # 91行
    oracle.install.db.OSBACKUPDBA_GROUP=dba
    # 96行
    oracle.install.db.OSDGDBA_GROUP=dba
    # 101行
    oracle.install.db.OSKMDBA_GROUP=dba
    # 106行
    oracle.install.db.OSRACDBA_GROUP=dba
    # 180行 数据库类型
    oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
    # 185行
    oracle.install.db.config.starterdb.globalDBName=orcl
    # 190行
    oracle.install.db.config.starterdb.SID=orcl
    # 216行
    oracle.install.db.config.starterdb.characterSet=AL32UTF8
    # 384行
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
    # 398行 设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)
    DECLINE_SECURITY_UPDATES=true

可以使用 SecureFxPortable 工具把 db_install.rsp 文件下载到本机,用 EditPlus 文本编辑工具修改,再上传替换,这样比较方便。

11.安装Oracle数据库软件(以oracle用户身份操作)

[oracle@vs database]$ ./runInstaller -force -silent -noconfig -ignorePrereq -ignoreSysPreReqs -responseFile /u01/database/response/db_install.rsp

  可以边装边查看日志,日志文件路径在执行11的时候会给出

[oracle@vs OraInstall2018-11-12_12-40-15am]$ tail –f installActions2018-11-12_12-40-15AM.log

安装日志截图:

当出现上图提示时,可以在产品清单目录查看安装日志

[oracle@vs ~]$ tail –f/u01/app/oraInventory/logs/installActions2018-11-12_12-40-15AM.log

12.安装成功后会提示如下图命令,需要切换到root身份执行

    [root@vs ~]# /u01/app/oraInventory/orainstRoot.sh  
    Changing permissions of /u01/app/oraInventory.  
    Adding read,write permissions for group.  
    Removing read,write,execute permissions for world.  
      
    Changing groupname of /u01/app/oraInventory to oinstall.  
    The execution of the script is complete.  
     
    [root@vs ~]# /u01/app/oracle/product/12.2.0/db_1/root.sh  
    Check /u01/app/oracle/product/12.2.0/db_1/install/root_Oracle_2017-04-15_20-56-27-813321685.log for the output of root script

13.配置监听,静默安装配置文件路径:/u01/database/response/netca.rsp

netca -silent -responsefile /u01/database/response/netca.rsp

   可以通过 netstat -tlnp 命令查看监听地址

    netstat -tlnp
    tcp  0   0 :::1521        :::*      LISTEN      5477/tnslsnr

14.修改dbca.rsp文件,静默安装配置文件路径:/u01/database/response/dbca.rsp

    # 21行 不可更改
    responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
    # 32行 全局数据库名
    gdbName=orcl
    # 42行 系统标识符
    sid=orcl
    # 52行
    databaseConfigType=SI
    # 74行
    policyManaged=false
    # 88行
    createServerPool=false
    # 127行
    force=false
    # 163行 createAsContainerDatabase设为true表示创建容器数据库;false为普通数据库
    createAsContainerDatabase=false
    # 172行
    numberOfPDBs=1
    # 182行
    pdbName=orclpdb
    # 192行
    useLocalUndoForPDBs=true
    # 203行 库密码
    pdbAdminPassword=********
    # 223行
    templateName=/u01/app/oracle/product/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc
    # 233行 超级管理员密码
    sysPassword=********
    # 233行 管理员密码
    systemPassword=********
    # 273行
    emExpressPort=5500
    # 284行
    runCVUChecks=false
    # 313行
    omsPort=0
    # 341行
    dvConfiguration=false
    # 391行
    olsConfiguration=false
    # 401行
    datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/
    # 411行
    datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/
    # 421行
    recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}
    # 431行
    storageType=FS
    # 468行 字符集创建库之后不可更改
    characterSet=AL32UTF8
    # 478行
    nationalCharacterSet=AL16UTF16
    # 488行
    registerWithDirService=false
    # 526行
    listeners=LISTENER
    # 546行
    variables=DB_UNIQUE_NAME=orcl,ORACLE_BASE=/u01/app/oracle,PDB_NAME=,DB_NAME=orcl,ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/db_1,SID=orcl
    # 555行
    initParams=undo_tablespace=UNDOTBS1,memory_target=796MB,processes=300,db_recovery_file_dest_size=2780MB,nls_language=AMERICAN,dispatchers=(PROTOCOL=TCP) (SERVICE=orclXDB),db_recovery_file_dest={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME},db_block_size=8192BYTES,diagnostic_dest={ORACLE_BASE},audit_file_dest={ORACLE_BASE}/admin/{DB_UNIQUE_NAME}/adump,nls_territory=AMERICA,local_listener=LISTENER_orcl,compatible=12.2.0,control_files=("{ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/control01.ctl", "{ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}/control02.ctl"),db_name=cdb1,audit_trail=db,remote_login_passwordfile=EXCLUSIVE,open_cursors=300
    # 565行
    sampleSchema=false
    # 574行
    memoryPercentage=40
    # 584行
    databaseType=MULTIPURPOSE
    # 594行
    automaticMemoryManagement=false
    # 604行
    totalMemory=0

15.创建数据库实例,使用 dbca 命令(dbca是oracle命令,如果提示命令找不到,检查环境变量)

[oracle@oracle response]$ dbca -silent -createDatabase -responseFile  /u01/database/response/dbca.rsp

16.检查oracle进程状态

    ps -ef | grep ora_ | grep -v grep
    lsnrctl status

17.数据库实例的启动和关闭

    # 以 DBA 身份进入 sqlplus,查看数据库状态
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> select open_mode from v$database;             //查看数据库
    SQL> select status from v$instance;                //查看数据库实例
     
    # 以 DBA 身份进入 sqlplus,修改管理员用户密码
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> alter user sys identified by ********;        //改sys超级管理员密码
    SQL> alter user system identified by ********;     //改system管理员密码
     
    # 以 DBA 身份进入 sqlplus,启动数据库
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> startup
     
    # 以 DBA 身份进入 sqlplus,关闭数据库
    [oracle@Oracle ~]$ sqlplus / as sysdba
    SQL> shutdown abort
    或
    SQL> shutdown immediate

18.修改oracle启动配置文件

完成oracle12c数据库的安装后,相关服务器会自动启用,但并不表示下次开机后oracle服务器仍然可用。下面将介绍oracle的基本服务组件,以及如何编写服务脚本来控制oracle数据库系统的自动运行。

根据上面的安装过程,oracle的数据库软件将安装在变量ORACLE_HOME所指向的位置。例如 /u01/app/oracle/product/12.2.0/db_1/ ,而各种服务器组件程序(也包括sqlplus命令)正是位于其中的bin子目录下。

Oracle数据库的基本服务组件如下所述:(注:oracle服务组件最好以oracle用户身份运行如:su - oracle)

lsnrctl:监听器程序,用来提供数据库访问,默认监听TCP 1521端口。

dbstart、dbshut:数据库控制程序,用来启动、停止数据库实例。

emctl:管理器控制工具,用来控制OEM平台的开启与关闭,OEM平台通过1158端口提供HTTPS访问,5520端口提供TCP访问。

为了方便执行oracle的服务组件程序,建议对所有用户的环境配置作进一步的优化调整、补充PATH路径、oracle终端类型等变量设置。除此以外,还应该修改/etc/oratab配置文件,以便运行dbstart时自动启用数据库实例。

    # 修改oratab配置如下,这样就可以通过dbstart 启动实例,也可以通过dbshut关闭实例。
    [oracle@Oracle ~]$ vim /etc/oratab
     
    racl:/u01/app/oracle/product/12.2.0/db_1:Y  //把“N”改成“Y”
     
    # 此时所有oracle的进程关闭,监听器也停止。
    [oracle@Oracle ~]$ dbshut /u01/app/oracle/product/12.2.0/db_1/
     
    # 启动监听器和实例。
    [oracle@Oracle ~]$ dbstart /u01/app/oracle/product/12.2.0/db_1/
     
    # 修改 dbstart 和 dbshut,如下
    # 修改 #ORACLE_HOME_LISTNER=$1 为 ORACLE_HOME_LISTNER=$ORACLE_HOME
     
    # 在 root 用户下编辑 rc.local
    # dbstart 默认将 oratab 中参数为 Y 的所有库启动
    [root@Oracle ~]# vi /etc/rc.d/rc.local
     
    # 添加如下命令到 rc.local
    # 用oracle用户登录,运行dbstart启动数据库
    su - oracle -lc "/u01/app/oracle/product/12.2.0/db_1/bin/dbstart"
     
    # 设置执行权限,因为Oracle linux 7.x 默认rc.local是没有执行权限,需执行chmod自己增加
    [root@Oracle ~]# chmod +x /etc/rc.d/rc.local
     
    # 查看监听状态及数据库状态
    [oracle@Oracle ~]$ lsnrctl status
     
    # 启动监听
    [oracle@Oracle ~]$ lsnrctl start
     
    # 停止监听
    [oracle@Oracle ~]$ lsnrctl stop

19.防火墙开放端口(以root身份操作)

    # 开启端口
    [root@vs ~]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
    # 重启防火墙 (一般我们在开放完新的端口后,需要重新启动防火墙)
    [root@vs ~]# firewall-cmd --reload

20.ORA-28040: 没有匹配的验证协议

  在 $ORACLE_HOME/network/admin/sqlnet.ora

  加入如下:

  SQLNET.ALLOWED_LOGON_VERSION=8

21.安装报错

[oracle@yb-oracle response]$ dbca -silent -createDatabase -responseFile /ora01/database/response/dbca.rsp
[FATAL] [DBT-11211] The Automatic Memory Management option is not allowed when the total physical memory is greater than 4GB.
   CAUSE: The current total physical memory is 15GB.

解决: automaticMemoryManagement=false

 [FATAL] [DBT-06103] The port (5,500) is already in use.
   ACTION: Specify a free port.

解决:hosts解析问题,eg:oracleip yb-oracle yb-oracle.example.com
————————————————
版权声明:本文为CSDN博主「izaibuzai」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/haopeng7816/java/article/details/83956623

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这