【DB宝7】Oracle 19c asm+db的安装配置
[toc]
一、安装Docker软件
CentOS 7安装Docker: https://docs.docker.com/engine/install/centos/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | --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 |
二、创建CentOS7.6的容器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | --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 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 |
三、操作系统配置部分
3.1、关闭防火墙(Docker中一般不需要)
1 2 3 4 5 6 7 | --关闭防火墙: systemctl disable firewalld systemctl stop firewalld systemctl stop firewalld.service systemctl disable firewalld.service --验证: systemctl list-unit-files | grep fire |
3.2、禁用selinux(Docker中一般不需要)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | --临时关闭(不用重启机器): 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 |
3.3、添加组和用户
3.3.1、添加oracle和grid用户
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | --创建组 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 |
3.3.2、创建安装目录
1 2 3 4 5 6 7 8 9 10 11 12 | # 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 |
3.3.3、配置grid和oracle用户的环境变量文件
修改grid、oracle用户的.bash_profile文件,直接使用root用户执行。
1、配置oracle用户的环境变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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提示符:
1 2 3 4 5 6 | 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用户的环境变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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提示符:
1 2 3 4 5 6 | cat >>/u01/app/19.3.0/grid/sqlplus/admin/glogin.sql << "EOF" set linesize 9999 pagesize 9999 set sqlprompt "_USER'@'_CONNECT_IDENTIFIER> " EOF |
3.3.4、配置root用户的环境变量
分别修改/etc/profile和/root/.bashrc文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #修改/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 |
3.4、安装依赖包
检查缺失的依赖包:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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安装缺失的依赖包:
1 2 3 4 5 6 7 | yum install -y elfutils-libelf-devel* yum install -y compat-libstdc++* yum install -y libaio-devel* yum install -y ksh* # 最后重新检查,确保所有的包已安装。需要注意的是,有的时候由于版本的问题导致检查有问题,所以需要用rpm -qa | grep libstdc 来分别对每个包检查。 |
3.5、配置内核参数
3.5.1、修改/etc/sysctl.conf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 |
3.5.2、修改/etc/security/limits.conf文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 修改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 |
3.5.3、修改/etc/pam.d/login文件
1 | echo "session required pam_limits.so" >> /etc/pam.d/login |
3.6、配置/dev/shm大小
如果不配置的话会报错:ORA-00845: MEMORY_TARGET not supported on this system,这个错误简单来说就是 MEMORY_MAX_TARGET 的设置不能超过 /dev/shm 的大小。
由于docker容器中没有/etc/fstab文件,所以我们只能每次重启容器后都修改一下/dev/shm大小。
1 2 3 4 5 6 7 8 9 10 | 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 ... ... |
已测试,若容器重启,oracleasm init还是初始化失败,可以在宿主机安装ASM包,容器就可以oracleasm init初始化成功。
步骤清晰,内容翔实,感谢麦老师分享。