> 本小节教搭建在,Linux系统下安装Oracle12c(静默安装与卸载Centos) ## 1.准备好两个Linux版本得Oracle安装上传到Linux 链接:https://pan.baidu.com/s/1qOvQ2OxwKciYN6N8TleZ3g 提取码:17np 网盘自提安装包或者官网自己下载 **系统要求** 内存:1G(官方最低要求1G) 硬盘:40G(企业版安装所需4.29G和1.7G数据文件) 检查的命令 内存 ``` grep MemTotal /proc/meminfo ``` 交换空间 ``` grep SwapTotal /proc/meminfo ``` 磁盘空间 ``` df -ah ``` ## 2.将两个压缩报解压在本地 ```shell [root@izuf672hlpds4xqw1om49iz toolZip]# unzip linuxamd64_12102_database_1of2.zip [root@izuf672hlpds4xqw1om49iz toolZip]# unzip linuxamd64_12102_database_2of2.zip ``` ![](http://dc.zjhcsoft.com:25680/mindoc/uploads/deliver/images/m_a282c3b32db512170dc8551280b5e093_r.png) ## 3.关闭selinux(安全模块)和防火墙 **关闭selinux:** 临时关闭(不用重启) ```shell [root@izuf672hlpds4xqw1om49iz ~]# setenforce 0 ``` 修改配置文件(需要重启): 将SELINUX=enforcing改为SELINUX=disabled ```shell [root@izuf672hlpds4xqw1om49iz ~]# vi /etc/selinux/config ``` <span style='color:red;font-size:8'>建议使用不用重启的方式,并修改/etc/selinux/config文件。(不要重启)</span> **关闭防火墙:** 查看防火墙状态 ```shell [root@izuf672hlpds4xqw1om49iz ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2020-06-23 16:19:42 CST; 1 months 4 days ago Docs: man:firewalld(1) Main PID: 29413 (firewalld) CGroup: /system.slice/firewalld.service └─29413 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid Jun 23 16:19:42 izuf672hlpds4xqw1om49iz systemd[1]: Starting firewalld - dynamic firewall daemon... Jun 23 16:19:42 izuf672hlpds4xqw1om49iz systemd[1]: Started firewalld - dynamic firewall daemon. ``` 开启和关闭防火墙 ```shell systemctl start firewalld systemctl stop firewalld ``` 防火墙开放端口(不关闭防火墙的情况下) ```shell [root@izuf672hlpds4xqw1om49iz ~]# firewall-cmd --list-ports 3306/tcp 6379/tcp 18080/tcp [root@izuf672hlpds4xqw1om49iz ~]# firewall-cmd --add-port=1521/tcp --zone=public --permanent success [root@izuf672hlpds4xqw1om49iz ~]# firewall-cmd --reload success [root@izuf672hlpds4xqw1om49iz ~]# firewall-cmd --list-ports 1521/tcp 3306/tcp 6379/tcp 18080/tcp ``` ## 4.安装Oracle12c的依赖包 ```shell [root@izuf672hlpds4xqw1om49iz ~]# yum install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXext libXtst libX11 libXau libxcb libXi make sysstat ``` 如果连接不了网络的话 ```shell ping www.baidu.com #如果连接不了网络的话,需要自己去下载相应的rpm依赖包,网址在下边,并找好自己系统对应的版本 [root@izuf672hlpds4xqw1om49iz ~]# cat /proc/version Linux version 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 15:04:05 UTC 2017 [root@izuf672hlpds4xqw1om49iz ~]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core ``` http://www.rpmfind.net/linux/rpm2html/search.php?query=gcc&submit=Search+...&system=Centos&arch= ## 5.创建Oracle用户和用户组 ```shell [root@izuf672hlpds4xqw1om49iz ~]# groupadd oinstall [root@izuf672hlpds4xqw1om49iz ~]# groupadd dba [root@izuf672hlpds4xqw1om49iz ~]# useradd -g oinstall -G dba oracle [root@izuf672hlpds4xqw1om49iz ~]# 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@izuf672hlpds4xqw1om49iz ~]# id oracle uid=1001(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba) #可以看到用户建立并加入相应的用户组里面 ``` ## 6.修改内核参数配置文件 ``` [root@izuf672hlpds4xqw1om49iz ~]# vi /etc/sysctl.conf ``` 将下面的配置加入到**sysctl.conf**配置文件中 在文件最后加入 ```reStructuredText fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.sem=250 32000 100 128 kernel.shmall=2097152 kernel.shmmax=2147483648 kernel.shmmni=4096 net.core.rmem_default=1048576 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048576 net.ipv4.ip_local_port_range=9000 65500 ``` ```shell [root@izuf672hlpds4xqw1om49iz ~]# sysctl -p #检查是否生效 ``` ## 7.修改oracle用户权限文件 ```shell [root@izuf672hlpds4xqw1om49iz ~]# vi /etc/security/limits.conf #将下面内容在文件最后加入 oracle soft nofile 65536 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 10240 [root@izuf672hlpds4xqw1om49iz ~]# vi /etc/pam.d/login #将下面内容在文件最后加入 session required /lib64/security/pam_limits.so session required pam_limits.so [root@izuf672hlpds4xqw1om49iz ~]# vi /etc/profile #将下面内容在文件最后加入 #oracle config if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi [root@izuf672hlpds4xqw1om49iz ~]# source /etc/profile ``` ## 8.创建安装目录和文件权限 **创建安装目录** ```shell [root@izuf672hlpds4xqw1om49iz ~]# mkdir -p /data/soft/database/oracle/product/12.10.2 #-p 确保目录名称存在,不存在的就建一个。 [root@izuf672hlpds4xqw1om49iz ~]# mkdir /data/soft/database/oracle/oradata //数据文件存放目录 [root@izuf672hlpds4xqw1om49iz ~]# mkdir /data/soft/database/oracle/inventory //数据库创建及使用过程中的日志目录 [root@izuf672hlpds4xqw1om49iz ~]# mkdir /data/soft/database/oracle/fast_recovery_area //数据恢复目录 ``` **配置文件权限** ```shell [root@izuf672hlpds4xqw1om49iz ~]# chown -R oracle:oinstall /data/soft/database/oracle/ [root@izuf672hlpds4xqw1om49iz ~]# chmod -R 755 /data/soft/database/oracle/ ``` ## 9.配置Oracle环境变量 **此处必须与创建的数据库实例名称一致,否则数据库启动后无法访问。第一次配置完记得source一下。** ```shell [root@izuf672hlpds4xqw1om49iz ~]# su oracle #在root用户下登入oracle用户的bash [oracle@izuf672hlpds4xqw1om49iz root]$ vi ~/.bash_profile #将下面内容在文件最后加入 umask 022 ORACLE_BASE=/data/soft/database/oracle ORACLE_HOME=$ORACLE_BASE/product/12.10.2/dbhome_1 ORACLE_SID=orcl PATH=$PATH:$ORACLE_HOME/bin LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/12.10.2/lib:$LD_LIBRARY_PATH LANG=C export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH LANG [oracle@izuf672hlpds4xqw1om49iz root]$ source ~/.bash_profile #使生效 [oracle@izuf672hlpds4xqw1om49iz root]$ exit #退出oracle的bash,重新为root用户状态 exit ``` ## 10.编辑静默安装文件 **解压出来的database目录的response文件夹复制到你知道的目录,我这里复制到跟我oracle包上传的目录** ***里面的三个文件作用分别是:*** db_install.rsp:安装应答 dbca.rsp:创建数据库应答 netca.rsp:建立监听、本地服务名等网络设置的应答 ```shell [root@izuf672hlpds4xqw1om49iz toolZip]# cp -r /data/toolZip/database/response/ /data/toolZip/ ``` ```shell [root@izuf672hlpds4xqw1om49iz toolZip]# vi /data/toolZip/response/db_install.rsp #设置以下属性的值,不是在文件末尾加入 **************************************************** oracle.install.option=INSTALL_DB_SWONLY ORACLE_HOSTNAME=CentOS UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/data/soft/database/oracle/inventory SELECTED_LANGUAGES=en,zh_CN ORACLE_HOME=/data/soft/database/oracle/product/12.10.2/dbhome_1 ORACLE_BASE=/data/soft/database/oracle oracle.install.db.InstallEdition=EE oracle.install.db.DBA_GROUP=dba oracle.install.db.OPER_GROUP=dba oracle.install.db.BACKUPDBA_GROUP=dba oracle.install.db.DGDBA=dba oracle.install.db.KMDBA=dba DECLINE_SECURITY_UPDATES=true ``` ## 11.根据响应文件安装Oracle **然后再执行安装,在oracle用户下** ```shell [oracle@izuf672hlpds4xqw1om49iz database]$ ./runInstaller -silent -responseFile /data/toolZip/response/db_install.rsp -ignorePrereq ``` - `如果在按照执行过程中出现下图错误,在root用户下依次执行以下命令在安装`<span style='color:red;font-size:8'>无此错误请略过</span> ![](http://dc.zjhcsoft.com:25680/mindoc/uploads/deliver/images/m_e138d0828ec4f3f5dd8870e6a7e6c084_r.png) ```shell [root@izuf672hlpds4xqw1om49iz database]# dd if=/dev/zero of=/swapfile bs=1024 count=512k [root@izuf672hlpds4xqw1om49iz database]# mkswap /swapfile Setting up swapspace version 1, size = 524284 KiB no label, UUID=053ecc2a-eb1a-4e6c-b9f0-03c14dfff257 [root@izuf672hlpds4xqw1om49iz database]# swapon /swapfile swapon: /swapfile: insecure permissions 0644, 0600 suggested. ``` 对这些命令感兴趣的话可以看看https://blog.csdn.net/qq_35893120/article/details/80655645这个博客 `结束` - `如果在按照执行过程中出现下图错误请删除相应的文件夹,重复步骤8` ![](http://dc.zjhcsoft.com:25680/mindoc/uploads/deliver/images/m_3bff2948236e4118f258608e27a04fd9_r.png) `结束` - `出现[WARNING]可以无视,出现Successfully Setup Software说明安装成功` ![](http://dc.zjhcsoft.com:25680/mindoc/uploads/deliver/images/m_9af0fe09afd0ab0f2ce6a4d359421782_r.png) `结束` **执行相应的文件** 根据刚才的成功的页面有提示我们去执行相应的脚本 ```shell [oracle@izuf672hlpds4xqw1om49iz database]$ exit exit [root@izuf672hlpds4xqw1om49iz ~]# sh /data/soft/database/oracle/inventory/orainstRoot.sh Changing permissions of /data/soft/database/oracle/inventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /data/soft/database/oracle/inventory to oinstall. The execution of the script is complete. [root@izuf672hlpds4xqw1om49iz ~]# sh /data/soft/database/oracle/product/12.10.2/dbhome_1/root.sh Check /data/soft/database/oracle/product/12.10.2/dbhome_1/install/root_izuf672hlpds4xqw1om49iz_2020-07-28_11-23-14.log for the output of root script [root@izuf672hlpds4xqw1om49iz ~]# ``` ## 12.以静默的方式配置监听 - <span style='color:red;font-size:8'>再次进入oracle,注意下面脚本的-符号,两种方式</span> **带-的登录oracle,可以直接使用netca命令** ```shell [oracle@izuf672hlpds4xqw1om49iz root]$ su - oracle Password: Last login: Tue Jul 28 11:27:20 CST 2020 on pts/1 [oracle@izuf672hlpds4xqw1om49iz ~]$ netca /silent /responseFile /data/toolZip/response/netca.rsp Parsing command line arguments: Parameter "silent" = true Parameter "responsefile" = /data/toolZip/response/netca.rsp Done parsing command line arguments. Oracle Net Services Configuration: Profile configuration complete. Oracle Net Listener Startup: Running Listener Control: /data/soft/database/oracle/product/12.10.2/dbhome_1/bin/lsnrctl start LISTENER Listener Control complete. Listener started successfully. Listener configuration complete. Oracle Net Services configuration successful. The exit code is 0 ``` **不带-的bash登录oracle,需要到相应的目录文件夹下执行netca** ```shell [root@izuf672hlpds4xqw1om49iz ~]# su oracle [oracle@izuf672hlpds4xqw1om49iz database]$ /data/soft/database/oracle/product/12.10.2/dbhome_1/bin/netca /silent /responseFile /data/toolZip/response/netca.rsp ``` **成功运行后在/data/soft/database/oracle/product/12.10.2/dbhome_1/network/admin生成 sqlnet.ora和listener.ora** ![](http://dc.zjhcsoft.com:25680/mindoc/uploads/deliver/images/m_0d9e1074fd5f99f74bd698f1cf90ad38_r.png) **通过netstat命令可以查看1521端口正在监听** <span style='color:red;font-size:8'>安装和监听需要回到root用户下</span> ```shell [root@izuf672hlpds4xqw1om49iz ~]# yum install net-tools [root@izuf672hlpds4xqw1om49iz ~]# netstat -tunlp | grep 1521 tcp 0 0 0.0.0.0:1521 0.0.0.0:* LISTEN 19460/tnslsnr ``` ## 13.以静默的方式建立新库,同时建立一的oracle实例 ```shell [root@izuf672hlpds4xqw1om49iz toolZip]# vi /data/toolZip/response/dbca.rsp #设置以下属性的值,不是在文件末尾加入 SID = "orcl" SYSPASSWORD = "sys" SYSTEMPASSWORD = "system" DBSNMPPASSWORD = "dbsnmp" DATAFILEDESTINATION =/data/soft/database/oracle/oradata RECOVERYAREADESTINATION=/data/soft/database/oracle/fast_recovery_area CHARACTERSET = "UTF8" TOTALMEMORY = "1638" [root@izuf672hlpds4xqw1om49iz ~]# su oracle [oracle@izuf672hlpds4xqw1om49iz root]$ /data/soft/database/oracle/product/12.10.2/dbhome_1/bin/dbca -silent -responseFile /data/toolZip/response/dbca.rsp #安装实例时间会比较长耐心等待 ``` 建库后进行实例进程检查 ``` ps -ef | grep ora_ | grep -v grep ``` 监听查看 ``` lsnrctl start  lsnrctl status lsnrctl stop ``` 监测sql sqlplus / as sysdba 1.实例名: ```mysql select instance_name from v$instance; sid ``` 2.服务名: ```mysql select global_name from global_name; 服务名称 ``` ## 14.命令行模式静默删除 1、首先查看dbca的帮助信息 dbca -help 修改/home/oracle/response/dbca.rsp文件里以下几个参数,下面三个参数根据建库实际情况进行修改: OPERATION_TYPE = “deleteDatabase” SOURCEDB = “orcl” SYSDBAUSERNAME = “sys” SYSDBAPASSWORD = “sys” 然后运行: dbca -silent -responseFile /home/oracle/response/dbca.rsp 各参数含义如下: -silent 表示以静默方式删除 -responseFile 表示使用哪个响应文件,必需使用绝对路径 RESPONSEFILE_VERSION 响应文件模板的版本,该参数不要更改 OPERATION_TYPE 安装类型,该参数不要更改 SOURCEDB 数据库名,不是全局数据库名,即不包含db_domain 很简单数据库卸载完成了,请注意,只是数据库卸载完了,数据库软件还是在的。 2、使用DBCA卸载数据库 dbca -silent -delete Database -responseFile dbca.rsp a.选项-silent表示静默安装,免安装交互,大部分安装信息也不输出 b.选项-responseFile指定应答文件,要求用绝对路径 **以下错误请无视,笔者自己的笔记** ```shell The Oracle system identifier(SID) "orcl" already exists. Specify another SID. [root@izuf672hlpds4xqw1om49iz ~]# rm -rf /etc/oratab #看到以上错误 ``` ``` #如果出现startup; ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/data/oracle/product/11.1.0/db_1/dbs/initoctl.ora' /data/soft/database/oracle/admin/orcl12c/pfile/init.ora.7979373847448 #拷贝一份过去 ```