银河麒麟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/85916420https://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。
cat >> /etc/hosts <<EOF
###START-ORACL19C###
`hostname -I` `hostname` `hostname`
###END-ORACL19C###
EOF

如下图:

 2、系统参数配置

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

cat >> /etc/sysctl.conf <<EOF
###START-ORACL19C###
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
###END-ORACL19C###
EOF

####然后执行 /sbin/sysctl -p 使配置生效
/sbin/sysctl -p 

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

cat >> /etc/security/limits.d/oracle-database-preinstall-19c.conf <<EOF
###START-ORACL19C###
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
###END-ORACL19C###
EOF

3、依赖的包安装

   先配置repo源

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

mount  /dev/cdrom   /mnt/

#查看挂载情况
df  -h  

  

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

dnf install -y bc \
 binutils \
 libnsl \
 compat-libstdc++-33 \
 elfutils-libelf \
 elfutils-libelf-devel \
 fontconfig-devel \
 gcc \
 gcc-c++ \
 glibc \
 glibc-devel \
 ksh \
 libaio \
 libaio-devel \
 libXrender \
 libXrender-devel \
 libX11 \
 libXau \
 libXi \
 libXtst \
 libgcc \
 librdmacm-devel \
 libstdc++ \
 libstdc++-devel \
 libxcb \
 make \
 net-tools  \
 nfs-utils  \
 python  \
 python-configshell  \
 python-rtslib  \
 python-six  \
 targetcli  \
 smartmontools \
 sysstat \
 unixODBC \
 unixODBC-devel

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

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

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

##### "创建新组和用户。"
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,oper oracle


##此步可以不做,
echo "设置oracle用户的密码为1qaz!QAZ  ,由于密码有大小写和最少8个字符限制,所以设置的比较复杂"
echo "1qaz!QAZ" |passwd --stdin oracle

### 创建安装目录
mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
mkdir -p /data/oradata    ### 数据的存储目录,最好使用单独挂载的磁盘,为了测试无所谓
chown -R oracle:oinstall /u01 /data
chmod -R 775 /u01 /data

配置oracle的环境变量

echo "创建脚本目录/home/oracle/scripts"
mkdir -p /home/oracle/scripts 
echo "创建脚本“setEnv.sh”文件,包含环境变量等"。
cat > /home/oracle/scripts/setEnv.sh <<EOF
# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=`hostname`
export ORACLE_UNQNAME=oraclcdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=oraclcdb
export PDB_NAME=pdb1
export DATA_DIR=/data/oradata

export PATH=/usr/sbin:/usr/local/bin:$PATH
export PATH=$ORACLE_HOME/bin:\$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

echo "在“/home/oracle/.bash_profile”文件末尾添加对“setEnv.sh”文件的引用。执行下面命令"
echo ". /home/oracle/scripts/setEnv.sh" >> /home/oracle/.bash_profile

创建启停脚本

echo "创建“start_all.sh”和“stop_all.sh”脚本用来启动/关闭服务。确保所有权和权限正确无误。
安装完成后,您把“/etc/oratab”中每个实例的重新启动标志设置为“Y”,后就可以使用该脚本了"
cat > /home/oracle/scripts/start_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbstart \$ORACLE_HOME
EOF


cat > /home/oracle/scripts/stop_all.sh <<EOF
#!/bin/bash
. /home/oracle/scripts/setEnv.sh

export ORAENV_ASK=NO
. oraenv
export ORAENV_ASK=YES

dbshut \$ORACLE_HOME
EOF

