ORACLE_OCP之在CENTOS 7上安装Oracle12cR2,基于ASM存储的单实例数据库
1、检查主机名和网络并且配置/etc/hosts文件,关闭防火墙
-
检查防火墙状态
systemctl status firewalld.service
-
暂时关闭防火墙,下次启动时防火墙仍随系统启动而启动
systemctl stop firewalld.service
-
彻底永久关闭防火墙
systemctl disable firewalld.service
-
关闭SELINUX防火墙!
vi /etc/selinux/config
将内容
SELINUX=enforcing
更改为
SELINUX=disabled
2、安装ORACLE先决条件的软件包
yum install -y bc
yum install -y compat-libcap1*
yum install -y compat-libcap*
yum install -y binutils
yum install -y compat-libstdc++-33
yum install -y elfutils-libelf
yum install -y elfutils-libelf-devel
yum install -y gcc
yum install -y gcc-c++
yum install -y glibc-2.5
yum install -y glibc-common
yum install -y glibc-devel
yum install -y glibc-headers
yum install -y ksh libaio
yum install -y libaio-devel
yum install -y libgcc
yum install -y libstdc++
yum install -y libstdc++-devel
yum install -y make
yum install -y sysstat
yum install -y unixODBC
yum install -y unixODBC-devel
yum install -y binutils*
yum install -y compat-libstdc*
yum install -y elfutils-libelf*
yum install -y gcc*
yum install -y glibc*
yum install -y ksh*
yum install -y libaio*
yum install -y libgcc*
yum install -y libstdc*
yum install -y make*
yum install -y sysstat*
yum install -y libXp*
yum install -y glibc-kernheaders
yum install -y net-tools-*
3、修改LINUX的内核文件
vim /etc/sysctl.conf
kernel.shmmax = 277495689510912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
fs.file-max = 6815744
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
#net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_timestamps = 0
fs.aio-max-nr = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
参数说明:
fs.file-max //文件句柄数 一次可以打开文件的个数
kernel.shmall //公式:内存大小*1024*1024*1024/4*1024 //表示所有内存大小(单位:页=4K)
kernel.shmmax //表示最大共享内存大小,一般为物理内存的3/4 但是常用的就是将所有内存换算成字节后-1(单位:字节)
kernel.shmmni = 4096 //表示最小共享内存固定4096KB 一般是固定值
kernel.sem //4个参数依次是SEMMSL:每个用户拥有信号量最大数,SEMMNS:系统信号量最大数,SEMOPM:每次semopm系统调用操作数,SEMMNI:系统辛苦量集数最大数。这4个参数为固定内容大小
net.ipv4.ip_local_port_range = 9000 65500 //ip_local_port_range表示端口的范围,为指定的内容 一般是固定值
net.core.rmem_default //表示套接字接收缓冲区大小的缺省值
net.core.rmem_max //表示套接字接收缓冲区大小的最大值。
net.core.wmem_default //表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max //表示套接字发送缓冲区大小的最大值。
- 参数编辑完成后执行下面的命令
[root@localhost ~]# sysctl -p 生成系统参数
4、添加下列参数到/etc/security/limits.conf
vim /etc/security/limits.conf
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
oracle hard memlock 134217728
oracle soft memlock 134217728
grid soft nofile 1024
grid hard nofile 65536
grid soft nproc 16384
grid hard nproc 16384
grid soft stack 10240
grid hard stack 32768
grid hard memlock 134217728
grid soft memlock 134217728
5、添加下列条目到/etc/pam.d/login 这两个主要是限制使用进程数可以不用了解
vim /etc/pam.d/login
//32位
session required /lib/security/pam_limits.so
session required pam_limits.so
//64位
session required /lib64/security/pam_limits.so
session required pam_limits.so
6、环境变量中添加下列语句
vim /etc/profile
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
- 然后执行生效
[root@localhost ~]# source /etc/profile
7、创建文件目录和相应的用户
groupadd -g 601 oinstall
groupadd -g 602 dba
groupadd -g 603 oper
groupadd -g 604 backupdba
groupadd -g 605 dgdba
groupadd -g 606 kmdba
groupadd -g 607 asmdba
groupadd -g 608 asmoper
groupadd -g 609 asmadmin
useradd -u 601 -g oinstall -G asmadmin,asmdba,dba,asmoper grid
useradd -u 602 -g oinstall -G dba,backupdba,dgdba,kmdba,asmadmin,oper,asmdba oracle
//为GRID用户和ORACLE用户设置密码
[root@localhost ~]# echo grid | passwd --stdin grid
Changing password for user grid.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo grid | passwd --stdin oracle
Changing password for user oracle.
passwd: all authentication tokens updated successfully.
//创建目录
//以root用户,创建Oracle Inventory 目录
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
//以root用户,创建GI HOME目录
mkdir -p /u01/app/grid
mkdir -p /u01/app/12.2.0/grid
chown -R grid:oinstall /u01/app/grid
chmod -R 775 /u01/app/grid
chown -R grid:oinstall /u01/app/12.2.0
chmod -R 775 /u01/app/12.2.0/
//我们一会而需要把grid软件的安装包放到 /u01/app/12.2.0/grid 这个目录下
//以root用户,创建Oracle Base目录
mkdir -p /u01/app/oracle
mkdir /u01/app/oracle/cfgtoollogs
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle
//以root用户,创建Oracle RDBMS Home目录
mkdir -p /u01/app/oracle/product/12.2.0/db_1
chown -R oracle:oinstall /u01/app/oracle/product/12.2.0/db_1
chmod -R 775 /u01/app/oracle/product/12.2.0/db_1
8、配置GRID和ORACLE用户的环境变量
su - grid
#grid用户的环境变量如下:
vim ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
umask 022
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_SID=+ASM
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/12.2.0/grid
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_HOME/bin
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
生成用户的环境变量
[grid@localhost ~]$ . ~/.bash_profile
su - oracle
#oracle用户的环境变量如下:
vim ~/.bash_profile
PS1="[`whoami`@`hostname`:"'$PWD]$'
export PS1
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/db_1
export ORACLE_SID=orcl
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export PATH=.:$PATH:$HOME/bin:$ORACLE_BASE/product/12.2.0/db_1/bin:$ORACLE_HOME/bin
export THREADS_FLAG=native;export THREADS_FLAG
if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ];then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
生成环境变量
.[oracle@localhost ~]$ . ~/.bash_profile
- 检测UDEV是否安装
[root@localhost ~]# rpm -qa|grep udev
python-pyudev-0.15-9.el7.noarch
8、配置磁盘 使用ROOT用户 先决条件是已经在虚拟机中添加了两块磁盘驱动器
vim /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="raw[1-3]",OWNER="grid",GROUP="oinstall",MODE="660"
- 添加完了重新启动系统
- 检查磁盘是否生效 -> cd /dev/raw 下查看你添加的raw1 raw2 raw3有没有出现,并且使用ll或ls -al命令去看一下相关权限和相应的属性
[root@localhost ~]# cd /dev/raw
[root@localhost raw]# ls
raw1 raw2 raw3 rawctl
[root@localhost raw]#
9、上传软件并且解压
-
需要把grid软件的安装包放到 /u01/app/12.2.0/grid 这个目录下
-
下载并解压
修改所属和权限,这里我为了方便直接给了777,最高。
-rwxrwxrwx 1 grid oinstall 2994687209 Jan 7 08:14 linuxx64_12201_grid_home.zip
//这个文件root用户下做操作
10、安装GRID
[root@localhost u01]# su - grid
[grid@localhost.localdomain:/home/grid]$cd /u01/app/12.2.0/grid/
[grid@localhost.localdomain:/u01/app/12.2.0/grid]$export DISPLAY=192.168.190.1:0.0
[grid@localhost.localdomain:/u01/app/12.2.0/grid]$./gridSetup.sh
- 执行gridSetup.sh安装脚本弹出以下安装界面
- raw*:这个是我们设置挂载的时候的名字
- 点击ok之后出现以下界面,随意选择其中一个即可,这里我选择了第一个,然后点击下一步
- 设置一个密码,这里会弹出一个确认弹窗,点击yes
- Checks出来此时系统缺少一些必备软件,我们需要把他们都安装上。(不同的环境会有不同的检查结果,不一定是一样的,根据实际情况安装提示的软件即可)
- 所有告警软件都安装完成之后点击Check again,显示如下,即是检查通过
- 点击install,安装
- 中途会弹出这个窗口,让你执行相关脚本,直接去root下执行就行
- 完成,点击close
- rlwrap软件配置
rlwrap-0.37-1.el6.x86_64.rpm 该软件务必在ROOT用户下安装,如果切换到ORACLE用户下安装可能会发生相关的权限问题
su - grid
vim /home/grid/.bash_profile
#添加如下:
alias sqlplus=‘rlwrap sqlplus’
alias rman=‘rlwrap rman’
alias asmcmd=‘rlwrap asmcmd’
- 添加完内容后保存退出 并执行以下命令来生成环境变量
. /home/grid/.bash_profile
11、检查ASM的状态:
crsctl stat res -t
[grid@localhost.localdomain:/home/grid]$crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG.dg
ONLINE ONLINE localhost STABLE
ora.LISTENER.lsnr
ONLINE ONLINE localhost STABLE
ora.asm
ONLINE ONLINE localhost Started,STABLE
ora.ons
OFFLINE OFFLINE localhost STABLE #不用关心
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE localhost STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE #不用关心
ora.evmd
1 ONLINE ONLINE localhost STABLE
--------------------------------------------------------------------------------
12、安装oracle12c
- 在oracle用户下的.bash_profile文件中添加一下两个别名
如果你当前是oracle用户的话 直接使用 vim /home/oracle/.bash_profile进入到环境变量文件(绝对路径)
- 如果你当前不是oracle用户的话请执行以下命令
>su - oracle
vi /home/oracle/.bash_profile
#将下面三行文字粘贴进该文件中即可
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
- 添加完内容后保存退出 并执行以下命令来生成环境变量
>. /home/oracle/.bash_profile
#进入到oracle用户中,cd /u01/database/ 执行runinstall
[oracle@localhost.localdomain:/home/oracle]$export DISPLAY=192.168.190.1:0.0
[oracle@localhost.localdomain:/home/oracle]$ls
[oracle@localhost.localdomain:/home/oracle]$cd /u01/database/
[oracle@localhost.localdomain:/u01/database]$ls
install response rpm runInstaller sshsetup stage welcome.html
[oracle@localhost.localdomain:/u01/database]$./runInstaller
- 执行runinstall脚本弹出,点击是
- 安装。
- 安装过程中会弹出,如下的弹窗,root执行脚本。
- 安装完毕,点击close
- 执行dbca建库
[oracle@localhost.localdomain:/u01/database]$dbca
- 设置oracle密码
- 安装
- 完成,点击close
到此我们整个安装过程就完成了!!!
最后,启动EM EXPRESS
//oracle用户下:
lsnrctl start
SQL> select dbms_xdb_config.gethttpsport() from dual;
SQL> select dbms_xdb_config.gethttpport() from dual;
设置em端口
//设置https端口的端口号
exec dbms_xdb_config.setHTTPSPort(8089);
//设置http端口的端口号
exec dbms_xdb_config.setHTTPPort(8090);
SQL> exec dbms_xdb_config.setHTTPSPort(8089);
PL/SQL procedure successfully completed.
SQL> exec dbms_xdb_config.setHTTPPort(8090);
PL/SQL procedure successfully completed.
SQL>