• 银河麒麟v10 服务器 和统信20 1050e 服务器 安装oracle 19c实战(适配成功)


    一、资源:

    1、操作系统(二选一,我在适配时,两个环境都测试了)x86_64架构

            银河麒麟服务器版操作系统: Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso  自己下载吧银河麒麟v10下载(服务器版 桌面版) - 2021-09-24更新 - 掘金 (juejin.cn)

            统信服务器版操作系统:uniontechos-server-20-1050e-amd64.iso   下载路径 统信UOS生态社区 - 打造操作系统创新生态

    2、oracle数据库oracle 19c :

    LINUX.X64_193000_db_home.zip 

    下载的地址 https://www.oracle.com/technetwork/database/enterprise-edition/downloads/oracle19c-linux-5462157.html"

     (unzip 不要加任何参数,且在服务器上进行解压,因为里面有对应的软连接)

    3、其他rpm包(镜像源中没有的)

            compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    4、so文件

    libpthread_nonshared.a  下载地址https://download.csdn.net/download/yy4545/85916420icon-default.png?t=M5H6https://download.csdn.net/download/yy4545/85916420

    要放到/usr/lib64/目录下,不然执行安装oracle时会报错:makefile /u01/app/oracle/19.0.0/dbhome_1/rdbms/lib/ins_rdbms.mk

    /usr/bin/ld: 找不到 -lclntshcore

    二、安装:

    总体要做的内容

    • 1、主机文件配置
    • 2、系统参数配置
    • 3、依赖的包安装
    • 4、创建用户、组及目录、设置oracle 密码、配置环境变量(参数)
    • 5、解压安装包、安装oracle、创建数据库
    • 6、设置开机启动
    • 7、19c常用命令
    • 8、打补丁包(可选)

    1、主机文件配置:

    /etc/hosts 中添加 :ip地址  主机名   主机名

    另外把ipv6的那一行给注释掉

    hostname -I 是列出所有ip(除了127.0.0.1) 如果你有多个ip,请在下面的命令执行后,重新修改/etc/hosts 只保留一个ip。
    1. cat >> /etc/hosts <<EOF
    2. ###START-ORACL19C###
    3. `hostname -I` `hostname` `hostname`
    4. ###END-ORACL19C###
    5. EOF

    如下图:

     2、系统参数配置

    加入系统参数/etc/sysctl.conf

    1. cat >> /etc/sysctl.conf <<EOF
    2. ###START-ORACL19C###
    3. fs.file-max = 6815744
    4. kernel.sem = 250 32000 100 128
    5. kernel.shmmni = 4096
    6. kernel.shmall = 1073741824
    7. kernel.shmmax = 4398046511104
    8. kernel.panic_on_oops = 1
    9. net.core.rmem_default = 262144
    10. net.core.rmem_max = 4194304
    11. net.core.wmem_default = 262144
    12. net.core.wmem_max = 1048576
    13. net.ipv4.conf.all.rp_filter = 2
    14. net.ipv4.conf.default.rp_filter = 2
    15. fs.aio-max-nr = 1048576
    16. net.ipv4.ip_local_port_range = 9000 65500
    17. ###END-ORACL19C###
    18. EOF
    19. ####然后执行 /sbin/sysctl -p 使配置生效
    20. /sbin/sysctl -p

    添加最大打开文件数等配置

    1. cat >> /etc/security/limits.d/oracle-database-preinstall-19c.conf <<EOF
    2. ###START-ORACL19C###
    3. oracle soft nofile 1024
    4. oracle hard nofile 65536
    5. oracle soft nproc 16384
    6. oracle hard nproc 16384
    7. oracle soft stack 10240
    8. oracle hard stack 32768
    9. oracle hard memlock 134217728
    10. oracle soft memlock 134217728
    11. ###END-ORACL19C###
    12. EOF

    3、依赖的包安装

       先配置repo源

         先把安装使用的iso文件加载到cdrom(光驱)中,然后挂载到本地/mnt下

    1. mount /dev/cdrom /mnt/
    2. #查看挂载情况
    3. df -h

      

    安装依赖的包没有的包可以暂时忽略,使用的是dnf,也可以使用yum来安装,直接把dnf替换为yum即可 

    1. dnf install -y bc \
    2. binutils \
    3. libnsl \
    4. compat-libstdc++-33 \
    5. elfutils-libelf \
    6. elfutils-libelf-devel \
    7. fontconfig-devel \
    8. gcc \
    9. gcc-c++ \
    10. glibc \
    11. glibc-devel \
    12. ksh \
    13. libaio \
    14. libaio-devel \
    15. libXrender \
    16. libXrender-devel \
    17. libX11 \
    18. libXau \
    19. libXi \
    20. libXtst \
    21. libgcc \
    22. librdmacm-devel \
    23. libstdc++ \
    24. libstdc++-devel \
    25. libxcb \
    26. make \
    27. net-tools \
    28. nfs-utils \
    29. python \
    30. python-configshell \
    31. python-rtslib \
    32. python-six \
    33. targetcli \
    34. smartmontools \
    35. sysstat \
    36. unixODBC \
    37. unixODBC-devel

    其中 compat-libstdc++ 需要自己从网上下载,或者去centos7源中找   名字为compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    1. ##"单独复制安装包compat-libstdc++-33-3.2.3-72 服务器上,并执行下面命令开始安装"
    2. dnf install -y ./compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm

    4、创建用户、组及目录、设置oracle 密码、配置环境变量(参数)

    1. ##### "创建新组和用户。"
    2. groupadd -g 54321 oinstall
    3. groupadd -g 54322 dba
    4. groupadd -g 54323 oper
    5. ###下面按需进行去掉注释,我安装时没有使用
    6. #groupadd -g 54324 backupdba
    7. #groupadd -g 54325 dgdba
    8. #groupadd -g 54326 kmdba
    9. #groupadd -g 54327 asmdba
    10. #groupadd -g 54328 asmoper
    11. #groupadd -g 54329 asmadmin
    12. #groupadd -g 54330 racdba
    13. ### 设置组
    14. useradd -u 54321 -g oinstall -G dba,oper oracle
    15. ##此步可以不做,
    16. echo "设置oracle用户的密码为1qaz!QAZ ,由于密码有大小写和最少8个字符限制,所以设置的比较复杂"
    17. echo "1qaz!QAZ" |passwd --stdin oracle
    18. ### 创建安装目录
    19. mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
    20. mkdir -p /data/oradata ### 数据的存储目录,最好使用单独挂载的磁盘,为了测试无所谓
    21. chown -R oracle:oinstall /u01 /data
    22. chmod -R 775 /u01 /data

    配置oracle的环境变量

    1. echo "创建脚本目录/home/oracle/scripts"
    2. mkdir -p /home/oracle/scripts
    3. echo "创建脚本“setEnv.sh”文件,包含环境变量等"
    4. cat > /home/oracle/scripts/setEnv.sh <<EOF
    5. # Oracle Settings
    6. export TMP=/tmp
    7. export TMPDIR=$TMP
    8. export ORACLE_HOSTNAME=`hostname`
    9. export ORACLE_UNQNAME=oraclcdb
    10. export ORACLE_BASE=/u01/app/oracle
    11. export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
    12. export ORA_INVENTORY=/u01/app/oraInventory
    13. export ORACLE_SID=oraclcdb
    14. export PDB_NAME=pdb1
    15. export DATA_DIR=/data/oradata
    16. export PATH=/usr/sbin:/usr/local/bin:$PATH
    17. export PATH=$ORACLE_HOME/bin:\$PATH
    18. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    19. export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    20. EOF
    21. echo "在“/home/oracle/.bash_profile”文件末尾添加对“setEnv.sh”文件的引用。执行下面命令"
    22. echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile

    创建启停脚本

    1. echo "创建“start_all.sh”和“stop_all.sh”脚本用来启动/关闭服务。确保所有权和权限正确无误。
    2. 安装完成后,您把“/etc/oratab”中每个实例的重新启动标志设置为“Y”,后就可以使用该脚本了"
    3. cat > /home/oracle/scripts/start_all.sh <<EOF
    4. #!/bin/bash
    5. . /home/oracle/scripts/setEnv.sh
    6. export ORAENV_ASK=NO
    7. . oraenv
    8. export ORAENV_ASK=YES
    9. dbstart \$ORACLE_HOME
    10. EOF
    11. cat > /home/oracle/scripts/stop_all.sh <<EOF
    12. #!/bin/bash
    13. . /home/oracle/scripts/setEnv.sh
    14. export ORAENV_ASK=NO
    15. . oraenv
    16. export ORAENV_ASK=YES
    17. dbshut \$ORACLE_HOME
    18. EOF
    19. chown -R oracle:oinstall /home/oracle/scripts
    20. chmod u+x /home/oracle/scripts/*.sh

    把依赖的so文件复制到/usr/lib64/目录下

    cp  /你的存放位置/libpthread_nonshared.a  /usr/lib64/libpthread_nonshared.a

    5、解压安装包、安装oracle、创建数据库

    解压时一定要用unzip,不要使用任何参数,且在服务器上进行解压,因为里面有对应的软连接;如果加了参数有概率导致lib下的.so不,导致安装异常

    1. #root用户下
    2. chown -R oracle:oinstall LINUX.X64_193000_db_home.zip
    3. #并把文件cp到ORACLE_HOME下,我设置的oracle_home路径为:/u01/app/oracle/product/19.0.0/dbhome_1
    4. cp LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.0.0/dbhome_1
    5. #切换到oracle用户下
    6. su - oracle
    7. cd $ORACLE_HOME
    8. #开始解压,一定不要加参数,静等解压完毕
    9. unzip LINUX.X64_193000_db_home.zip

    上面完成后开始执行静默安装oracle 19c (oracle用户下操作)

    1. su - oracle #切换到oracle用户下
    2. cd $ORACLE_HOME
    3. # Fake Oracle Linux 7. 欺骗oracle 让他认为此为Oracle linux 否则会报错,因为oracle是基于#redhat的linux适配的
    4. export CV_ASSUME_DISTID=OEL7.6
    5. ./runInstaller -ignorePrereq -waitforcompletion -silent \
    6. -responseFile ${ORACLE_HOME}/install/response/db_install.rsp \
    7. oracle.install.option=INSTALL_DB_SWONLY \
    8. ORACLE_HOSTNAME=${ORACLE_HOSTNAME} \
    9. UNIX_GROUP_NAME=oinstall \
    10. INVENTORY_LOCATION=${ORA_INVENTORY} \
    11. SELECTED_LANGUAGES=en,zh_CN \
    12. ORACLE_HOME=${ORACLE_HOME} \
    13. ORACLE_BASE=${ORACLE_BASE} \
    14. oracle.install.db.InstallEdition=EE \
    15. oracle.install.db.OSDBA_GROUP=dba \
    16. oracle.install.db.OSBACKUPDBA_GROUP=dba \
    17. oracle.install.db.OSDGDBA_GROUP=dba \
    18. oracle.install.db.OSKMDBA_GROUP=dba \
    19. oracle.install.db.OSRACDBA_GROUP=dba \
    20. oracle.install.db.config.starterdb.characterSet=AL32UTF8 \
    21. SECURITY_UPDATES_VIA_MYORACLESUPPORT=false \
    22. DECLINE_SECURITY_UPDATES=true
    23. echo "等待最后两个root用户执行的脚本"
    24. ### 如果前面按照步骤操作的情况下,是比较顺利的。
    25. ### 有异常了也不用怕,看报错信息,慢慢排错就行。

    创建数据库(oracle用户下操作)

    1. su - oracle
    2. cd $ORACLE_HOME
    3. #启动监听
    4. lsnrctl start
    5. echo "静默模式创建数据库"
    6. dbca -silent -createDatabase \
    7. -templateName General_Purpose.dbc \
    8. -gdbname ${ORACLE_SID} -sid ${ORACLE_SID} -responseFile NO_VALUE \
    9. -characterSet AL32UTF8 \
    10. -sysPassword SysPassword1 \
    11. -systemPassword SysPassword1 \
    12. -createAsContainerDatabase true \
    13. -numberOfPDBs 1 \
    14. -pdbName ${PDB_NAME} \
    15. -pdbAdminPassword PdbPassword1 \
    16. -databaseType MULTIPURPOSE \
    17. -memoryMgmtType auto_sga \
    18. -totalMemory 2000 \
    19. -storageType FS \
    20. -datafileDestination "${DATA_DIR}" \
    21. -redoLogFileSize 50 \
    22. -emConfiguration NONE \
    23. -ignorePreReqs

       -characterSet AL32UTF8    数据库编码可以根据自己需要进行修改

    静待数据库安装完毕。。。。。

    6、设置开机启动

    1. sed -i 's,'${ORACLE_SID}':.*$,'${ORACLE_SID}':'${ORACLE_HOME}':Y,g' /etc/oratab
    2. cat << EOF >> /etc/rc.d/rc.local
    3. su oracle -lc "/home/oracle/scripts/start_all.sh"
    4. su oracle -lc "lsnrctl start"
    5. EOF
    6. #为开机启动文件赋权
    7. chmod +x /etc/rc.d/rc.local
    8. # pdb不会开机自启,所以要设置pdb开机启动
    9. su oracle -lc "sqlplus / as sysdba" << EOF
    10. alter system set db_create_file_dest='\${DATA_DIR}';
    11. alter pluggable database \${PDB_NAME} save state;
    12. exit;
    13. EOF

    7、19c常用命令

    1. show con_name;
    2. #查看已有pdb
    3. show pdbs
    4. #查看已有pdb的datafile文件
    5. select name from v$datafile;
    6. #查看已有pdb的tempfile文件
    7. select name from v$tempfile;
    8. #查看DB_CREATE_FILE_DEST缺省路径
    9. show parameter DB_CREATE_FILE_DEST;
    10. select name,open_mode from v$pdbs;
    11. alter session set container=ORCLPDB1;

    8、打补丁包(可选)

            没有对应的补丁包,所以此步略过。。

    三、总结

            由于是国产的操作系统(实际跟centos是有渊源的(不是很肯定,支持国产)。麒麟是基于openeular,openeular是基于centos的; 统信是基于阿里openanolis,有双核心{一个是阿里自己开发的,一个是基于centos8的};),没有可以参照的,而且大部分包有修改。比较折腾,耗时将近一周;总算搞定了,在此记录,烦请请记得给关注点赞。

          最重要的是一个包:compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm,一个so文件,zip包的解压(unzip 不要加任何参数,且在服务器上进行解压,因为里面有对应的软连接)

  • 相关阅读:
    C++ 17 一些好用的特性
    CobaltStrike VNC 错误 使用VNC报错 Disconnected from server
    软件测试面试题及答案解析,2022最强版
    Dubbo3.0系列(6)- Dubbo3.0支持的RPC协议
    驱动day8
    四、鼎捷T100月加权平均成本计算前置作业
    shiro的过滤器和权限控制
    引入依赖时,右键能点击进入,运行时报错
    10.图像高斯滤波的原理与FPGA实现思路
    Java异步注解@Async详解
  • 原文地址:https://blog.csdn.net/yy4545/article/details/125625765