CentOS7 静默(无图形)安装oracle11gR2
一.调整系统
1.以root用户安装一些必要的软件:
wget 下载用的
unzip 解压oracle安装文件
net-tools 查看本机网络情况 比如netstat
yum install wget unzip net-tools -y
2.使用oracle提供的环境配置工具
这个工具会调整内核参数,建立一些必要的linux用户和组
wget http://public-yum.oracle.com/public-yum-ol7.repo -O /etc/yum.repos.d/public-yum-ol7.repo
wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
yum install oracle-rdbms-server-11gR2-preinstall -y
3.完成后备份一下这个目录的文件到其他目录,这个文件夹是修改系统后日志和原本的内核配置备份
要备份的文件夹:
/var/log/oracle-rdbms-server-11gR2-preinstall
4.加载内核参数 和sysctl -p一样
sysctl -f
5.创建一些目录和配置
配置oracle系统配置文件和授权
cat >> /etc/oraInst.loc <<EOF
inventory_loc=/home/oracle/ora11g/oraInventory
inst_group=oinstall
EOF
chmod 664 /etc/oraInst.loc
创建oracle安装的目录和授权
mkdir -p /u01/app/
mkdir /u01/tmp
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/
chmod a+wr /u01/tmp
6.设置oracle用户密码 oracle是安装工具自己创建的,参考我之前讲的
passwd oracle
二.配置用户环境和上传文件
[oracle]
1.以oracle用户添加一些必要的环境
cat >> /home/oracle/.bash_profile <<EOF
TMP=/u01/tmp
TMPDIR=/u01/tmp
export TMP TMPDIR
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_SID ORACLE_HOME PATH
EOF
生效
source .bash_profile
2.以oracle用户把11gr2的两个zip 上传至/home/oracle/
3.解压 解压后文件会在/home/oracle/database/
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
4.由于文件权限问题 运行这个命令
chown -R oracle:oinstall /home/oracle/database
三.配置db_install.rsp
1.以oracle用户备份到/home/oracle/rsp/
cp -r /home/oracle/database/response /home/oracle/rsp
2.配置安装响应文件db_install.rsp文件 这里配置参数先下载到本地 用记事本根据自己情况修改 在上传过去
#我的/home/oracle/rsp/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
#INSTALL_DB_AND_CONFIG安装并自动配置数据库实例和监听 建议首次安装用这个
#不然配置另外两个文件,新建实例和监听
oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=localhost
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/oracle/ora11g/oraInventory
SELECTED_LANGUAGES=zh_CN,en
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.customComponents=oracle.server:11.2.0.1.0,oracle.sysman.ccr:10.2.7.0.0,oracle.xdk:11.2.0.1.0,oracle.rdbms.oci:11.2.0.1.0,oracle.network:11.2.0.1.0,oracle.network.listener:11.2.0.1.0,oracle.rdbms:11.2.0.1.0,oracle.options:11.2.0.1.0,oracle.rdbms.partitioning:11.2.0.1.0,oracle.oraolap:11.2.0.1.0,oracle.rdbms.dm:11.2.0.1.0,oracle.rdbms.dv:11.2.0.1.0,orcle.rdbms.lbac:11.2.0.1.0,oracle.rdbms.rat:11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#这个是服务名
oracle.install.db.config.starterdb.globalDBName=orcl.lan
#实例sid
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
#最小256M 我是学习就选择最小了
oracle.install.db.config.starterdb.memoryLimit=256
#是否安装学习的scott和hr(我就知道这两个)
oracle.install.db.config.starterdb.installExampleSchemas=true
oracle.install.db.config.starterdb.enableSecuritySettings=true
#密码全设置成oracle (安装时会提示,个人学习忽略)
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/u01/app/oracle/oradata
SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
DECLINE_SECURITY_UPDATES=true
修改完成保存|上传到/home/oracle/rsp
四.静默安装数据库
【oracle】
1.安装时会出现密码不规范的警告,忽略
/home/oracle/database/runInstaller -silent -ignorePrereq -responseFile /home/oracle/rsp/db_install.rsp
2.查看安装过程 另开一个shell 稍等
tail -f /home/oracle/ora11g/oraInventory/logs/installActions2018-12-05_09-51-09PM.log
3.最后会提示安装完成 !(切换root执行)
【root】
sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
4.切换到oracle
sqlplus登录
sqlplus / as sysdba
查看状态
select status from v$instance;
五.配置防火墙
【root】
1.查看1521端口
netstat -an|grep 1521
2.防火墙 放行1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
3.重新加载防火墙规则
firewall-cmd --reload
六.数据库的启动和关闭
【root】
1.修改oracle服务启动配置
vi /etc/oratab
把大写的N改为大写的Y,然后:wq保存
【oracle】
启动oracle,因为修改了/etc/oratab N=>Y 所以启动服务也会同时启动实例,N的情况不会同时启动实例,sqlplus登录会提示 an idle instance,用sqlplus 然后=> startup启动实例,重启系统后用如下命令
启动oracle
dbstart $ORACLE_HOME
关闭oracle
dbshut $ORACLE_HOME
2.远程连接oracle
sqlplus sys/oracle@172.19.12.12:1521/ORCL.LAN as sysdba
conn sys/oracle@172.19.12.12:1521/ORCL.LAN as sysdba
ORCL.LAN是服务名 不是sid
七.CentOS7 开机启动oracle
1.创建shell脚本
vi /home/oracle/centnet-service.sh
#!/bin/bash
dbstart $ORACLE_HOME
2.给/etc/rc.d/rc.local增加可执行权限
chmod +x /etc/rc.d/rc.local
3.把上面要启动的脚本的启动命令加入到rc.local中
/bin/su - oracle -c "/home/oracle/centnet-service.sh"
4.手动关闭oracle,重启centos,就能发现oracle能自启了
---------------------------------------附加------------------------------------
八.修改oracle的连接数
sqlplus / as sysdba
alter system set processes=10000 scope=spfile;
alter system set sessions=11005 scope=spfile;
startup force
如果修改失败(请继续往下看),可能是信号量或者是内存不足导致的
九.Linux内核参数之共享内存和信号量设置
Oracle数据库在linux系统上的安装过程中,涉及到设置linux内核参数,这些内核参数究竟代表什么含义,如何调整这些参数?
共享内存:
可以通过ipcs -lm命令查看目前系统共享内存的参数限制:
ipcs -lm
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1331200
max total shared memory (kbytes) = 1331200
min seg size (bytes) = 1
这里涉及到3个于共享内存相关的参数:SHMMAX,SHMMNI,SHMALL
SHMMAX
- 含义:单个共享内存段最大字节数
- 设置:比SGA略大
- 查看:
cat /proc/sys/kernel/shmmax
- 修改:
sysctl -w kernel.shmmax=1073741824
echo “kernel.shmmax=1073741824” >> /etc/sysctl.conf
SHMMNI
- 含义:共享内存段最大个数
- 设置:至少4096
- 查看:
cat /proc/sys/kernel/shmmni
- 修改:
sysctl -w kernel.shmmni=4096
echo “kernel.shmmni=4096” >> /etc/sysctl.conf
SHMALL
- 含义:系统中共享内存页总数
- 设置:至少ceil(shmmax/PAGE_SIZE),ORACLE DOC 默认值:
2097152*4096=8GB - 查看:
cat /proc/sys/kernel/shmall
- 修改:
sysctl -w kernel.shmall=2097152
echo “kernel.shmall=2097152” >> /etc/sysctl.conf
[oracle@localhost ~]$ getconf PAGE_SIZE
4096
信号量:
当前系统信号量限制:
ipcs -ls
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 1000
max semaphores system wide = 128000
max ops per semop call = 100
semaphore max value = 32767
SEMMSL
- 含义:每个信号量set中信号量最大个数
- 设置:最小250;对于processes参数设置较大的系统建议设置为processes+10
SEMMNI
- 含义:linux系统信号量set最大个数
- 设置:最少128
SEMMNS
- 含义:linux系统中信号量最大个数
- 设置:至少32000;SEMMSL * SEMMNI
SEMOPM
- 含义:semopm系统调用允许的信号量最大个数
- 设置:至少100;或者等于SEMMSL
- 查看信号量设置:
cat /proc/sys/kernel/sem
- 修改:
sysctl -w kernel.sem=”1000 128000 100 128″
echo “kernel.sem=1000 128000 100 128” >> /etc/sysctl.conf
order:SEMMSL, SEMMNS, SEMOPM, SEMMNI
使内核参数生效:sysctl -p
或者sysctl -f
十.修改/dev/shm大小
如何修改/dev/shm大小?
/dev/shm在/etc/fstab中挂载,对应tmpfs,实际使用的是内存的空间。默认情况下,/dev/shm为物理内存大小的一半。因而,调整/dev/shm大小有两种方式:
- 加大Linux的物理内存
- 在/etc/fstab中明确指定/dev/shm的挂载sizes大小参数(shm小于等于RAM+SWAP)
vi /etc/fstab
把下面这句话加入最后一行然后保存,入下图
tmpfs /dev/shm tmpfs defaults,size=6288m 0 0
修改完shm大小后,重新挂载
mount -o remount /dev/shm
查看
df -h