文章目录
- 前言
- 一、Oracle19c数据库安装
- 二、使用步骤
- 1.脚本内容
- 2.执行安装
- 总结
1.Oracle11gR2数据库安装
https://edu.csdn.net/course/detail/27750
2.Oracle 12c 数据库安装
https://edu.csdn.net/course/detail/35882
3.Oracle 19c 数据库一键安装
https://edu.csdn.net/course/detail/39198
4.Oracle 19c RAC For Linux安装部署 (视频讲解)
https://edu.csdn.net/course/detail/35792
5.oracle 19c 数据库基础和日常管理
https://edu.csdn.net/course/detail/36112
6.Oracle 11g DataGuard RAC集群到单节点部署
https://edu.csdn.net/course/detail/35959
7.Oracle数据库 底层原理解析_解析oracle数据库内部实现(视频讲解)
https://edu.csdn.net/course/detail/35647
8.MySQL数据库基础实战教程
https://edu.csdn.net/course/detail/26743
前言
Oracle数据库在Linux系统上安装步骤比较多,为了方便Oracle数据库的安装,编写了以下脚本,简化了Oracle数据库的安装。
一、一键安装Oracle19c数据库
脚本是使用shell编写,使用的时候只要按照实际情况修改脚本前面的变量,然后上传Oracle软件到Linux系统,执行shell脚本即可。
二、使用步骤
1.脚本内容
代码如下(示例):
#!/bin/bash ## 环境准备 ## ## 1.将ISO系统镜像上传到系统 ## 2.将数据库软件上传到系统 if [ ! -d /opt/iso ]; then mkdir /opt/iso #手动执行 fi if [ ! -d /opt/oracle/sw ]; then mkdir -p /opt/oracle/sw #手动执行 fi ## ISO系统镜像存放目录 export MY_DIRECTORY_ISO=/opt/iso #手动执行 export MY_SOFT_ISO=CentOS-7-x86_64-DVD-1810.iso #手动执行 mount -o loop $MY_DIRECTORY_ISO/$MY_SOFT_ISO /mnt >/dev/null 2>&1 #手动执行 echo " " MY_EXEC=`mount | grep iso9660` if [ ! -n "$MY_EXEC" ];then echo "Please Mount A CD ISO Image First" exit else echo "Mount A CD ISO Image Already" fi ##需要设置的参数 #本机服务器IP export MY_SERVER_IP=192.168.1.10 #需要设置 #本机服务器主机名 export MY_HOSTNAME=db01 #需要设置 #ORACLE软件上传根目录 export MY_SOFT_BASE=/opt/oracle #需要设置 #ORACLE软件安装根目录 export MY_DIR=/u01 #需要设置 #ORACLE SID变量 export MY_ORA_SID=orcl #需要设置 #ORACLE SYS密码 export MY_ORA_PASSWD=QAJ2Ceq#xoGEy6Hw #需要设置 #ORACLE软件名 export MY_ORA_SOFT1=LINUX.X64_19.3.0_193000_db_home.zip #需要设置 #ORACLE软件依赖包 export MY_ORA_RPM=compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm #需要设置 ##----数据库软件和脚本存储目录---------- ##ORACLE软件存放的目录 export MY_DIRECTORY_SOFT=$MY_SOFT_BASE/sw ##ORACLE脚本存放的目录 export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE/script ##----Oracle软件安装相关配置------------ ##ORACLE BASE目录 export MY_ORA_BASE=$MY_DIR/app/oracle ##ORACLE HOME目录 export MY_ORA_HOME=$MY_ORA_BASE/product/19.3.0/dbhome_1 ##ORACLE INVENTORY目录 export MY_INVENTORY_LOC=$MY_DIR/app/oraInventory ##数据文件存放目录 export MY_ORA_DATA=$MY_ORA_BASE/oradata ##判断ORACLE软件是否上传 if [ -f $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 ]; then echo "Oracle Software Already Upload" else echo "Please Upload Oracle Software First" exit fi ##----服务器相关配置---------- ##服务器内存大小G单位 export MY_MEMORY_GB=`free -g | grep Mem | awk '{print $2}'` ##根据内存计算内核参数大小 mkdir -p /tmp/confbak/yumbak/ mv /etc/yum.repos.d/* /tmp/confbak/yumbak/ >/dev/null 2>&1 cat >> /etc/yum.repos.d/my.repo <<EOF [Oracle] name=oracle_install baseurl=file:///mnt/ gpgcheck=0 enabled=1 EOF yum -y install bc >/dev/null 2>&1 export MY_SHMMAX=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9" | bc | awk -F "." '{print $1}'` export MY_SHMALL=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9/4096" | bc | awk -F "." '{print $1}'` ##---------------------------------------------------------- mkdir -p /tmp/confbak rm -rf /tmp/confbak/* echo " " echo " " echo -ne "Start Install Oracle..." for (( i = 1; i <= 10; i++ )) do echo -ne ".";sleep 1; done echo " " ## 1.1 设置主机名 hostnamectl set-hostname $MY_HOSTNAME sed -i '/^HOSTNAME=/d' /etc/sysconfig/network echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network echo "1.1 Configure hostname completed." ## 1.2 修改hosts cp /etc/hosts /tmp/confbak/hosts > /etc/hosts cat >> /etc/hosts <<EOF 127.0.0.1 localhost $MY_SERVER_IP $MY_HOSTNAME EOF echo "1.2 Configure Hosts Completed." ## 1.3 配置yum,安装数据库依赖包 yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ elfutils-libelf elfutils-libelf-devel glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make net-tools nfs-utils smartmontools sysstat e2fsprogs e2fsprogs-libs fontconfig-devel expect unzip openssh-clients readline* bc kmod-libs xdpyinfo unzip >/dev/null 2>&1 cd $MY_DIRECTORY_SOFT rpm -ivh $MY_ORA_RPM >/dev/null 2>&1 echo "1.3 Install Rpm Software Completed." ## 1.4 关闭防火墙 systemctl stop firewalld.service >/dev/null 2>&1 systemctl disable firewalld.service >/dev/null 2>&1 systemctl status firewalld.service >/dev/null 2>&1 echo "1.4 Disable Firewalld Service Completed." ## 1.5 关闭SELinux cp /etc/selinux/config /tmp/confbak/config sed -i '/^SELINUX=/d' /etc/selinux/config echo "SELINUX=disabled" >> /etc/selinux/config # cat /etc/selinux/config|grep "SELINUX=disabled" setenforce 0 >/dev/null 2>&1 echo "1.5 Disable SELINUX Completed." ## 1.6 建立用户和组 if id -u oracle >/dev/null 2>&1; then echo "2.3 Oracle User Exists." else groupadd -g 14321 oinstall >/dev/null 2>&1 groupadd -g 14322 dba >/dev/null 2>&1 groupadd -g 14323 oper >/dev/null 2>&1 groupadd -g 14324 backupdba >/dev/null 2>&1 groupadd -g 14325 dgdba >/dev/null 2>&1 groupadd -g 14326 kmdba >/dev/null 2>&1 groupadd -g 14327 racdba >/dev/null 2>&1 useradd -u 1101 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle >/dev/null 2>&1 echo oracle123 | passwd --stdin oracle >/dev/null 2>&1 echo "1.6 User Created Completed." fi ## 1.7 创建相关目录 mkdir -p $MY_ORA_HOME chown -R oracle:oinstall $MY_DIR/app chmod -R 775 $MY_DIR/app echo "1.7 Oracle Directories Created Completed." ## 1.8 修改内核参数 cp /etc/sysctl.conf /tmp/confbak/sysctl.conf cat >> /etc/sysctl.conf <<EOF fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 kernel.shmmax = $MY_SHMMAX kernel.shmall = $MY_SHMALL EOF sysctl -p >/dev/null 2>&1 echo "1.8 Configure Linux Kernal Parameter Completed." ## 1.9 修改文件限制 cp /etc/security/limits.conf /tmp/confbak/limits.conf cat >> /etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 EOF echo "1.9 Configure Linux Resource Limit Completed." ## 1.10 配置系统环境变量 cp /etc/profile /tmp/confbak/profile cat >> /etc/profile <<EOF if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi EOF echo "1.10 Configure Linux Profile Env Completed." ## 1.11 配置NOZEROCONFIG cat >> /etc/sysconfig/network <<EOF NOZEROCONF=yes EOF echo "1.11 Configure Nozeroconfig Completed." ## 1.12 修改oracle用户环境变量 export MY_LD_LIBRARY_PATH=$MY_ORA_HOME/lib export MY_CLASSPATH=$MY_ORA_HOME/JRE su - oracle -c " cat >> /home/oracle/.bash_profile <<EOF ORACLE_SID=$MY_ORA_SID; export ORACLE_SID ORACLE_UNQNAME=$MY_ORA_SID; export ORACLE_UNQNAME ORACLE_BASE=$MY_ORA_BASE; export ORACLE_BASE ORACLE_HOME=$MY_ORA_HOME; export ORACLE_HOME JAVA_HOME=/usr/local/java; export JAVA_HOME ORACLE_PATH=$MY_DIR/app/common/oracle/sql; export ORACLE_PATH ORACLE_TERM=xterm; export ORACLE_TERM TNS_ADMIN=$MY_ORA_HOME/network/admin; export TNS_ADMIN ORA_NLS11=$MY_ORA_HOME/nls/data; export ORA_NLS11 PATH=/usr/sbin:$PATH; export PATH PATH=$MY_ORA_HOME/bin:$MY_DIR/app/common/oracle/bin:$PATH; export PATH #LD_LIBRARY_PATH=$MY_ORA_HOME/lib LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:$MY_ORA_HOME/oracm/lib LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH #CLASSPATH=$MY_ORA_HOME/JRE CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/jlib CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/rdbms/jlib CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/network/jlib export CLASSPATH THREADS_FLAG=native; export THREADS_FLAG export TEMP=/tmp export TMPDIR=/tmp #export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK umask 022 EOF " echo "1.12 Configure Oracle Env Completed." ## 1.13 解压数据库软件 echo "1.13 Start Unzip Oracle Software." cd $MY_DIRECTORY_SOFT rm -rf $MY_DIRECTORY_SOFT/database chown oracle.oinstall $MY_DIRECTORY_SOFT/ -R su - oracle -c "unzip -q $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 -d $MY_ORA_HOME" & while true; do echo -n ".";sleep 2; MY_EXEC=`ps -ef | grep unzip | grep -Evi grep` if [ "$MY_EXEC" = "" ] then break; fi done echo " " echo "1.13 Unzip Oracle Software Completed." ## 2.1 创建数据库软件静默安装文件 mkdir -p $MY_INVENTORY_LOC chown oracle.oinstall $MY_INVENTORY_LOC if [ ! -d "$MY_DIRECTORY_SCRIPT" ]; then mkdir -p $MY_DIRECTORY_SCRIPT fi cd $MY_DIRECTORY_SCRIPT rm -rf db_install.rsp cat >> db_install.rsp <<EOF oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=$MY_INVENTORY_LOC ORACLE_BASE=$MY_ORA_BASE ORACLE_HOME=$MY_ORA_HOME 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 oracle.install.db.rootconfig.executeRootScript=true oracle.install.db.rootconfig.configMethod=ROOT EOF chown oracle.oinstall $MY_DIRECTORY_SCRIPT -R echo "2.1 Create Silent Configure File Completed." ## 2.2 静默安装数据库软件 #cd $MY_DIRECTORY_SOFT/database chown oracle.oinstall $MY_DIRECTORY_SCRIPT/db_install.rsp su - oracle -c "$MY_ORA_HOME/runInstaller -silent -force -noconfig -ignorePrereq -responseFile $MY_DIRECTORY_SCRIPT/db_install.rsp" while true; do echo -n ".";sleep 2; MY_EXEC=`ps -ef | grep java | grep -Evi grep` if [ "$MY_EXEC" = "" ] then break; fi done echo " " if [ $? -eq 0 ]; then sh $MY_INVENTORY_LOC/orainstRoot.sh >/dev/null 2>&1 sh $MY_ORA_HOME/root.sh >/dev/null 2>&1 NOW_DATE=`date +%Y-%m-%d` echo "Check $MY_ORA_HOME/install/root_"$MY_HOSTNAME"_"$NOW_DATE"_xxx.log for the output of root script" echo " " echo "2.2 Install Oracle Software Completed." else echo "2.2 Install Oracle Software Failed." fi ## 2.3 静默配置数据库监听 cd $MY_DIRECTORY_SCRIPT rm -rf netca.rsp cat >> netca.rsp <<EOF [GENERAL] RESPONSEFILE_VERSION="19.3" CREATE_TYPE="CUSTOM" [oracle.net.ca] INSTALLED_COMPONENTS={"server","net8","javavm"} INSTALL_TYPE=""typical"" LISTENER_NUMBER=1 LISTENER_NAMES={"LISTENER"} LISTENER_PROTOCOLS={"TCP;1521"} LISTENER_START=""LISTENER"" NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"} NSN_NUMBER=1 NSN_NAMES={"EXTPROC_CONNECTION_DATA"} NSN_SERVICE={"PLSExtProc"} NSN_PROTOCOLS={"TCP;HOSTNAME;1521"} EOF chown oracle.oinstall $MY_DIRECTORY_SCRIPT/netca.rsp su - oracle -c "$MY_ORA_HOME/bin/netca -silent -responseFile $MY_DIRECTORY_SCRIPT/netca.rsp" >/dev/null 2>&1 echo "2.3 Configure Oracle Listener Completed." ## 2.4 配置静默创建数据库文件 cd $MY_DIRECTORY_SCRIPT rm -rf dbca.rsp cat >> dbca.rsp <<EOF responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0 templateName=General_Purpose.dbc gdbName=$MY_ORA_SID sid=$MY_ORA_SID createAsContainerDatabase=TRUE numberOfPDBs=1 pdbName=pdb01 pdbAdminPassword=$MY_ORA_PASSWD sysPassword=$MY_ORA_PASSWD systemPassword=$MY_ORA_PASSWD datafileDestination=$MY_ORA_BASE/oradata recoveryAreaDestination=$MY_ORA_BASE/fast_recovery_area storageType=FS characterSet=AL32UTF8 nationalCharacterSet=AL16UTF16 sampleSchema=true totalMemory=2048 databaseType=OLTP emConfiguration=NONE EOF echo "2.4 Create Silent Configure File Completed." ## 2.5 静默创建数据库 if [ ! -d "$MY_ORA_BASE/oradata" ]; then mkdir $MY_ORA_BASE/oradata fi if [ ! -d "$MY_ORA_BASE/fast_recovery_area" ]; then mkdir $MY_ORA_BASE/fast_recovery_area fi chown oracle.oinstall $MY_ORA_BASE/oradata chown oracle.oinstall $MY_ORA_BASE/fast_recovery_area chown oracle.oinstall $MY_DIRECTORY_SCRIPT/dbca.rsp su - oracle -c "$MY_ORA_HOME/bin/dbca -silent -createDatabase -responseFile $MY_DIRECTORY_SCRIPT/dbca.rsp" echo "2.5 Create Database Completed."
2.执行安装
代码如下(示例):
将以上内容保存为 oracle19c_install.sh
su - oracle
chmod +x oracle11g_install.sh
执行安装
sh oracle19c_install.sh
总结
以上就是Oracle19c数据库安装的脚本,通过一键安装脚本,可以方便的在Linux系统安装Oracle数据库。
Oracle数据库 底层原理解析 (解析oracle数据库内部实现)
https://edu.csdn.net/course/detail/35647
Oracle 19c RAC For Linux安装部署
https://edu.csdn.net/course/detail/35792