一、安装Docker
二、创建CentOS7.6的容器
三、操作系统配置部分
3.1、关闭防火墙(Docker中一般不需要)
3.2、禁用selinux(Docker中一般不需要)
3.3、添加组和用户
3.3.1、添加oracle和grid用户
3.3.2、创建安装目录
3.3.3、配置grid和oracle用户的环境变量文件
3.3.4、配置root用户的环境变量
3.4、安装依赖包
3.5、配置内核参数
3.5.1、修改/etc/sysctl.conf文件
3.5.2、修改/etc/security/limits.conf文件
3.5.3、修改/etc/pam.d/login文件
3.6、配置/dev/shm大小
四、配置ASM磁盘
4.1、安装oracleasm
4.2、创建loop设备
4.3、创建ASM磁盘
4.4、配置开机启动脚本
五、数据库软件包准备
5.1、上传安装文件
5.2、解压安装文件
六、图形化安装grid和db
七、静默安装grid和db
7.1、静默安装grid
7.1.1、开始安装grid软件
7.1.2、静默创建ASM实例
7.1.3、静默创建监听
7.1.4、创建DATA和FRA磁盘组
7.2、静默安装db
八、dbca静默建库及配置
8.1、配置db自动启动
8.2、19c EM配置
8.3、提交容器镜像供别人下载使用
CentOS 7安装Docker: https://docs.docker.com/engine/install/centos/
具体过程可以参考:【DB宝2】在CentOS7中安装Docker
--1、卸载掉旧版本的 Docker:
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
--2、执行以下安装命令去安装依赖包:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
# 若执行报错,则配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
--或一键安装:
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
--启动Docker软件
systemctl start docker
systemctl status docker
--3、检查版本
docker version
docker info
--CentOS镜像
https://hub.docker.com/_/centos?tab=tags
--拉取镜像
docker pull centos:7.6.1810
--创建容器
docker run -d --name lhr2019ocpasm -h lhr2019ocpasm -p 5500-5510:5500-5510 -p 1521:1521 -p 222:22 --privileged=true centos:7.6.1810 /usr/sbin/init
--修改时区
docker cp /usr/share/zoneinfo/Asia/Shanghai lhr2019ocpasm:/etc/localtime
--进入容器
docker exec -it lhr2019ocpasm /bin/bash
--安装一些必要的系统包
yum install -y openssh-clients openssh-server initscripts net-tools telnet which wget passwd e4fsprogs lrzsz sudo unzip lvm2 tree traceroute bridge-utils dos2unix rlwrap xdpyinfo
yum -y install vim redhat-lsb
--解决agetty进程cpu占用率100%,宿主机和容器都需要执行
systemctl stop getty@tty1.service
systemctl mask getty@tty1.service
--启动ssh进程
systemctl restart sshd
--修改root用户密码
echo "root:lhr" | chpasswd
--远程登录
ssh root@192.168.1.35 -p222
-- 配置容器内的yum源:阿里云
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
rpm --rebuilddb
--关闭防火墙:
systemctl disable firewalld
systemctl stop firewalld
systemctl stop firewalld.service
systemctl disable firewalld.service
--验证:
systemctl list-unit-files | grep fire
--临时关闭(不用重启机器):
setenforce 0
--查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
# 示例
[root@lhr2019ocpasm ~] /usr/sbin/sestatus -v
SELinux status: disabled
[root@lhr2019ocpasm ~] getenforce
Disabled
[root@lhr2019ocpasm ~]
--手工修改/etc/selinux/config中SELINUX=disabled,或使用下面命令:
sed -i '/^SELINUX=.*/ s//SELINUX=disabled/' /etc/selinux/config
官网:https://docs.oracle.com/en/database/oracle/oracle-database/18/ladbi/creating-operating-system-privileges-groups.html#GUID-3A3C9191-4187-41D4-98C4-400746023F6B
--创建组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
-- 创建用户并添加用户到组
useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle
useradd -u 54322 -g oinstall -G asmadmin,asmdba,asmoper,dba,racdba grid
-- 修改oracle和grid用户的密码为lhr
echo "oracle:lhr" | chpasswd
echo "grid:lhr" | chpasswd
# root用户创建目录并赋权:
mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/
mkdir -p /u01/app/oraInventory
chown -R grid:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app/oraInventory
修改grid、oracle用户的.bash_profile文件,直接使用root用户执行。
1、配置oracle用户的环境变量:
cat >> /home/oracle/.bash_profile <<"EOF"
umask 022
export ORACLE_SID=lhr19cdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORACLE_PATH=.:$ORACLE_BASE/dba_scripts/sql:$ORACLE_HOME/rdbms/admin
export SQLPATH=$ORACLE_HOME/sqlplus/admin
#export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
#AL32UTF8 SELECT userenv('LANGUAGE') db_NLS_LANG FROM DUAL;
export NLS_LANG="AMERICAN_CHINA.ZHS16GBK"
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias asmcmd='rlwrap asmcmd'
alias dgmgrl='rlwrap dgmgrl'
alias sas='sqlplus / as sysdba'
EOF
2、配置oracle用户的glogin.sql文件,用于修改SQL提示符:
cat >>/u01/app/oracle/product/19.3.0/dbhome_1/sqlplus/admin/glogin.sql << "EOF"
set linesize 9999 pagesize 9999
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
EOF
3、配置grid用户的环境变量:
cat >> /home/grid/.bash_profile <<"EOF"
umask 022
export ORACLE_SID=+ASM
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export PATH=$ORACLE_HOME/bin:$PATH
alias sqlplus='rlwrap sqlplus'
alias asmcmd='rlwrap asmcmd'
alias dgmgrl='rlwrap dgmgrl'
alias sas='sqlplus / as sysdba'
EOF
4、配置grid用户的glogin.sql文件,用于修改SQL提示符:
cat >>/u01/app/19.3.0/grid/sqlplus/admin/glogin.sql << "EOF"
set linesize 9999 pagesize 9999
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> "
EOF
分别修改/etc/profile和/root/.bashrc文件:
#修改/etc/profile
cat >> /etc/profile <<"EOF"
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export GRID_HOME=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin
EOF
#修改/root/.bashrc
cat >> /root/.bashrc <<"EOF"
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export GRID_HOME=$ORACLE_HOME
export PATH=$PATH:$ORACLE_HOME/bin
EOF
检查缺失的依赖包:
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils \
compat-libcap1 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
glibc \
glibc-devel \
ksh \
libgcc \
libstdc++ \
libstdc++-devel \
libaio \
libaio-devel \
libXext \
libXtst \
libX11 \
libXau \
libxcb \
libXi \
make \
elfutils-libelf-devel \
sysstat | grep "not installed"
推荐使用yum安装缺失的依赖包:
yum install -y elfutils-libelf-devel*
yum install -y compat-libstdc++*
yum install -y libaio-devel*
yum install -y ksh*
# 最后重新检查,确保所有的包已安装。需要注意的是,有的时候由于版本的问题导致检查有问题,所以需要用rpm -qa | grep libstdc 来分别对每个包检查。
echo "
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.panic_on_oops = 1
" >> /etc/sysctl.conf
--使修改参数立即生效:
/sbin/sysctl -p
-- 修改OS用户grid和oracle资源限制:
cp /etc/security/limits.conf /etc/security/limits.conf.`date +%Y%m%d`
echo "grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
grid soft nproc 2047
grid hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
root soft nproc 2047 " >> /etc/security/limits.conf
echo "session required pam_limits.so" >> /etc/pam.d/login
如果不配置的话会报错:ORA-00845: MEMORY_TARGET not supported on this system,这个错误简单来说就是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小。
由于docker容器中没有/etc/fstab文件,所以我们只能每次重启容器后都修改一下/dev/shm大小。
mount -o remount,size=4G /dev/shm
echo "mount -o remount,size=4G /dev/shm" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local #Linux7需要修改权限保证开机启动
--结果
[root@lhr2019ocpasm /]# df -h
Filesystem Size Used Avail Use% Mounted on
... ...
shm 4.0G 637M 3.4G 16% /dev/shm
... ...
在docker中,我们使用asmlib+loop设备来配置ASM磁盘。
先安装kmod-oracleasm,再安装oracleasmlib和oracleasm-support
--------------- rhel7安装asmlib:https://www.oracle.com/search
--1、安装kmod-oracleasm
yum install -y kmod-oracleasm
# http://rpmfind.net/linux/rpm2html/search.php
# wget http://rpmfind.net/linux/centos/7.7.1908/os/x86_64/Packages/kmod-oracleasm-2.0.8-26.el7.x86_64.rpm
--2、安装oracleasmlib和oracleasm-support
--下载地址:https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm
wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm
rpm -ivh *.rpm
--3、配置asmlib
systemctl enable oracleasm.service
oracleasm configure -i # 依次输入grid,asmadmin,y,y
oracleasm configure -d
oracleasm configure -e
oracleasm init #若初始化失败,则尝试重启OS
oracleasm status
--结果示例
[root@lhr2019ocpasm /]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
mkdir /asmdisk
dd if=/dev/zero of=/asmdisk/disk1 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk2 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk3 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk4 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk5 bs=1024k count=2000
dd if=/dev/zero of=/asmdisk/disk6 bs=1024k count=8000
dd if=/dev/zero of=/asmdisk/disk7 bs=1024k count=8000
mknod -m 0660 /dev/loop1 b 7 1
mknod -m 0660 /dev/loop2 b 7 2
mknod -m 0660 /dev/loop3 b 7 3
mknod -m 0660 /dev/loop4 b 7 4
mknod -m 0660 /dev/loop5 b 7 5
mknod -m 0660 /dev/loop6 b 7 6
mknod -m 0660 /dev/loop7 b 7 7
/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4
/sbin/losetup /dev/loop5 /asmdisk/disk5
/sbin/losetup /dev/loop6 /asmdisk/disk6
/sbin/losetup /dev/loop7 /asmdisk/disk7
losetup -a
-- 结果示例
[root@lhr2019ocpasm /]# losetup -a
/dev/loop1: [0109]:17694792 (/asmdisk/disk1)
/dev/loop2: [0109]:17694793 (/asmdisk/disk2)
/dev/loop3: [0152]:16131608 (/asmdisk/disk3)
/dev/loop4: [0152]:16131609 (/asmdisk/disk4)
/dev/loop5: [0152]:16131611 (/asmdisk/disk5)
/dev/loop6: [0152]:16164617 (/asmdisk/disk6)
/dev/loop7: [0152]:16164622 (/asmdisk/disk7)
oracleasm createdisk ASM1 /dev/loop1
oracleasm createdisk ASM2 /dev/loop2
oracleasm createdisk ASM3 /dev/loop3
oracleasm createdisk ASM4 /dev/loop4
oracleasm createdisk ASM5 /dev/loop5
oracleasm createdisk ASM6 /dev/loop6
oracleasm createdisk ASM7 /dev/loop7
--在创建完成后,结果示例
[root@lhr2019ocpasm /]# oracleasm listdisks
ASM1
ASM2
ASM3
ASM4
ASM5
ASM6
ASM7
最好配置单独启动脚本,否则容器启动可能不会自动配置ASM磁盘。
1、配置shell脚本并赋权
-- 1、编写shell脚本
echo "
#!/bin/bash
mknod -m 0660 /dev/loop1 b 7 1
mknod -m 0660 /dev/loop2 b 7 2
mknod -m 0660 /dev/loop3 b 7 3
mknod -m 0660 /dev/loop4 b 7 4
mknod -m 0660 /dev/loop5 b 7 5
mknod -m 0660 /dev/loop6 b 7 6
mknod -m 0660 /dev/loop7 b 7 7
systemctl restart oracleasm.service
/sbin/losetup -d /dev/loop1
/sbin/losetup -d /dev/loop2
/sbin/losetup -d /dev/loop3
/sbin/losetup -d /dev/loop4
/sbin/losetup -d /dev/loop5
/sbin/losetup -d /dev/loop6
/sbin/losetup -d /dev/loop7
/sbin/losetup /dev/loop1 /asmdisk/disk1
/sbin/losetup /dev/loop2 /asmdisk/disk2
/sbin/losetup /dev/loop3 /asmdisk/disk3
/sbin/losetup /dev/loop4 /asmdisk/disk4
/sbin/losetup /dev/loop5 /asmdisk/disk5
/sbin/losetup /dev/loop6 /asmdisk/disk6
/sbin/losetup /dev/loop7 /asmdisk/disk7
oracleasm scandisks
/u01/app/19.3.0/grid/bin/crsctl start res -all
" > /etc/initASMDISK.sh
-- 2、赋予可执行权限
chmod +x /etc/initASMDISK.sh
2、配置系统服务并设置开机启动
echo "
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/etc/initASMDISK.sh
[Install]
WantedBy=default.target
" > /etc/systemd/system/initASMDISK.service
systemctl daemon-reload
systemctl enable initASMDISK.service
打开SecureFX软件:
复制粘贴数据库文件到/soft目录下并等待上传完成。
注意,在上传完成后,最好对安装包进行MD5值校验,防止安装文件上传出现错误:
[root@lhr2019ocpasm soft]# ll
total 5809476
-rw-r--r-- 1 root root 3059705302 Apr 26 2019 LINUX.X64_193000_db_home.zip
-rw-r--r-- 1 root root 2889184573 Apr 26 2019 LINUX.X64_193000_grid_home.zip
[root@lhr2019ocpasm soft]# md5sum LINUX.X64_193000_db_home.zip
1858bd0d281c60f4ddabd87b1c214a4f LINUX.X64_193000_db_home.zip
[root@lhr2019ocpasm soft]# md5sum LINUX.X64_193000_grid_home.zip
b7c4c66f801f92d14faa0d791ccda721 LINUX.X64_193000_grid_home.zip
注意:从18c开始,解压后的文件所在目录就是GRID_HOME。所以解压的时候,就要把文件解压到之前配置的GRID_HOME下。
--grid用户:
unzip /soft/LINUX.X64_193000_grid_home.zip -d /u01/app/19.3.0/grid
--oracle用户:
unzip /soft/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1
设置DISPLAY环境变量,打开“Xmanager - Passive”软件,分别执行gridSetup.sh和runInstaller即可。
这里不再详细演示,我们本文主要使用静默方式来安装。
--安装grid
[grid@asm19clhr ~]$ export DISPLAY=192.168.1.1:0.0
[grid@asm19clhr ~]$ /u01/app/19.3.0/grid/gridSetup.sh
--安装db
[root@raclhr-18c-n1 ~]# su - oracle
Last login: Fri Sep 14 15:39:02 CST 2018 on pts/3
[oracle@raclhr-18c-n1 ~]$ cd $ORACLE_HOME
[oracle@raclhr-18c-n1 dbhome_1]$ export DISPLAY=192.168.59.1:0.0
[oracle@raclhr-18c-n1 dbhome_1]$ ./runInstaller
使用grid用户执行:
[grid@lhr2019ocpasm ~]$ /u01/app/19.3.0/grid/gridSetup.sh -silent -force -noconfig -ignorePrereq \
> oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v19.0.0 \
> INVENTORY_LOCATION=/u01/app/oraInventory \
> oracle.install.option=HA_CONFIG \
> ORACLE_BASE=/u01/app/grid \
> oracle.install.asm.OSDBA=asmdba \
> oracle.install.asm.OSOPER=asmoper \
> oracle.install.asm.OSASM=asmadmin \
> oracle.install.asm.SYSASMPassword=lhr \
> oracle.install.asm.monitorPassword=lhr \
> oracle.install.crs.config.scanType=LOCAL_SCAN \
> oracle.install.crs.config.ClusterConfiguration=STANDALONE \
> oracle.install.crs.config.configureAsExtendedCluster=false \
> oracle.install.crs.config.useIPMI=false \
> oracle.install.asm.storageOption=ASM \
> oracle.install.asm.diskGroup.name=DATA \
> oracle.install.asm.diskGroup.redundancy=EXTERNAL \
> oracle.install.asm.diskGroup.AUSize=4 \
> oracle.install.asm.diskGroup.disksWithFailureGroupNames=ORCL:ASM1,,ORCL:ASM2,,ORCL:ASM3, \
> oracle.install.asm.diskGroup.disks=ORCL:ASM1,ORCL:ASM2,ORCL:ASM3 \
> oracle.install.asm.diskGroup.diskDiscoveryString=ORCL:* \
> oracle.install.crs.rootconfig.executeRootScript=false
Launching Oracle Grid Infrastructure Setup Wizard...
[WARNING] [INS-30011] The SYS password entered does not conform to the Oracle recommended standards.
CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-30011] The ASMSNMP password entered does not conform to the Oracle recommended standards.
CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
ACTION: Provide a password that conforms to the Oracle recommended standards.
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
CAUSE: Some of the optional prerequisites are not met. See logs for details. gridSetupActions2020-06-24_10-35-38AM.log
ACTION: Identify the list of failed prerequisite checks from the log: gridSetupActions2020-06-24_10-35-38AM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
/u01/app/19.3.0/grid/install/response/grid_2020-06-24_10-35-38AM.rsp
You can find the log of this install session at:
/tmp/GridSetupActions2020-06-24_10-35-38AM/gridSetupActions2020-06-24_10-35-38AM.log
As a root user, execute the following script(s):
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/19.3.0/grid/root.sh
Execute /u01/app/19.3.0/grid/root.sh on the following nodes:
[lhr2019ocpasm]
Successfully Setup Software with warning(s).
As install user, execute the following command to complete the configuration.
/u01/app/19.3.0/grid/gridSetup.sh -executeConfigTools -responseFile /u01/app/19.3.0/grid/install/response/grid_2020-06-24_10-35-38AM.rsp [-silent]
Note: The required passwords need to be included in the response file.
Moved the install session logs to:
/u01/app/oraInventory/logs/GridSetupActions2020-06-24_10-35-38AM
根据提示,使用root跑脚本:
1. /u01/app/oraInventory/orainstRoot.sh
2. /u01/app/19.3.0/grid/root.sh
再使用grid跑脚本:
/u01/app/19.3.0/grid/gridSetup.sh -silent -executeConfigTools -responseFile /u01/app/19.3.0/grid/install/response/grid_2020-06-24_10-35-38AM.rsp
有警告忽略即可。
执行完成后,查看资源:
[root@lhr2019ocpasm /]# crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.ons
OFFLINE OFFLINE lhr2019ocpasm STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE lhr2019ocpasm STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE lhr2019ocpasm STABLE
--------------------------------------------------------------------------------
创建ASM实例可以使用图形界面创建:
export DISPLAY=192.168.59.1:0.0
/u01/app/19.3.0/grid/bin/asmca
可以静默创建ASM实例:
/u01/app/19.3.0/grid/bin/asmca -silent -configureASM -sysAsmPassword lhr -asmsnmpPassword lhr -diskString 'ORCL:*' -diskGroupName DATA -diskList ORCL:ASM1,ORCL:ASM2,ORCL:ASM3 -redundancy EXTERNAL
日志:/u01/app/grid/cfgtoollogs/asmca/asmca-200403PM091415.log
netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
可以使用命令,也可以使用图形化界面来创建。
#使用sqlplus / as sysasm登陆来创建磁盘组
su - grid
sqlplus / as sysasm
alter system set asm_diskstring='ORCL:*';
col name format a10
set line 9999
col path format a25
select GROUP_NUMBER,path,name,disk_number,total_mb,free_mb,CREATE_DATE,MOUNT_STATUS,MOUNT_DATE from v$asm_disk order by GROUP_NUMBER desc,disk_number;
select name,state,free_mb,required_mirror_free_mb,usable_file_mb from v$asm_diskgroup;
--创建磁盘组
create diskgroup FRA external redundancy disk 'ORCL:ASM4','ORCL:ASM5' ATTRIBUTE 'compatible.rdbms' = '19.0', 'compatible.asm' = '19.0';
--给磁盘组添加磁盘
alter diskgroup fra add disk 'ORCL:ASM7';
alter diskgroup data add disk 'ORCL:ASM6';
查询ASM磁盘和磁盘组:
[root@lhr2019ocpasm /]# export GRID_HOME=$ORACLE_HOME
[root@lhr2019ocpasm /]# $GRID_HOME/bin/kfod disks=asm st=true ds=true cluster=true
--------------------------------------------------------------------------------
Disk Size Header Path Disk Group User Group
================================================================================
1: 2000 MB MEMBER ORCL:ASM1 DATA
2: 2000 MB MEMBER ORCL:ASM2 DATA
3: 2000 MB MEMBER ORCL:ASM3 DATA
4: 2000 MB MEMBER ORCL:ASM4 FRA
5: 2000 MB MEMBER ORCL:ASM5 FRA
6: 8000 MB MEMBER ORCL:ASM6 DATA
7: 8000 MB MEMBER ORCL:ASM7 FRA
--------------------------------------------------------------------------------
ORACLE_SID ORACLE_HOME HOST_NAME
================================================================================
+ASM /u01/app/19.3.0/grid lhr2019ocpasm
[root@lhr2019ocpasm /]# su - grid asmcmd lsdg
Last login: Tue Jun 30 12:28:46 CST 2020 on pts/1
State Type Rebal Sector Logical_Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Voting_files Name
MOUNTED EXTERN N 512 512 4096 1048576 14000 10448 0 10448 0 N DATA/
MOUNTED EXTERN N 512 512 4096 1048576 12000 11303 0 11303 0 N FRA/
[root@lhr2019ocpasm /]# crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE lhr2019ocpasm STABLE
ora.FRA.dg
ONLINE ONLINE lhr2019ocpasm STABLE
ora.LISTENER.lsnr
ONLINE ONLINE lhr2019ocpasm STABLE
ora.asm
ONLINE ONLINE lhr2019ocpasm Started,STABLE
ora.ons
OFFLINE OFFLINE lhr2019ocpasm STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE lhr2019ocpasm STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE lhr2019ocpasm STABLE
--------------------------------------------------------------------------------
[oracle@asm19clhr ~]$ /u01/app/oracle/product/19.3.0/dbhome_1/runInstaller -silent -force -noconfig -ignorePrereq oracle.install.responseFileVersion=oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba
Launching Oracle Database Setup Wizard...
[FATAL] [INS-35344] The value is not specified for Real Application Cluster administrative (OSRACDBA) group.
ACTION: Specify a valid group name for Real Application Cluster administrative (OSRACDBA) group.
[oracle@asm19clhr ~]$ /u01/app/oracle/product/19.3.0/dbhome_1/runInstaller -silent -force -noconfig -ignorePrereq oracle.install.responseFileVersion=oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oper oracle.install.db.OSBACKUPDBA_GROUP=backupdba oracle.install.db.OSDGDBA_GROUP=dgdba oracle.install.db.OSKMDBA_GROUP=kmdba oracle.install.db.OSRACDBA_GROUP=racdba
Launching Oracle Database Setup Wizard...
[WARNING] [INS-13014] Target environment does not meet some optional requirements.
CAUSE: Some of the optional prerequisites are not met. See logs for details. /u01/app/oraInventory/logs/InstallActions2020-03-27_03-51-38PM/installActions2020-03-27_03-51-38PM.log
ACTION: Identify the list of failed prerequisite checks from the log: /u01/app/oraInventory/logs/InstallActions2020-03-27_03-51-38PM/installActions2020-03-27_03-51-38PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
The response file for this session can be found at:
/u01/app/oracle/product/19.3.0/dbhome_1/install/response/db_2020-03-27_03-51-38PM.rsp
You can find the log of this install session at:
/u01/app/oraInventory/logs/InstallActions2020-03-27_03-51-38PM/installActions2020-03-27_03-51-38PM.log
As a root user, execute the following script(s):
1. /u01/app/oracle/product/19.3.0/dbhome_1/root.sh
Execute /u01/app/oracle/product/19.3.0/dbhome_1/root.sh on the following nodes:
[asm19clhr]
Successfully Setup Software with warning(s).
根据提示,使用root用户执行以下脚本:
/u01/app/oracle/product/19.3.0/dbhome_1/root.sh
至此,ASM和db软件都已经安装完成了,接下来我们创建数据库。
-- 删除数据库
dbca -silent -deleteDatabase -sourceDB lhr19cdb -sysDBAUserName sys -sysDBAPassword lhr -forceArchiveLogDeletion
--创建lhr19cdb,是一个cdb的库
dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname lhr19cdb -sid lhr19cdb \
-createAsContainerDatabase TRUE \
-sysPassword lhr -systemPassword lhr -pdbAdminPassword lhr -dbsnmpPassword lhr \
-datafileDestination '+DATA' -recoveryAreaDestination '+FRA' \
-storageType ASM \
-characterset AL32UTF8 \
-sampleSchema true \
-totalMemory 1024 \
-databaseType MULTIPURPOSE \
-emConfiguration NONE
--创建lhr19sdb,是一个非cdb的库
dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname lhr19sdb -sid lhr19sdb \
-createAsContainerDatabase FALSE \
-sysPassword lhr -systemPassword lhr -dbsnmpPassword lhr \
-datafileDestination '/u01/app/oracle/oradata' -recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \
-storageType FS \
-characterset ZHS16GBK \
-sampleSchema true \
-totalMemory 1024 \
-databaseType MULTIPURPOSE \
-emConfiguration NONE
使用oracle用户执行过程:
[oracle@lhr2019ocpasm ~]$ dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
> -gdbname lhr19cdb -sid lhr19cdb \
> -createAsContainerDatabase TRUE \
> -sysPassword lhr -systemPassword lhr -pdbAdminPassword lhr -dbsnmpPassword lhr \
> -datafileDestination '+DATA' -recoveryAreaDestination '+FRA' \
> -storageType ASM \
> -characterset AL32UTF8 \
> -sampleSchema true \
> -totalMemory 1024 \
> -databaseType MULTIPURPOSE \
> -emConfiguration NONE
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
10% complete
Registering database with Oracle Restart
14% complete
Copying database files
43% complete
Creating and starting Oracle instance
45% complete
49% complete
54% complete
58% complete
62% complete
Completing Database Creation
68% complete
70% complete
71% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/lhr19cdb.
Database Information:
Global Database Name:lhr19cdb
System Identifier(SID):lhr19cdb
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/lhr19cdb/lhr19cdb.log" for further details.
[oracle@lhr2019ocpasm ~]$ dbca -silent -ignorePreReqs -ignorePrereqFailure -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
> -gdbname lhr19sdb -sid lhr19sdb \
> -createAsContainerDatabase FALSE \
> -sysPassword lhr -systemPassword lhr -dbsnmpPassword lhr \
> -datafileDestination '/u01/app/oracle/oradata' -recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \
> -storageType FS \
> -characterset ZHS16GBK \
> -sampleSchema true \
> -totalMemory 600 \
> -databaseType MULTIPURPOSE \
> -emConfiguration NONE
[WARNING] [DBT-11205] Specified shared pool size does not meet the recommended minimum size requirement. This might cause database creation to fail.
ACTION: Specify at least (600 MB) for shared pool size.
[WARNING] [DBT-06208] The 'SYS' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
[WARNING] [DBT-06208] The 'SYSTEM' password entered does not conform to the Oracle recommended standards.
CAUSE:
a. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
b.The password entered is a keyword that Oracle does not recommend to be used as password
ACTION: Specify a strong password. If required refer Oracle documentation for guidelines.
Prepare for db operation
10% complete
Registering database with Oracle Restart
14% complete
Copying database files
43% complete
Creating and starting Oracle instance
45% complete
49% complete
53% complete
57% complete
60% complete
62% complete
Completing Database Creation
68% complete
70% complete
71% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/u01/app/oracle/cfgtoollogs/dbca/lhr19sdb.
Database Information:
Global Database Name:lhr19sdb
System Identifier(SID):lhr19sdb
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/lhr19sdb/lhr19sdb.log" for further details.
创建完成后:
[root@lhr2019ocpasm ~]# crsctl stat res -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE lhr2019ocpasm STABLE
ora.FRA.dg
ONLINE ONLINE lhr2019ocpasm STABLE
ora.LISTENER.lsnr
ONLINE ONLINE lhr2019ocpasm STABLE
ora.asm
ONLINE ONLINE lhr2019ocpasm Started,STABLE
ora.ons
OFFLINE OFFLINE lhr2019ocpasm STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.cssd
1 ONLINE ONLINE lhr2019ocpasm STABLE
ora.diskmon
1 OFFLINE OFFLINE STABLE
ora.evmd
1 ONLINE ONLINE lhr2019ocpasm STABLE
ora.lhr19cdb.db
1 ONLINE ONLINE lhr2019ocpasm Open,HOME=/u01/app/o
racle/product/19.3.0
/dbhome_1,STABLE
ora.lhr19sdb.db
1 ONLINE ONLINE lhr2019ocpasm Open,HOME=/u01/app/o
racle/product/19.3.0
/dbhome_1,STABLE
--------------------------------------------------------------------------------
可以保证,无论在何种情况下,只要HAS启动,那么数据库都可以自动启动:
crsctl modify resource ora.lhr19cdb.db -attr AUTO_START=always -unsupported
crsctl modify resource ora.lhr19sdb.db -attr AUTO_START=always -unsupported
--结果
[root@lhr2019ocpasm ~]# crsctl stat res ora.lhr19cdb.db -p | grep AUTO_START
AUTO_START=always
[root@lhr2019ocpasm ~]# crsctl stat res ora.lhr19sdb.db -p | grep AUTO_START
AUTO_START=always
19c EM需要做额外的配置,2个数据库都需要配置:
exec dbms_xdb_sethttsport(5500); --lhr19cdb
# exec dbms_xdb_sethttsport(5501); --lhr19sdb
@?/rdbms/admin/execemx emx
chmod 777 /u01/app/oracle/product/19.3.0/dbhome_1/admin/lhr19cdb/xdb_wallet/*
*/
-- 监听中的示例
[root@lhr2019ocpasm /]# lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 30-JUN-2020 12:36:18
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=lhr2019ocpasm)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 30-JUN-2020 10:54:35
Uptime 0 days 1 hr. 41 min. 42 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/lhr2019ocpasm/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lhr2019ocpasm)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=lhr2019ocpasm)(PORT=5501))(Security=(my_wallet_directory=/u01/app/oracle/product/19.3.0/dbhome_1/admin/lhr19sdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=lhr2019ocpasm)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/19.3.0/dbhome_1/admin/lhr19cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "+ASM_FRA" has 1 instance(s).
Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "86b637b62fdf7a65e053f706e80a27ca" has 1 instance(s).
Instance "lhr19cdb", status READY, has 1 handler(s) for this service...
Service "lhr19cdb" has 1 instance(s).
Instance "lhr19cdb", status READY, has 1 handler(s) for this service...
Service "lhr19cdbXDB" has 1 instance(s).
Instance "lhr19cdb", status READY, has 1 handler(s) for this service...
Service "lhr19sdb" has 1 instance(s).
Instance "lhr19sdb", status READY, has 1 handler(s) for this service...
Service "lhrsdbXDB" has 1 instance(s).
Instance "lhr19sdb", status READY, has 1 handler(s) for this service...
The command completed successfully
EM访问地址:https://192.168.1.35:5500/em/
笔记本登录数据库:
Microsoft Windows [版本 10.0.17134.765]
(c) 2018 Microsoft Corporation。保留所有权利。
C:\Users\lhrxxt>sqlplus sys/lhr@192.168.1.35:1521/lhr19cdb as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 30 14:25:05 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SYS@192.168.1.35:1521/lhr19cdb> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
SYS@192.168.1.35:1521/lhr19cdb> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
C:\Users\lhrxxt>sqlplus sys/lhr@192.168.1.35:1521/lhr19sdb as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue Jun 30 14:25:13 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
SYS@192.168.1.35:1521/lhr19sdb> show pdbs
SYS@192.168.1.35:1521/lhr19sdb>
具体使用方法可以参考:【DB宝4】只需2步即可拥有Oracle19c的ASM+DB环境
--上传到Docker Hub
docker container stop lhr2019ocpasm
docker commit lhr2019ocpasm lhrbest/oracle19casm_lhr:1.0
docker login
docker push lhrbest/oracle19casm_lhr:1.0
-- 从docker hub下载
docker pull lhrbest/oracle19casm_lhr:1.0
docker run -itd -h lhr2019ocpasm --name oracle19casmlhr -p 222:22 -p 1521:1521 -p 5500:5500 -p 5501:5501 --privileged=true lhrbest/oracle19casm_lhr:1.0 /usr/sbin/init
docker exec -it oracle19casmlhr bash
-- 执行其他数据库操作
这里有几个注意事项非常重要:
-- ① 使用二进制包的方式安装Oracle 19c企业版的ASM和db,包括一个CDB,名称为lhr19cdb,一个非cdb,名称为lhr19sdb,所有密码均为lhr
-- ② ASM磁盘脚本:/etc/initASMDISK.sh,请确保脚本/etc/initASMDISK.sh中的内容都可以正常执行
-- ③ 若oracleasmlib初始化错误,则需要在安装Docker的主机上也配置oracleasmlib并初始化正常。
yum install -y kmod-oracleasm
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm
wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm
rpm -ivh *.rpm
systemctl enable oracleasm.service
oracleasm init
oracleasm status
-- 返回yes
[root@docker36 ~]# oracleasm init
[root@docker36 ~]# oracleasm status
Checking if ASM is loaded: yes
Checking if /dev/oracleasm is mounted: yes
若Docker Hub上传和下载慢,则也可以使用阿里云:
-- 上传到阿里云
--https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
docker login --username=lhrbest@qq.com registry.cn-hangzhou.aliyuncs.com
docker tag 1a46885aa4e7 registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle19casm_lhr:1.0
docker push registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle19casm_lhr:1.0
-- 从阿里云下载
docker pull registry.cn-hangzhou.aliyuncs.com/lhrbest/oracle19casm_lhr:1.0
docker run -itd -h lhr2019ocpasm --name oracle19casmlhr -p 222:22 -p 1521:1521 -p 5500:5500 -p 5501:5501 --privileged=true lhrbest/oracle19casm_lhr:1.0 /usr/sbin/init
本文结束。