chown -R oracle:oinstall /home/oracle/scripts
chmod u+x /home/oracle/scripts/*.sh

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

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

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

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

#root用户下
chown -R oracle:oinstall LINUX.X64_193000_db_home.zip

#并把文件cp到ORACLE_HOME下,我设置的oracle_home路径为:/u01/app/oracle/product/19.0.0/dbhome_1
cp LINUX.X64_193000_db_home.zip /u01/app/oracle/product/19.0.0/dbhome_1

#切换到oracle用户下
su - oracle
cd $ORACLE_HOME
#开始解压,一定不要加参数,静等解压完毕
unzip  LINUX.X64_193000_db_home.zip

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

su - oracle     #切换到oracle用户下
cd $ORACLE_HOME

 

# Fake Oracle Linux 7. 欺骗oracle 让他认为此为Oracle linux 否则会报错,因为oracle是基于#redhat的linux适配的

export CV_ASSUME_DISTID=OEL7.6

./runInstaller -ignorePrereq -waitforcompletion -silent                        \
    -responseFile ${ORACLE_HOME}/install/response/db_install.rsp               \
    oracle.install.option=INSTALL_DB_SWONLY                                    \
    ORACLE_HOSTNAME=${ORACLE_HOSTNAME}                                         \
    UNIX_GROUP_NAME=oinstall                                                   \
    INVENTORY_LOCATION=${ORA_INVENTORY}                                        \
    SELECTED_LANGUAGES=en,zh_CN                                                \
    ORACLE_HOME=${ORACLE_HOME}                                                 \
    ORACLE_BASE=${ORACLE_BASE}                                                 \
    oracle.install.db.InstallEdition=EE                                        \
    oracle.install.db.OSDBA_GROUP=dba                                          \
    oracle.install.db.OSBACKUPDBA_GROUP=dba                                    \
    oracle.install.db.OSDGDBA_GROUP=dba                                        \
    oracle.install.db.OSKMDBA_GROUP=dba                                        \
    oracle.install.db.OSRACDBA_GROUP=dba                                       \
    oracle.install.db.config.starterdb.characterSet=AL32UTF8                   \
    SECURITY_UPDATES_VIA_MYORACLESUPPORT=false                                 \
    DECLINE_SECURITY_UPDATES=true


echo "等待最后两个root用户执行的脚本"
###  如果前面按照步骤操作的情况下,是比较顺利的。
### 有异常了也不用怕,看报错信息,慢慢排错就行。

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

su - oracle
cd $ORACLE_HOME

#启动监听
lsnrctl start


echo "静默模式创建数据库"
dbca -silent -createDatabase                                                   \
     -templateName General_Purpose.dbc                                         \
     -gdbname ${ORACLE_SID} -sid  ${ORACLE_SID} -responseFile NO_VALUE         \
     -characterSet AL32UTF8                                                    \
     -sysPassword SysPassword1                                                 \
     -systemPassword SysPassword1                                              \
     -createAsContainerDatabase true                                           \
     -numberOfPDBs 1                                                           \
     -pdbName ${PDB_NAME}                                                      \
     -pdbAdminPassword PdbPassword1                                            \
     -databaseType MULTIPURPOSE                                                \
     -memoryMgmtType auto_sga                                                  \
     -totalMemory 2000                                                         \
     -storageType FS                                                           \
     -datafileDestination "${DATA_DIR}"                                        \
     -redoLogFileSize 50                                                       \
     -emConfiguration NONE                                                     \
     -ignorePreReqs

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

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

6、设置开机启动

sed -i 's,'${ORACLE_SID}':.*$,'${ORACLE_SID}':'${ORACLE_HOME}':Y,g' /etc/oratab

cat << EOF >>  /etc/rc.d/rc.local
su oracle -lc "/home/oracle/scripts/start_all.sh"
su oracle -lc "lsnrctl start"
EOF

#为开机启动文件赋权
 chmod +x  /etc/rc.d/rc.local

# pdb不会开机自启,所以要设置pdb开机启动
su oracle -lc "sqlplus / as sysdba" << EOF
alter system set db_create_file_dest='\${DATA_DIR}';
alter pluggable database \${PDB_NAME} save state;
exit;
EOF

7、19c常用命令

show con_name;

#查看已有pdb
show pdbs
#查看已有pdb的datafile文件
select name from v$datafile;
#查看已有pdb的tempfile文件
select name from v$tempfile;
 
#查看DB_CREATE_FILE_DEST缺省路径
show parameter DB_CREATE_FILE_DEST;

select name,open_mode from v$pdbs;
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 不要加任何参数,且在服务器上进行解压,因为里面有对应的软连接)

猜你喜欢

转载自blog.csdn.net/yy4545/article/details/125625765
今日推荐