大数跨境
0
0

Linux系统oracle数据库安装脚本化

Linux系统oracle数据库安装脚本化 云容灾备份安全治理
2020-09-29
2
导读:修改与调试终于以跳板机的方式实现LInux系统 oracle数据库安装前各项参数脚本话一键自动配置,包含单向

修改与调试终于以跳板机的方式实现LInux系统 oracle数据库安装前各项参数脚本话一键自动配置,包含单向互信的添加与删除,asm磁盘对的绑定和limits和sysctl.conf,grid和oracle用户等等的添加及配置。

oracle_envset_v1\oracle_install

首先,注意信息readme.txt:

#     "==============请提前配置好以下文件=================="

#+--------------------------------------------------------------------------+

#|   说明:推荐放到放到任一节点/tmp下,输入需要部署oracle的IP                |

#|        地址,按指令操作即可完成配置                                      |

#|      1./grid 和/oracle文件系统                                           |

#|      2.配置config/hosts                                                  |

#|      3.添加需要asm的磁盘config/disk.txt                                  |

#|      4.默认按照512G内存配置的,不满足的话修改oracle_install.sh           |

#|      5.配置完成确认无误后可以上传包进行安装了                            |

#+--------------------------------------------------------------------------+

#EOF

#20200924 V0

#使用方式

#cd /tmp/oracle_install

#chmod +x *

#sh main.exe 根据选项执行即可

#可以先配置root单向互信,环境部署完成后删除互信.否则中间需要多次输入密码

#注意事项 ora_preinstall.sh

#vm.min_free_kbytes=20971520    #给系统保留20G内存,内存条件达不到的话根据实际修改或注释掉,否则会起不来

#未对hosts和12-dm-permissions.rules文件还原,如想还原,可手动还原

#mv  /etc/{hosts.#winston20200923,hosts}

#mv  /etc/udev/rules.d/{12-dm-permissions.rules.#winston20200923,12-dm-permissions.rules}

#另外,本脚本只备份第一次存在的文件,后面修改的不会再备份,如果需要,请手动备份


#!/usr/bin/env bash

sc_dir=`pwd`

config_dir=$sc_dir/config

dm_rules=12-dm-permissions.rules

asm_rule=/etc/udev/rules.d/$dm_rules

#新参数配置的识别号

username=#winston20200923

#加载函数和变量

#. $sc_dir/ora_preinstall.sh

#. $sc_dir/rollback_env.sh

#执行

#if [ `id -u` -ne  0 ];then

#cat <<-EOF

#+--------------------------------------------------------------+

#|                                                              |

#|            current not root,please use root                  |

#|                                                              |

#+--------------------------------------------------------------+

#EOF

#  exit 1

#fi

i=1

#oracle环境配置

remote_set_env(){

while [ $i -le 5 ]

do

#        read -p "Please enter IP & ora_version & oracle_sid & grid_sid[192.168.0.66 db19c pengdb1 +ASM1]: " IP ora_version oracle_sid grid_sid

#if  [ ${#IP} -ne 0 -a ${#ora_version} -ne 0  -a ${#oracle_sid} -ne 0  -a ${#grid_sid} -ne 0 ];then

  unset IP

          echo -en "\e[1;32minput IP: \e[0m"     #n表示不换行

          read  IP

echo "$IP"|  egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' &>/dev/null

if  [ $? -eq 0 ];then

        clear

        printf " infomation:

        ---------------------------

        IP         : $IP

        ---------------------------

        "

else  

       clear

       echo  "不满足条件,Please again input"

       continue

fi

        read -p "Are you sure?[y/n]: " action

        if [ "$action" = "y" ];then

scp  -rpq $config_dir/ora_preinstall.sh  root@$IP:/tmp

        scp  -rpq $config_dir/hosts              root@$IP:/etc

        asm_grid

        scp  -rpq $config_dir/$dm_rules          root@$IP:$asm_rule

ssh   root@$IP   'export TERM=xterm;. .bash_profile;sh /tmp/ora_preinstall.sh'

        break

        else

              break

        fi

        let i++

done

}

locate_set_env(){

while :

do

        read -p "Are you sure?[y/n]: " action

        if [ "$action" = "y" ];then

        cp  -rp $config_dir/hosts   /etc

        asm_grid

        sh $config_dir/ora_preinstall.sh

        sleep 3

        break

        else

           break

       fi

done

}

#操作系统环境还原

rollback_env(){

          while [ $i -le 5 ]

          do

          unset IP

          echo -en "\e[1;32minput IP: \e[0m"     #n表示不换行

          read  IP

echo "$IP"|  egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' &>/dev/null

if  [ $? -eq 0 ];then

                clear

                printf " infomation:

                ---------------------------

                IP         : $IP

                ---------------------------

                "

        else

               clear

               echo  "不满足条件,Please again input"

               break

        fi

                read -p "Are you sure?[y/n]: " action

                if [ "$action" = "y" ];then


                   scp  -rpq $config_dir/rollback_env.sh  root@$IP:/tmp

                   ssh   root@$IP   'export TERM=xterm;. .bash_profile;sh /tmp/rollback_env.sh'

                echo "环境已还原完成!!!"

                echo "

                #+------------ ASM磁盘请使用如下格式清理------------------------+

                #|                     sample                                   |

                #|     dd if=/dev/zero of=/dev/sdb bs=4096 count=10             |

                #+--------------------------------------------------------------+

                "

                   break

                  else

                       break 

        fi 

        let i++

        done

}

