CentOS7静默安装、停止与删除oracle12C
以下文章来源于: 系统:CentOS
一.准备工作
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:不管地址对不对)
六、开始安装
(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)
(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 ;