CentOS7静默安装、停止与删除oracle12C

2021/03/26

以下文章来源于: 系统:CentOS

Oracle 12c 静默安装(带注释)

oracle12c 静默安装步骤

Linux 环境下Oracle 12C数据库卸载

一.准备工作

1. centos7服务器一台(自备)

一、安装前准备

1.关闭防火墙,禁止防火墙开机自启(非必须)

systemctl stop firewalld.service --关闭防火墙
systemctl disable firewalld.service -- 禁止防火墙开机启动
systemctl status firewalld.service  -- 查看防火墙状态

2.关闭selinux(非必须)

vi /etc/selinux/config -- 编辑文件
SELINUX=disabled  --修改

3.yum安装oracle依赖包关系

若执行一遍失败则执行第二遍

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

检查是否安装成功(31个安装包)

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

当出现yum超时时,更换yum源

1、备份配置文件:

cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

2、下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下

wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo

3、执行yum clean all清除原有yum缓存。

4、执行yum makecache(刷新缓存)或者yum repolist all(查看所有配置可以使用的文件,会自动刷新缓存)。

二、创建用户组

[root@localhost ~]# groupadd oinstall ----创建oracle oinstall用户组

[root@localhost ~]# groupadd dba----创建oracle dba用户组

[root@localhost ~]# useradd -g oinstall -G dba oracle----oracle加入新建的2个用户组

[rroot@localhost ~]# passwd oracle  ----设置oracle用户的密码

[root@localhost ~]# mkdir -p /opt/ebiz/oracle/database ----创建oracle安装目录

[root@localhost ~]# chown -R oracle:oinstall /opt/ebiz/oracle/database ----更改oracle目录用户组

[root@localhost ~]# chmod -R 775 /opt/ebiz/oracle ----更改oracle目录权限

三、修改内核参数

1.编辑配置文件

vi /etc/sysctl.conf

2.文件内容添加

# install oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 8589934592    //4G=4294967296   8G=8589934592 根据服务器内存调整   
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

各参数详解:

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:

表示套接字发送缓冲区大小的最大值。

3.使配置生效

/sbin/sysctl -p

四、修改配置

(1)修改用户限制

1.编辑文件

vi  /etc/security/limits.conf

2.在文件末尾添加以下内容

# install oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 10240

(2)修改 /etc/pam.d/login

vi  /etc/pam.d/login

#添加以下内容

# install oracle
session required /lib64/security/pam_limits.so
session required pam_limits.so

(3)修改/etc/profile

vi /etc/profile

#添加以下内容

# install oracle
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

五、配置oracle用户

#切换到oracle用户下

su - oracle

(1)配置oracle用户环境变量

vi ~/.bash_profile

#添加

#for oracle
export ORACLE_BASE=/opt/ebiz/oracle/database
export ORACLE_SID=orcl
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/opt/ebiz/oracle/database/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'

使配置生效

source ~/.bash_profile

(2)上传数据库压缩包

1.创建一个文件夹

mkdir /opt/soft/oracleinstall

[root@localhost ~]# chown -R oracle:oinstall /opt/ebiz/oracle----更改oracle安装文件所在目录的用户组

[root@localhost ~]# chmod -R 755 /opt/ebiz/oracle----更改oracle安装文件所在目录的操作权限

2.上传成功后,安装解压插件

切换到root用户

su - root
yum install -y unzip zip

3.解压文件

切换到oracle用户

su - oracle

unzip xxx.zip

(3)复制相应的模板

mkdir /home/oracle/etc

