oracle 11g r2 一键配置脚本
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:#!/bin/bashSYSCTL="/etc/sysc
千家信息网最后更新 2025年02月01日oracle 11g r2 一键配置脚本
最近工作需要安装oracle 11g R2在阿里云ECS上,因此编写了一个脚本来完成图形化安装界面之前的准备工作,这样节省时间,shell如下:
#!/bin/bashSYSCTL="/etc/sysctl.conf"LIMITS="/etc/security/limits.conf"PAM="/etc/pam.d/login"PROFILE="/etc/profile"BASH_PROFILE="/home/oracle/.bash_profile"oracle_passwd='oracle'SID=orcllang="AMERICAN_AMERICA.AL32UTF8"#ora_install_dir=/u01#ora_database_dir=/u02ORACLE_BASE=$ora_install_dir/app/oracleORACLE_HOME=$ORACLE_BASE/product/11.2.0/db#初始化检查,OS版本、内存、磁盘情况check_init(){ OS=`cat /etc/redhat-release` MEM=`free -m |grep 'Mem' | awk '{print $2}'` CPUS=`grep -i "processor" /proc/cpuinfo | wc -l` echo "系统版本:$OS" echo "内存:${MEM}M" echo "CPU核数:$CPUS"}#检查swap空间是否分配check_swap(){mem=`free -g |grep 'Mem' | awk '{print $2}'`mem_temp=$(($mem%2))swap_all=`free -m |grep 'Swap' |awk '{print $2}'`if [ $mem_temp == 1 ];then mem=$(($mem+1)) swap=$(($mem/2)) echo -e "\n\e[1;32m 系统内存为 ${mem}GB \e[0m"fiswap_check="`grep -i 'swaptotal' /proc/meminfo |awk '{print $2}'`"if [[ $swap_check = "0" ]];then read -p " swap分区没有设置,请进行设置,输入[y] or [n]:" temp if [ $temp == "y" ];then COUNT=$(($swap * 1024)) echo -e "\n\e[1;31m 开始设置swap分区,/mnt/swap=${swap}GB \e[0m" dd if=/dev/zero of=/mnt/swap bs=1M count=${COUNT} mkswap /mnt/swap swapon /mnt/swap echo "/mnt/swap swap swap defaults 0 0" >> /etc/fstab else echo "请检查或手工设置swap分区后运行该脚本!" exit 1 fielse echo -e "\n\e[1;31m系统内存为${mem}GB 当前swap分区已经配置,大小为${swap_all}MB \e[0m"fi}#检查是否root用户执行脚本isroot(){ if [ $USER != "root" ];then echo -e "\n\e[1;31m The user must be root,and you user is $USER,please su to root.\e[0m" exit 4 fi}#创建oracle用户oracle_useradd(){ if [[ `grep "oracle" /etc/passwd` != "" ]];then echo -e "\e[1;31m User oracle exits, delete and create oracle! \e[0m" && sleep 2 userdel -rf oracle fi if [[ `grep "oinstall" /etc/group` = "" ]];then groupadd oinstall fi if [[ `grep "dba" /etc/group` = "" ]];then groupadd dba fi useradd oracle -g oinstall -G dba && echo $oracle_passwd |passwd oracle --stdin if [ $? -eq 0 ];then echo -e "\n\e[1;32m oracle's password update successfully ---OK! \e[0m" else echo -e "\n\e[1;31m oracle's password set failed. ---NO! \e[0m" fi}#创建oracle使用的目录oracle_dirs(){ read -p "please input oracle install dirname,default /u01": ora_install_dir read -p "please input oracle database dirname,default /u02": ora_database_dir mkdir -p $ora_install_dir/app/oracle/{oraInventory,product/11.2.0/db} mkdir -p "$ora_database_dir/oradata/oradb" chown -R oracle:oinstall $ora_install_dir chown -R oracle.oinstall $ora_database_dir chmod -R 755 $ora_install_dir $ora_database_dir if [ $? == 0 ];then echo "$ora_install_dir create sucessfully!" echo "$ora_database_dir create sucessfully!" else echo "$ora_install_dir or $ora_database_dir create Failed,please check!" exit 2 fi}#配置profile文件oracle_profile(){if [ -f "/etc/profile.bak" ];then rm -rf /etc/profile >/dev/null cp /etc/profile.bak /etc/profile cat << EOF >>$PROFILEif [ $USER = "oracle" ];then if [ $SHELL = "/bin/ksh" ];then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifiEOFelse cp /etc/profile /etc/profile.bak cat << EOF >>$PROFILEif [ $USER = "oracle" ];then if [ $SHELL = "/bin/ksh" ];then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fifiEOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $PROFILE update successfully... OK! \e[0m" fi}#配置.bash_profile()oracle_bash(){if [ -f "/home/oracle/.bash_profile.bak" ];thenrm -rf $BASH_PROFILE>/dev/nullcp /home/oracle/.bash_profile.bak $BASH_PROFILE cat <> $BASH_PROFILEexport ORACLE_BASE=$ORACLE_BASEexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbexport ORACLE_SID=$SIDexport ORACLE_TERM=xtermexport ORACLE_OWNER=oracleexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport PATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.umask 022export NLS_LANG=$langEOFelsecp $BASH_PROFILE /home/oracle/.bash_profile.bakcat < > $BASH_PROFILEexport ORACLE_BASE=$ORACLE_BASEexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbexport ORACLE_SID=$SIDexport ORACLE_TERM=xtermexport ORACLE_OWNER=oracleexport TNS_ADMIN=$ORACLE_HOME/network/adminexport ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/dataexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/libexport PATH=$PATH:/sbin:/usr/bin:/usr/sbin:$JAVA_HOME/bin:$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin:$ORACLE_HOME/OPatch:.umask 022export NLS_LANG=$langEOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $BASH_PROFILE update successfully...OK! \e[0m" fi}#设置limit资源限制oracle_limit(){if [ -f "/etc/security/limits.conf.bak" ];thenrm -rf $LIMITS>/dev/nullcp /etc/security/limits.conf.bak $LIMITS cat < > $LIMITSoracle soft nproc 8192oracle hard nproc 16384oracle soft nofile 8192oracle hard nofile 65536EOFelsecp $LIMITS /etc/security/limits.conf.bak cat < > $LIMITSoracle soft nproc 8192oracle hard nproc 16384oracle soft nofile 8192oracle hard nofile 65536EOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $LIMITS update sucessfully...OK! \e[0m" fi}#设置内核参数oracle_kernal(){if [ -f /etc/sysctl.conf.bak ];thenrm -rf $SYSCTL>/dev/nullcp /etc/sysctl.conf.bak $SYSCTLsed -i 's/kernel.msgmnb.*/#kernel.msgmnb = 65536/g' $SYSCTLsed -i 's/kernel.msgmax.*/#kernel.msgmax = 65536/g' $SYSCTLsed -i 's/kernel.shmmax.*/#kernel.shmmax = 68719476736/g' $SYSCTLsed -i 's/kernel.shmall.*/#kernel.shmall = 4294967296/g' $SYSCTL cat < > $SYSCTLkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 40960kernel.sem = 250 32000 100 128kernel.msgmni = 4096kernel.msgmax = 65536kernel.msgmnb = 84000fs.file-max = 6815744net.ipv4.ip_local_port_range = 9000 65500fs.file-max = 6815744net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576fs.aio-max-nr = 1048576net.ipv4.tcp_wmem = 262144 262144 262144net.ipv4.tcp_rmem = 4194304 4194304 4194304EOFelsecp $SYSCTL /etc/sysctl.conf.baksed -i 's/kernel.msgmnb.*/#kernel.msgmnb = 65536/g' $SYSCTLsed -i 's/kernel.msgmax.*/#kernel.msgmax = 65536/g' $SYSCTLsed -i 's/kernel.shmmax.*/#kernel.shmmax = 68719476736/g' $SYSCTLsed -i 's/kernel.shmall.*/#kernel.shmall = 4294967296/g' $SYSCTL cat < > $SYSCTLkernel.shmall = 2097152kernel.shmmax = 2147483648kernel.shmmni = 40960kernel.sem = 250 32000 100 128kernel.msgmni = 4096kernel.msgmax = 65536kernel.msgmnb = 84000fs.file-max = 6815744net.ipv4.ip_local_port_range = 9000 65500fs.file-max = 6815744net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048576fs.aio-max-nr = 1048576net.ipv4.tcp_wmem = 262144 262144 262144net.ipv4.tcp_rmem = 4194304 4194304 4194304EOFfi if [ $? -eq 0 ];then echo -e "\n\e[1;32m $SYSCTL update sucessfully...OK! \e[0m" fi}#关闭iptables and selinuxiptables_selinux(){ service iptables stop && chkconfig iptables off setenforce 0 &>/dev/null sed -i '/SELINUX/s/enforcing/disabled/;/SELINUX/s/permissive/disabled/' /etc/selinux/config}#下载oracle安装文件get_oracle(){ wget http://10.139.96.23:8080/p13390677_112040_Linux-x86-64_1of7.zip -P /home/oracle && wget http://10.139.96.23:8080/p13390677_112040_Linux-x86-64_2of7.zip -P /home/oracle}#oracle安装准备主程序main(){ isroot check_init && sleep 1 check_swap && sleep 1 oracle_useradd && sleep 1 oracle_dirs && sleep 1 oracle_profile && sleep 1 oracle_bash && sleep 1 oracle_limit && sleep 1 oracle_kernal && sleep 1 iptables_selinux && sleep 1 get_oracle && sleep 1 if [ $? -eq 0 ] ;then echo -e "\n\e[1;32m oracle初始化配置已经完成,请确保图形化界面正常工作,执行./database安装程序! \e[0m" fi}main
配置
内存
检查
脚本
系统
工作
图形
文件
版本
用户
界面
准备
主程序
内核
参数
大小
情况
手工
时间
核数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全产品营销计划书
日军细菌部队数据库
停车站的数据库sql
网络安全应急预案评估表
托管服务器租用
贝尔实验室 软件开发
基因组功能注释数据库
初创软件开发合伙人好找吗
魔兽世界主宰之剑服务器在哪里
广州彩瞳网络技术
网络安全 私活
嵌入式软件开发试卷
绍兴服务器机柜供应商
软件开发成本和费用怎么界定
四川成都网络安全宣传周
河北党员党性体检软件开发
第三方网络安全等级评测单位
服务器第一天就挂了
互联网金融浅橙科技
免流vpn 服务器
网络技术公司的号码是多少
我的世界服务器对cpu的要求
智能时代网络安全之重
数据库批量删除数据
信息网络安全核心
软件开发设计需求书
数据库与数据安全技术试题
数据库最小的纪录单元是什么
绿色能源服务器
英雄联盟显示一直正在连接服务器