oracle12c下载地址:https://download.oracle.com/otn/linux/oracle12c/122010/linuxx64_12201_database.zip
oracle11gR2下载地址:
http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_1of2.zip
http://download.oracle.com/otn/linux/oracle11g/R2/linux_11gR2_database_2of2.zip
11g 和 12c 安装没什么区别,看懂图形化安装流程,静默安装就好理解了。
文章底部付曾经的一键静默安装脚本(固定值较多,方便学习)
懒人可以使用我gitee库的一键脚本:
bash <(curl https://gitee.com/ffing/onekey/raw/master/onekey.sh)
只需上传官方zip安装包,即可实现自动安装!
支持自定义用户名、安装路径、数据库名、sid!
环境:
- centos7.6
- java8
- oracle12c
流程:
- 安装gnome(图形化)
- 安装java
- 创建oracle用户组、安装目录、环境变量
- 安装oracle
- 测试
- 其他
第一步,安装gnome(已有图形化的跳过)
安装gnome桌面组件
yum -y groupinstall "gnome desktop"
普通用户启动图形化桌面,需要在/var/run/console/下创建用户名
#检查/var/run/console.lock包含的用户名,而且/var/run/console/<user>要存在。在进行认证时pam_console比较用户名是否同console.lock内容一致,如果不符,认证失败。/var/run/console/<user>用来记录用户登录的次数,用户注销后console.lock就可以删除。
#登录oracle用户,所以需创建(如果需要经常性登录,可以添加到开机脚本中)
touch /var/run/console/oracle
第二步,安装java
懒人使用我的脚本:bash <(curl https://gitee.com/ffing/onekey/raw/master/onekey.sh)
也可以看我前面的教程:centos-安装java
第三步,创建oracle用户组、安装目录、环境变量
创建oracle用户、组(oracle安装需基于oracle用户)
#创建oinstall组
groupadd oinstall
#创建dba组
groupadd dba
#创建oper组
groupadd oper
#创建oracle用户
useradd -g oinstall -G dba,oper oracle
#设置oracle用户密码为oracle
echo "oracle" | passwd --stdin oracle
创建oracle安装目录
#创建oracle安装目录
mkdir /usr/local/oracle
#授权oracle用户及oinstall组
chown -R oracle:oinstall /usr/local/oracle
#创建oraInventory目录
mkdir /home/oracle/oraInventory
#授权
chown -R oracle:oinstall /home/oracle/oraInventory
配置oracle用户环境:vi /home/oracle/.bash_profile
#以下内容追加到最后
ORACLE_HOSTNAME=oracle
#安装路径
ORACLE_BASE=/usr/local/oracle
#数据库路径
ORACLE_HOME=/usr/local/oracle/12.2.0/db_1
#实例id
ORACLE_SID=orcl
#字符集
LANG=zh_CN.UTF-8
NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'
#path路径
PATH=$PATH:/usr/local/oracle/12.2.0/db_1/bin
export PATH ORACLE_HOSTNAME ORACLE_BASE ORACLE_HOME ORACLE_SID LANG NLS_LANG
配置全局环境:vi /etc/profile
#以下内容追加到最后
#ulimit控制shell资源
#-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
#-u <程序数目> 用户最多可开启的程序数目。
#-n <文件数目> 指定同一时间最多可开启的文件数。
umask 022
if [ $USER = "oracle" ]
then
if [ $SHELL = "/bin/ksh" ]
then
ulimit -p 16384
ulimit -p 65536
else
ulimit -u 16384 -n 65536
fi
fi
环境生效:source /etc/profile
oracle用户设置限制,提高软件运行性能:vi /etc/security/limits.conf(修改完成后,发现未更新,可退出oracle后重新登录用户查看)
#以下内容追加到最后
#limit临时解决问题
#查看全部limit:ulimit -a
#查看当前limit:ulimit -s
#临时设置limit值为102400:ulimit -s 102400
#无限制limit:ulimit -s unlimited
#soft是一个警告值;hard是一个阀值,超过就会报错
#nofile打开的最大的文件描述符数量
#nproc打开的最大的进程数量
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle认证:vi /etc/pam.d/login
#pam_limits.so主要是限制用户会话过程中对各种系统资源的使用
session required pam_limits.so
内核参数调整:vi /etc/sysctl.conf
注:修改sysctl.conf完成后,使其生效:sysctl -p
#以下内容追加到最后
#异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.aio-max-nr = 1048576
#打开的文件句柄的最大数量,防止文件描述符耗尽的问题
fs.file-max = 6815744
#共享内存8G:8G=8*1024*1024=8388608k/4k=2097152
kernel.shmall = 2097152
#物理内存4G:4G=4*1024*1024*1024=4294967296k-1k=4294967295
kernel.shmmax = 4294967295
#共享内存段的最大数量。shmmni缺省值4096
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#可使用的IPv4端口范围
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: 表示套接字发送缓冲区大小的最大值。 Oracle 12c 静默安装(带注释)
重新加载内核配置,使之生效:sysctl -p
修改主机名及hosts
hostnamectl set-hostname oracle
IPLAN=`hostname -I |awk '{print $1}'`
echo "$IPLAN oracle" >> /etc/hosts
systemctl restart network
第四步,安装oracle
安装依赖包
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install make -y
yum install nfs-utils -y
yum install net-tools -y
yum install smartmontools -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
yum install unzip -y
解压安装包文件到oracle用户家目录
#将oracle安装包并解压到oracle家目录(zip包名可能有差异请核对)
unzip -d /home/oracle linuxx64_12201_database.zip
关闭防火墙、selinux,切换oracle用户,并启动图形化桌面
#防火墙selinux需关闭,方便测试
systemctl stop firewalld
setenforce 0
#oracle为普通用户,图形化登录需创建
touch /var/run/console/oracle
#切换oracle用户及环境
su - oracle
#启动图形化
startx
图形化启动后,在图形化中执行安装命令
#启动安装程序(如果在其他路径需跟全路径)
./datebase/runInstaller
图形化安装几乎就是一路下一步,看提示操作就可以了,没有操作难度。
后面的操作就可以按照提示进行下一步即可。
先决条件检测,会检测出缺省哪些rpm或者环境,按图中所示点击“修补并再次检测”按钮,弹出修复脚本路径执行,再“修复结果”中看看修复状态,如果还有错误,一般退出安装程序,重启机器后,重新执行安装就几乎可以解决问题。(如果问题依然存在就需要百度错误的具体信息了)
执行完提示脚本后,点击确定。oracle会继续安装,直至安装完成。
开机启动:
#开机启动oracle
sed -i 's/:N/:Y/' /etc/oratab
sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/' /usr/local/oracle/12.2.0/db_1/bin/dbstart
echo "
su oracle -lc “/usr/local/oracle/12.2.0/db_1/bin/lsnrctl start”
su oracle -lc /usr/local/oracle/12.2.0/db_1/bin/dbstart
" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
第五步,测试
查看端口状态:(oracle默认端口1521,em端口5500)
web测试:
sqlplus测试:
sqlplus sys/oracle as sysdba
SQL> select name from sys.v_$database;
——————————————————————————————————————————————
#结果如下
#NAME
#---------
#ORCL
Navicat测试:
其他
图像化:创建新数据库,通过dbca命令,弹出图形化向导就可以操作。
命令行:静默创建库,其实就是dbca 一个dbca.rsp响应文件(所以,创建再次创建新库,其实就是dbca一个新的dbca.rsp文件,注意修改模板端口)
静默安装3个响应模板文件位于:oracle解压包/database/response/
静默安装
静默安装其实也很简单,和图形化安装稍微有写区别:就需要提前配置3个响应文件(3个响应文件就是安装图形化安装时的参数!)
- 数据库初始化安装响应文件:db_install.rsp
- 创建实例响应文件:dbca.rsp
- 监听响应文件:netca.rsp
安装初始化:runInstaller -silent -responseFile db_install.rsp
监听:netca -silent -responseFile netca.rsp
启动监听:lsnrctl start
查看监听状态:lsnrctl status
建库:dbca -silent -createDatabase -responseFile dbca.rsp
删库:dbca -silent -deleteDatabase -sourcedb orcl
下面是我曾经的12c一键脚本,因为是公司环境,脚本里写的都是固定值,可自行优化(需提前安装java环境)
(可优化内容:swap检测、java环境检测、防火墙放行端口、自动搜索安装包、安装路径等等)
#!/bin/bash
#根据自己情况必须修改!!!!!!!!!
#oracle的zip包路径
ORACLEZIP=/opt/install/oracle
##################以下可改可不改##################
#关闭selinux及防火墙
setenforce 0
sed -i 's/enforcing/disable/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
#安装依赖
echo "安装依赖"
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install make -y
yum install nfs-utils -y
yum install net-tools -y
yum install smartmontools -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y
yum install unzip -y
#创建用户、组
echo "创建用户、组"
#创建oinstall组
groupadd oinstall
#创建dba组
groupadd dba
#创建oper组
groupadd oper
#创建oracle用户
useradd -g oinstall -G dba,oper oracle
#设置oracle用户密码为oracle
echo "oracle" | passwd --stdin oracle
#创建oracle安装目录
echo "创建oracle安装目录"
mkdir /usr/local/oracle
#授权oracle用户及oinstall组
chown -R oracle:oinstall /usr/local/oracle
#创建oraInventory目录
mkdir /home/oracle/oraInventory
#授权
chown -R oracle:oinstall /home/oracle/oraInventory
#配置oracle用户环境
echo "配置用户环境"
echo "
#以下内容追加到最后
ORACLE_HOSTNAME=oracle
#安装路径
ORACLE_BASE=/usr/local/oracle
#数据库路径
ORACLE_HOME=/usr/local/oracle/12.2.0/db_1
#实例id
ORACLE_SID=orcl
#字符集
LANG=zh_CN.UTF-8
NLS_LANG='SIMPLIFIED CHINESE_CHINA.AL32UTF8'
#path路径
PATH=$PATH:/usr/local/oracle/12.2.0/db_1/bin
export PATH ORACLE_HOSTNAME ORACLE_BASE ORACLE_HOME ORACLE_SID LANG NLS_LANG
" >> /home/oracle/.bash_profile
source /home/oracle/.bash_profile
#配置全局环境
echo "配置全局环境"
echo "
#以下内容追加到最后
#ulimit控制shell资源
#-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
#-u <程序数目> 用户最多可开启的程序数目。
#-n <文件数目> 指定同一时间最多可开启的文件数。
if [ $USER = "oracle" ]
then
if [ $SHELL = "/bin/ksh" ]
then
ulimit -p 16384
ulimit -p 65536
else
ulimit -u 16384 -n 65536
fi
fi
" >> /etc/profile
source /etc/profile
#oracel用户内核限制limits
echo "ORACLE用户限制limits"
echo "
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
" >> /etc/security/limits.conf
#配置oracle-pam
echo "
session required pam_limits.so
" >> /etc/pam.d/login
echo "配置oracle认证完成!"
#配置内核参数
echo "配置内核"
echo "
#以下内容追加到最后
#异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.aio-max-nr = 1048576
#打开的文件句柄的最大数量,防止文件描述符耗尽的问题
fs.file-max = 6815744
#共享内存8G设置:8*1024*1024=8388608k/4k=2097152
kernel.shmall = 2097152
#物理内存4G设置:4*1024*1024*1024=4294967296-1=4294967295(kb)
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#可使用的IPv4端口范围
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
" >> /etc/sysctl.conf
#配置hosts
echo “配置hosts”
hostnamectl set-hostname oracle
IPLAN=`hostname -I |awk '{print $1}'`
echo "$IPLAN oracle" >> /etc/hosts
systemctl restart network
#数据库初始化文件db_install.rsp
echo "创建db_install.rsp"
echo "
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v12.2.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/home/oracle/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/usr/local/oracle/12.2.0/db_1
ORACLE_BASE=/usr/local/oracle
oracle.install.db.InstallEdition=EE
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.isRACOneInstall=false
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.password.ALL=oracle
SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
DECLINE_SECURITY_UPDATES=true
" > /home/oracle/db_install.rsp
#创建实例文件dbca.rsp
echo "创建dbca.rsp"
echo "
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0
gdbName=orcl
sid=orcl
sysPassword=oracle
systemPassword=oracle
pdbAdminPassword=oracle
dbsnmpPassword=oracle
databaseConfigType=SI
createAsContainerDatabase=true
numberOfPDBs=1
pdbName=orclpdb
templateName=/usr/local/oracle/12.2.0/db_1/assistants/dbca/templates/General_Purpose.dbc
emExpressPort=5500
omsPort=0
characterSet=AL32UTF8
listeners=LISTENER
memoryPercentage=40
automaticMemoryManagement=false
totalMemory=0
" > /home/oracle/dbca.rsp
#解压oracle
echo "开始解压、安装"
cd $ORACLEZIP
unzip -d /home/oracle linuxx64_12201_database.*
echo "----------------------------------------------------------------------------------------"
echo "开始安装数据库程序,周期较长请不要中断进程,安装中……"
echo "----------------------------------------------------------------------------------------"
#数据库初始化
#切换oracle
su - oracle << EOF
#忽略参数 -ignorePrereq
/home/oracle/database/runInstaller -silent -responseFile /home/oracle/db_install.rsp
#安装等待时长,自行调整
sleep 400
EOF
echo "更新数据库目录权限"
#返回root
bash /usr/local/oracle/oraInventory/orainstRoot.sh
sleep 2
bash /usr/local/oracle/12.2.0/db_1/root.sh
sleep 2
#切换oracle
su - oracle << EOF
#启动监听
netca -silent -responseFile /home/oracle/database/response/netca.rsp
sleep 2
#创建数据库
dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp
sleep 2
EOF
#开机启动oracle
echo "配置oracle开机启动"
sed -i 's/:N/:Y/' /etc/oratab
sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/' /usr/local/oracle/12.2.0/db_1/bin/dbstart
echo "
su oracle -lc “/usr/local/oracle/12.2.0/db_1/bin/lsnrctl start”
su oracle -lc /usr/local/oracle/12.2.0/db_1/bin/dbstart
" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
########使用EM express######
#打开em:
#https:sql> exec dbms_xdb_config.sethttpsport(5500);
#http :sql> dbms_xdb_config.sethttpport(5505);
#关闭em:
#https:sql> exec dbms_xdb_config.sethttpsport(0);
#http :sql> exec dbms_xdb_config.sethttpport(0);
#查看em端口:
#https:sql> select dbms_xdb_config.gethttpsport from dual;
#http :sql> select dbms_xdb_config.gethttpport from dual;
#登录数据库启动EM#
su - oracle << EOF
sqlplus sys/oracle as sysdba
exec dbms_xdb_config.sethttpsport(5500);
exit
EOF
echo "--------------------------------oracle安装完成---------------------------------"
echo "本地用户:oracle 密码:oracle 本地IP:$IPLAN"
echo "-------------------------------ORACLE相关信息如下-------------------------------"
echo " ORACLE_BASE:/usr/local/oracle"
echo " ORACLE_HOME:/ursr/local/oracle/12.2.0/db_1"
echo " gdbName:orcl"
echo " oracleSID:orcl"
echo " sys密码:oracle"
echo " system密码:oracle"
echo " EM 地址:https://$IPLAN:5500/em"
echo "------------------------------------------------------------------------------"
发表评论