cp  /opt/soft/oracleinstall/database/response/* /home/oracle/etc/

#设置权限 su - root

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

(4)静默安装文件配置

1.返回oracle用户

su - oracle

#编辑/home/oracle/etc/db_install.rsp

vi /home/oracle/etc/db_install.rsp

#文件内容修改

oracle.install.option=INSTALL_DB_SWONLY   // 30行安装类型,只装数据库软件

UNIX_GROUP_NAME=oinstall    // 35行主机名称(hostname查询)

INVENTORY_LOCATION=/opt/ebiz/oracle/oraInventory   //INVENTORY目录(不填就是默认值)

ORACLE_HOME=/opt/ebiz/oracle/database/product/12/db_1 //46行oracle目录

ORACLE_BASE=/opt/ebiz/oracle/database   //51行

oracle.install.db.InstallEdition=EE //63行oracle版本 企业版本

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  //180行数据库类型

oracle.install.db.config.starterdb.globalDBName=orcl

oracle.install.db.config.starterdb.SID=orcl

oracle.install.db.config.starterdb.memoryLimit=81920   //232行自动管理内存的内存(M)

oracle.install.db.config.starterdb.password.ALL=oracle //(可选)设定所有数据库用户使用同一个密码

SECURITY_UPDATES_VIA_MYORACLESUPPORT=true  //386行 用户是否可以设置metalink密码

DECLINE_SECURITY_UPDATES=true  //398行//设置安全更新(貌似是有bug,这个一定要选true,否则会无限提醒邮件地址有问题,终止安装。PS:不管地址对不对)

db_install.rsp详解

六、开始安装

(1)执行文件db_install.rsp

切换到database文件夹下

创建INVENTORY目录:mkdir -p /opt/ebiz/oracle/oraInventory

cd /opt/soft/oracleinstall/database

./runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp

这里可能出现问题,参考 【问题1】的解答

查看日志:

tail -f /opt/ebiz/oracle/oraInventory/logs/xxx.log

成功后结果为:

(2)执行命令

#执行下方命令 su - root

/opt/ebiz/oracle/database/oraInventory/orainstRoot.sh
/opt/ebiz/oracle/database/product/12/db_1/root.sh

(3)修改oracle用户环境变量

#修改oracle环境变量
su  - oracle
vim ~/.bash_profile
#for oracle
export ORACLE_BASE=/opt/ebiz/oracle/database
export ORACLE_SID=orcl
export ROACLE_PID=oral12
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_HOME=/opt/ebiz/oracle/database/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'

#使配置生效

source ~/.bash_profile

(4)配置监听

配置监听listener文件:

cd /opt/ebiz/oracle/database/product/12/db_1/network/admin

netca /silent /responsefile /home/oracle/etc/netca.rsp      #启动监听

(5)静默建库配置文件修改

cd /home/oracle/etc
vi etc/dbca.rsp

#文件内容

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 //21行不可更改
gdbName=orcl                    //32
sid=orcl                      //42
databaseConfigType=SI                  //52
policyManaged=false                //74
createServerPool=false                 //88
force=false                    //127
createAsContainerDatabase=true           //162
numberOfPDBs=1                   //172
pdbName=orclpdb                  //182
useLocalUndoForPDBs=true  //192
templateName=/opt/ebiz/oracle/database/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc //223
runCVUChecks=false                 //284
omsPort=0                     //313
dvConfiguration=false               //341
olsConfiguration=false               //391
datafileJarLocation={ORACLE_HOME}/assistants/dbca/templates/           //401
datafileDestination={ORACLE_BASE}/oradata/{DB_UNIQUE_NAME}/           //411
recoveryAreaDestination={ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME}    //421
storageType=FS                                         //431
characterSet=AL32UTF8                                        //468字符集创建库之后不可更改
nationalCharacterSet=AL16UTF16                                        //478
registerWithDirService=false                                          //488
listeners=LISTENER                                            //526
sampleSchema=false                //565
memoryPercentage=40                //574
databaseType=MULTIPURPOSE                  //584
automaticMemoryManagement=true          //594 当物理内存总量大于 4GB 时, 不允许使用自动内存管理选项。
totalMemory=8192                   //604 为Oracle分配的内存(MB)

dbca.rsp详解

(6)执行静默建库

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

最终结果:

数据库安装成功。

创建oracle 用户

sqlplus / as sysdba ;
create user 用户名 identified by 口令[即密码];
grant connect, resource,dba to 用户名;

如果出现oracle报ORA-65096: 公用用户名或角色名无效,请查看【问题5】解决。

(7)设置为自启动

1.user root 下面修改:

[root@data55 ~]# vi /etc/oratab

hpxtdb:/opt/oracle/product/12.1.0.2:Y

将N该为Y

2.user oracle 下面修改:

[root@data55 ~]# su - oracle
[oracle@data55 ~]$cd $ORACLE_HOME/bin
[oracle@data55 bin]$ vim dbstart
找到 ORACLE_HOME_LISTNER=$1 这行, 修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
输入 :wq 即可保存离开!

同样道理修改 dbshut

[oracle@data55 bin]$ vim dbshut

测试运行 dbshut, dbstart 看能否启动oracle 服务及listener服务

[oracle@data55 bin]$ ps -efw | grep ora_
[oracle@data55 bin]$ lsnrctl status
[oracle@data55 bin]$ ps -efw | grep LISTEN | grep -v grep

3.系统启动项

[root@data55 ~]# chmod +x /etc/rc.d/rc.local
[root@data55 ~]# vi /etc/rc.d/rc.local

末尾添加

su - oracle -lc dbstart


[root@data55 ~]# cat /etc/rc.d/rc.local //查看配置

#Oracle安装常见错误

【问题1】Checking swap space: 0 MB available, 150 MB required. Failed

1.现象:运行安装命令:

[oracle@localhost database]$ ./runInstaller -silent -responseFile /home/oracle/db_install.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB. Actual 150565 MB Passed
Checking swap space: 0 MB available, 150 MB required. Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,

2.解决方法:

1、检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令:

 swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

2、检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:

 df -hal

3、创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。

 dd if=/dev/vda1 of=/swapfile bs=1024 count=512k

参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

4、格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用。运行命令:

mkswap /swapfile

激活 Swap ,运行命令:

swapon /swapfile

[root@localhost ~]# chmod -R 0600 /swapfile ----更改swapfile权限

以上步骤做完,再次运行命令:

swapon -s

你会发现返回的信息概要:

1 Filename                Type        Size    Used    Priority
2 /swapfile               file        524284    0     -1

如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:

#oracle install
 /swapfile          swap            swap    defaults        0 0

最后,赋予 Swap 文件适当的权限:

1 chown root:root /swapfile

[问题2]lsnrctl command not found

在linux安装完oracle时,当你遇到lsnrctl command not found等问题都不能用时,会有几种情况

1,首先你先查看下环境变量里面有没有加入oracle的配置

  执行 echo $ORACLE_HOME 没有的话,你执行

  export ORACLE_HOME=<your Oracle Home>  .  比如your orcal home是/db/product/11.2.0/dbhome_1

  然后再执行

  export PATH=$ORACLE_HOME/bin;$PATH

 重起profile

 source profile

2,当配置完环境变量后,还是不行,可以执行如下操作

 cd /

 su - root

 su - oracle

这样基本上是可以解决了,如果还不行的话,把电脑搬到楼顶,你懂的.

source /home/oracle/.bash_profile

[问题3]修改Oracle监听端口

修改端口号的整体步骤:

1.1 查看当前监听的状态
1.2 停止监听
1.3 修改监听文件的端口号
1.4 修改初始化参数local_listener
1.5 重启监听器
1.6 修改完毕,使用新端口登录测试

实践步骤:

1.1 查看当前监听的状态

 lsnrctl status

1.2 停止监听

lsnrctl stop

1.3修改监听文件的端口号 listener.ora

cd /opt/ebiz/oracle/database/product/12/db_1/network/admin
把端口号(PORT)修改为6521,分别修改listener.ora和tnsname.ora文件


###listener.ora 追加###
#sid list列举cdb和所有pdb的数据库名,所有sid与oracle环境变量保持一致#
SID_LIST_LISTENER =
(SID_LIST =
        (SID_DESC =
            (GLOBAL_DBNAME = orcl) #cdb db_name
            (SID_NAME = orcl)
            (ORACLE_HOME = /opt/ebiz/oracle/database/product/12/db_1)
        )
        (SID_DESC =
            (GLOBAL_DBNAME = ORCLPDB) #pdb db_name
            (SID_NAME = orcl)
            (ORACLE_HOME = /opt/ebiz/oracle/database/product/12/db_1)
        )
)
###listener.ora###

1.4修改监听文件的端口号 tnsnames.ora

##tnsnames.ora###
#cdb
orcl =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) )
            (CONNECT_DATA =
            (SERVICE_NAME = orcl) #cdb的db_name
        )
    )
#pdb
ORCLPDB =
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS =(PROTOCOL =TCP)(HOST =SPPOracleSer)(PORT =6521))
            )
            (CONNECT_DATA =
            (SERVER =DEDICATED)
            (SERVICE_NAME =ORCLPDB) #pdb的db_name
            )
    )
##tnsnames.ora###

1.5 重启监听器

lsnrctl start

1.6使用新端口登录测试

1.6.1 检查监听端口是否改变

 netstat -na   grep "1530"

tcp 0 0 192.168.0.100:1530 0.0.0.0:* LISTEN

1.6.2 查看监听器的状态

lsnrctl status


LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 11-MAR-2011 18:21:04

Copyright (c) 1991, 2005, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.100)(PORT=1530)))

STATUS of the LISTENER

Services Summary...

Service "PLSExtProc" has 1 instance(s).

Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...

Service "orcl" has 1 instance(s).

Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...

The command completed successfully

 

执行命令 : tnsping orcl

[问题4]重启数据库

1.su – oralce —-切换到oracle用户

2.lsnrctl stop —-停止监听

3.sqlplus / as sysdba —-以sysdba用户登录oracle

4.shutdown immediate —-关闭数据库

5.startup —-启动数据库

6.exit —-退出sqlplus

7.lsnrctl start —-启动监听

[问题5]ORA-65096: 公用用户名或角色名无效

通过alter session 切换容器,开启关闭pdb

查看pdbs,查看当前数据库container中包含有多少个pdb。如果session在某个pdb中,可以查看当前的pdb。

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO 

Switching to the PDB

SQL> alter session set container=orclpdb; 切换当前会话到某个pdb中。切换后才可使用当前pdb的私有用户进行操作

创建用户:

create user 用户名 identified by 密码 default tablespace users temporary tablespace temp;

赋予权限:

grant create user,drop user,alter user,create any view,connect,resource,dba,create session,create any sequence to 用户名;

使用PDM服务名登陆 ORCLPDB

在CDB中开启关闭pdb

SQL> alter pluggable database orclpdb close;

插接式数据库已变更。

SQL> alter pluggable database orclpdb open;

插接式数据库已变更。

在PDB中开启关闭pdb

SQL> alter database  close;

插接式数据库已变更。

SQL> alter database  open;

插接式数据库已变更。 

[问题6]系统忽略大小写

alter system set SEC_CASE_SENSITIVE_LOGON = false ;

Post Directory