#绑定asm相关磁盘

for_disk(){

        >$config_dir/$dm_rules

        for disk in `cat $config_dir/disk.txt`

        do

        echo "ENV{DM_NAME}==\"$disk\", OWNER:=\"grid\", GROUP:=\"asmadmin\", MODE:=\"660\"">>$config_dir/$dm_rules

        done

}

asm_grid(){

     if [ -f $asm_rule ];then

        cp -np  $asm_rule      $asm_rule.$username

        >$asm_rule

        for_disk

     else

        for_disk

     fi

}

#单向互信配置

add_key(){

#判断公钥文件是否存在,不存在就创建,P""密码为空

user=root

if [ ! -f /${user}/.ssh/id_rsa ];then

ssh-keygen -P "" -f ~root/.ssh/id_rsa

fi 

while :

do

unset IP

echo -en "\e[1;32minput IP: \e[0m"     #n表示不换行          

read  IP          

echo "$IP"|  egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' &>/dev/null

 if  [ $? -eq 0 ];then

clear

                printf " infomation:

                ---------------------------

                IP         : $IP

                ---------------------------

                "

else

            echo  "$IP 不满足条件,Please again input"

    sleep 2

            break

fi

                read -p "Are you sure?[y/n]: " action

                if [ "$action" = "y" ];then

       ping -c1 -W2 $IP &>/dev/null

       if [ $? -eq 0 ];then

                                     /usr/bin/ssh-copy-id  $IP 

                                     echo  "单向互信已配置完成"

       else

      echo  "$IP 不通请检查!!!"

      fi      

      sleep 3

                        break

                else 

                      break

                fi

done

}

del_key(){

#判断公钥文件是否存在,不存在就创建,P""密码为空

user=/root

while :

do

        unset IP

        echo -en "\e[1;32minput IP: \e[0m"     #n表示不换行

        read  IP

        echo "$IP"|  egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' &>/dev/null

 if  [ $? -eq 0 ];then

clear

                printf " infomation:

                ---------------------------

                IP         : $IP

                ---------------------------

                "

else

            echo  "$IP 不满足条件,Please again input"

            sleep 2

            break

fi

                read -p "Are you sure?[y/n]: " action

                if [ "$action" = "y" ];then

                               ping -c1 -W2 $IP &>/dev/null

                               if [ $? -eq 0 ];then

                                       ssh $IP  'rm -rf ~root/.ssh/authorized_keys'  

                                       #rm -rf ${user}/.ssh/*    &>/dev/null

                                     echo  "单向互信已删除完成"

                               else

                                      echo  "$IP 不通请检查!!!"

                              fi

                              sleep 3

                        break

                else

                      break

                fi

done

}

trap  ""  HUP INT QUIT TSTP     #捕捉到信号后什么都不做,不退出脚本,除非退出终端

while :

do

#构建显示格式

clear

cat <<-EOF

#     "==============请提前配置好以下文件=================="

#+--------------------------------------------------------------------------+

#|   说明:推荐放到放到任一节点/tmp下,输入需要部署oracle的IP                |

#|        地址,按指令操作即可完成配置                                      |

#|      1./grid 和/oracle文件系统                                           |

#|      2.配置config/hosts                                                  |

#|      3.添加需要asm的磁盘config/disk.txt                                  |

#|      4.默认按照512G内存配置的,不满足的话修改oracle_install.sh           |

#|      5.配置完成确认无误后可以上传包进行安装了                            |

#|      6.更多帮助请看readme.txt                                            |

#+--------------------------------------------------------------------------+

#EOF

+----------------------------------+ 

|        选择需要操作项            |    

|      1.oracle(远程)安装环境配置  |

|      2.oracle(本地)安装环境配置  |

|      3.系统环境还原              |

|      4.单向互信建立              |

|      5.单向互信删除              |

|      6.退出                      |

+----------------------------------+

EOF

#打印绿颜色的字体        

        echo -en "\e[1;32minput number: \e[0m"     #n表示不换行

        read  num

        case "$num"  in

        1)

                 remote_set_env

                 sleep 3

                  ;;

        2)

                 locate_set_env 

                 sleep 3

                  ;;

        3)

                 rollback_env

                 sleep 3

                  ;;

        4)      

add_key

  ;;

        5)        

del_key

  ;;

        6)       exit

                  ;;

        "")

                  ;;          #其它输入无操作

        *)         echo "error"

        esac

done

结束语:

有一种活力叫互联网;

有一种奋斗叫996;

有一种永远不需要睡觉的孪生工作,叫做码代码和码字。

【声明】内容源于网络
0
0
云容灾备份安全治理
分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
内容 2171
粉丝 0
云容灾备份安全治理 分享云灾备规划、实施、运营、备份与恢复、数据安全、数据治理;窥视国内外备份软件与监控软件知识前沿水平线; 越努力,越幸运!
总阅读3.8k
粉丝0
内容2.2k