当前位置: 首页 > news >正文

银河麒麟V10一键安装Oracle 11g脚本分享

在这里插入图片描述

[root@oracleServer install_oracle11g]#cat 1.sh
#!/bin/bash# 定义日志文件(统一到/tmp目录)
LOG_FILE="/tmp/oracle_install.log"# 修复日志文件权限(允许oracle用户写入)
if [ -f "$LOG_FILE" ]; thenchmod 666 "$LOG_FILE"  # 所有用户可读写
elsetouch "$LOG_FILE"chmod 666 "$LOG_FILE"
fi
> $LOG_FILE  # 清空日志文件# 终端输出函数
red_echo ()      { echo -e "\033[031;1m$@\033[0m"; }
green_echo ()    { echo -e "\033[032;1m$@\033[0m"; }
yellow_echo ()   { echo -e "\033[033;1m$@\033[0m"; }
blue_echo ()     { echo -e "\033[034;1m$@\033[0m"; }
purple_echo ()   { echo -e "\033[035;1m$@\033[0m"; }# 日志输出函数
log_red ()      { echo -e "\033[031;1m$@\033[0m" >> $LOG_FILE; }
log_green ()    { echo -e "\033[032;1m$@\033[0m" >> $LOG_FILE; }
log_yellow ()   { echo -e "\033[033;1m$@\033[0m" >> $LOG_FILE; }
log_blue ()     { echo -e "\033[034;1m$@\033[0m" >> $LOG_FILE; }
log_purple ()   { echo -e "\033[035;1m$@\033[0m" >> $LOG_FILE; }
log_echo ()     { echo "$@" >> $LOG_FILE; }# 导出日志函数,使其在子shell中可用
export -f log_red log_green log_yellow log_blue log_purple log_echo
export LOG_FILE# 步骤开始输出
begin () { printf "\033[036;1m[%d/%d]\033[0m %-40s... " "$step_current" "$step_total" "$step_desc" log_echo -n "[$step_current/$step_total] $step_desc... " 
}# 状态提示
failure () { red_echo "失败" log_red "失败"echo "--------------------------------------------------"exit 1 
}
success () { green_echo "完成" log_green "完成"echo "--------------------------------------------------"
}# 步骤计数器
step_current=0
step_total=20proc () {test -f .oracle_install.step || touch .oracle_install.stepstep=$@step_current=$((step_current + 1))# 设置步骤描述case $step in"pre_check") step_desc="预先检查" ;;"set_hostname") step_desc="设置主机名" ;;"set_users_and_groups") step_desc="设置用户和组" ;;"set_oracle_password") step_desc="设置oracle用户密码" ;;"create_data_directories") step_desc="创建数据目录" ;;"install_dependencies") step_desc="安装软件依赖" ;;"adjust_kernel_parameters") step_desc="调整内核参数" ;;"modify_system_resource_limits") step_desc="修改系统资源限制参数" ;;"disable_transparent_hugepage") step_desc="关闭透明页" ;;"set_timezone") step_desc="修改时区" ;;"disable_selinux") step_desc="禁用SELINUX" ;;"disable_firewall") step_desc="关闭防火墙" ;;"switch_to_oracle_user") step_desc="切换到oracle用户并创建环境变量文件" ;;"install_oracle_database_1") step_desc="静默安装数据库软件步骤1" ;;"install_oracle_database_2") step_desc="静默安装数据库软件步骤2" ;;"start_lns") step_desc="启动并查看监听" ;;"install_oracle_database_3") step_desc="静默安装数据库软件步骤3" ;;"start_database") step_desc="启动Oracle数据库实例" ;;"check_oracle") step_desc="验证环境并创建数据库用户" ;;*) step_desc="$step" ;;esacif grep "$step" .oracle_install.step &> /dev/nullthenprintf "\033[036;1m[%d/%d]\033[0m %-40s... %s\n" "$step_current" "$step_total" "$step_desc" "$(yellow_echo '已跳过')"log_yellow "[$step_current/$step_total] $step_desc... 已跳过"echo "--------------------------------------------------"elsebeginif exec_"$step" >> $LOG_FILE 2>&1; thenecho "$step" >> .oracle_install.stepsuccesselsefailurefifi
}# 开始提示
echo "=================================================="
purple_echo "                  开始安装 Oracle 11g              "
echo "=================================================="
log_purple "****** 开始安装 Oracle 11g ******"shopt -s expand_aliases########### 自定义变量 ###########
SERVICE_IP=192.168.59.141
ORACLE_HOSTNAME=oracleServer
ORACLE_SID=testdb
ORACLE_UNIQUE_NAME=orcl
SYSTEM_LANGUAGE=en_US
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
GLOBAL_DATABASE_NAME=orcl
DATAFILE_DESTINATION=/u01/data
TOTAL_MEMORY=6000
SYS_PASSWORD=oracle
SYSTEM_PASSWORD=oracle
CHARACTER_SET=UTF8
NATIONAL_CHARACTER_SET=AL16UTF16
ORACLE_TERM=xterm
NLS_DATE_FORMAT='yyyy-mm-dd HH24:MI:SS'
NLS_LANGUAGE=AMERICAN_AMERICA.UTF8
THREADS_FLAG=native######## 安装配置 ########
ORACLE_INSTALL_OPTION=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_INSTALL_DB_INSTALL_EDITION=EE
ORACLE_INSTALL_DB_EE_OPTIONS_SELECTION=false
ORACLE_INSTALL_DB_DBA_GROUP=dba
ORACLE_INSTALL_DB_OPER_GROUP=oinstall
DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MY_ORACLE_SUPPORT=false
RESPONSE_FILE_VERSION="11.2.0"
OPERATION_TYPE="createDatabase"
TEMPLATE_NAME=General_Purpose.dbc
STORAGE_TYPE=FS
TOTALMEMORY=$(grep 'MemTotal' /proc/meminfo | awk '{printf ("%d\n",($2*0.8)/1024)}')# 检查root权限
if [ "$(id -u)" != "0" ]; thenred_echo "错误:此脚本必须以root权限运行" log_red "此脚本必须以root权限运行"exit 1
fi# 预先检查
exec_pre_check() {log_blue "预先检查" log_purple "检查oracle.env配置情况" ALL_VAR=0SET_VAR=0error_flag=0while IFS= read -r line || [ -n "$line" ]; doline=$(echo "$line" | xargs)if [[ -z "$line" ]] || [[ "$line" =~ ^# ]]; thencontinuefilog_echo -n "$line "((ALL_VAR++))KEY="${line%%=*}"VALUE="${line##*=}"if [ -z "$VALUE" ]; thenlog_red "[ERROR] 变量值为空: $KEY"error_flag=1elselog_green "[OK]"((SET_VAR++))fidone < oracle.env# 检查Oracle安装包log_purple "检查Oracle安装包"PKG1="/root/install_oracle11g/pkgs/Linux-x86-64_database_1of7.zip"PKG2="/root/install_oracle11g/pkgs/Linux-x86-64_database_2of7.zip"if [ ! -f "$PKG1" ]; thenlog_red "[ERROR] 安装包不存在: $PKG1"error_flag=1elselog_green "[OK] 找到安装包: $PKG1"fiif [ ! -f "$PKG2" ]; thenlog_red "[ERROR] 安装包不存在: $PKG2"error_flag=1elselog_green "[OK] 找到安装包: $PKG2"fiif [ $error_flag -eq 1 ]; thenlog_red "[ERROR] 存在错误,脚本终止。"return 1filog_green "[SUCCESS] 检查通过,自动继续安装"
}# 切换到oracle用户并创建环境变量文件
exec_switch_to_oracle_user() {log_blue "切换到oracle用户并创建环境变量文件"su - oracle -c "# 在oracle用户环境中重新定义日志函数log_echo() { echo \"\$@\" >> $LOG_FILE; }log_blue() { echo -e \"\033[034;1m\$@\033[0m\" >> $LOG_FILE; }log_green() { echo -e \"\033[032;1m\$@\033[0m\" >> $LOG_FILE; }# 创建环境变量文件cat >> ~/.bash_profile <<'EOF'
PS1=\"[\$(whoami)@\$(hostname):'\$PWD]\$'\"
export PS1
export TMP=/tmp
export LANG=$SYSTEM_LANGUAGE
export TMPDIR=\$TMP
export ORACLE_UNQNAME=$ORACLE_UNIQUE_NAME
ORACLE_SID=testdb; export ORACLE_SID
ORACLE_BASE=$ORACLE_BASE; export ORACLE_BASE
ORACLE_HOME=$ORACLE_HOME; export ORACLE_HOME
ORACLE_TERM=$ORACLE_TERM; export ORACLE_TERM
export TNS_ADMIN=\$ORACLE_HOME/network/admin
NLS_DATE_FORMAT=\"$NLS_DATE_FORMAT\"; export NLS_DATE_FORMAT
NLS_LANG=$NLS_LANGUAGE; export NLS_LANG
PATH=.:\$PATH:\$HOME/.local/bin:\$HOME/bin:\$ORACLE_HOME/bin; export PATH
THREADS_FLAG=$THREADS_FLAG; export THREADS_FLAG
umask=022
EOFsource ~/.bash_profilelog_blue "Oracle环境变量:"env | grep ORACLE | log_echo" || {log_red "[ERROR] 创建环境变量文件失败"return 1}log_green "[SUCCESS] 切换到oracle用户并创建环境变量文件成功"
}# 启动监听
exec_start_lns(){log_blue "切换到oracle启动监听"su - oracle -c "# 重新定义日志函数log_echo() { echo \"\$@\" >> $LOG_FILE; }log_blue() { echo -e \"\033[034;1m\$@\033[0m\" >> $LOG_FILE; }cp $ORACLE_HOME/inventory/Scripts/ext/lib/libclntsh.so.11.1 $ORACLE_HOME/lib/    cd /home/oracle/software/database || exit 1netca -silent -responseFile /home/oracle/software/database/response/netca.rsp log_blue \"监听文件列表:\"ls -l $ORACLE_HOME/network/admin | log_echolog_blue \"监听状态:\"lsnrctl status | log_echo" || {log_red "[ERROR] 启动监听失败"return 1}log_green "[SUCCESS] 启动并查看监听成功"
}# 数据库创建步骤
exec_install_oracle_database_3() {log_blue "切换到oracle用户静默安装数据库"su - oracle -c "# 重新定义日志函数log_echo() { echo \"\$@\" >> $LOG_FILE; }cd /home/oracle/software/database/ || exit 1sed -i 's/^OPERATION_TYPE =.*/OPERATION_TYPE = \"$OPERATION_TYPE\"/' response/dbca.rspsed -i 's/^GDBNAME =.*/GDBNAME = \"$GLOBAL_DATABASE_NAME\"/' response/dbca.rspsed -i 's/^SID =.*/SID = \"$ORACLE_SID\"/' response/dbca.rspsed -i 's/^TEMPLATENAME =.*/TEMPLATENAME = \"$TEMPLATE_NAME\"/' response/dbca.rspsed -i 's|^STORAGETYPE =.*|STORAGETYPE = \"$STORAGE_TYPE\"|' response/dbca.rspsed -i 's|^DATAFILEDESTINATION =.*|DATAFILEDESTINATION = \"$DATAFILE_DESTINATION\"|' response/dbca.rspsed -i 's|^CHARACTERSET =.*|CHARACTERSET = \"$CHARACTER_SET\"|' response/dbca.rsp    sed -i 's|^NATIONALCHARACTERSET=.*|NATIONALCHARACTERSET = \"$NATIONAL_CHARACTER_SET\"|' response/dbca.rsp    sed -i 's|^TOTALMEMORY =.*|TOTALMEMORY = \"$TOTALMEMORY\"|' response/dbca.rsp    sed -i 's|^SYSPASSWORD =.*|SYSPASSWORD = \"$SYS_PASSWORD\"|' response/dbca.rsp    sed -i 's|^SYSTEMPASSWORD =.*|SYSTEMPASSWORD = \"$SYSTEM_PASSWORD\"|' response/dbca.rsp  sed -i 's|^#STORAGETYPE =.*|STORAGETYPE = \"$STORAGE_TYPE\"|' response/dbca.rspsed -i 's|^#DATAFILEDESTINATION =.*|DATAFILEDESTINATION = \"$DATAFILE_DESTINATION\"|' response/dbca.rspsed -i 's|^#CHARACTERSET =.*|CHARACTERSET = \"$CHARACTER_SET\"|' response/dbca.rsp    sed -i 's|^#NATIONALCHARACTERSET=.*|NATIONALCHARACTERSET = \"$NATIONAL_CHARACTER_SET\"|' response/dbca.rsp    sed -i 's|^#TOTALMEMORY =.*|TOTALMEMORY = \"$TOTALMEMORY\"|' response/dbca.rsp    sed -i 's|^#SYSPASSWORD =.*|SYSPASSWORD = \"$SYS_PASSWORD\"|' response/dbca.rsp    sed -i 's|^#SYSTEMPASSWORD =.*|SYSTEMPASSWORD = \"$SYSTEM_PASSWORD\"|' response/dbca.rsp    dbca -silent -responseFile /home/oracle/software/database/response/dbca.rsp " || {log_red "[ERROR] 数据库创建失败"return 1}log_green "[SUCCESS] 数据库创建完成"
}# 关键修复:启动Oracle数据库实例(处理已启动情况)
exec_start_database() {log_blue "启动Oracle数据库实例"# 先检查数据库当前状态status=$(su - oracle -c "source ~/.bash_profilesqlplus -S / as sysdba <<'EOF'SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFFSELECT status FROM v\$instance;EXIT;
EOF")# 处理不同状态if [ "$status" = "OPEN" ]; thenlog_green "数据库实例已处于运行状态,无需重复启动"return 0  # 成功退出elif [ -z "$status" ]; thenlog_blue "数据库未运行,尝试启动..."# 尝试启动数据库startup_output=$(su - oracle -c "source ~/.bash_profilesqlplus -S / as sysdba <<'EOF'startup;EXIT;
EOF")# 检查启动后的状态new_status=$(su - oracle -c "source ~/.bash_profilesqlplus -S / as sysdba <<'EOF'SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFFSELECT status FROM v\$instance;EXIT;
EOF")if [ "$new_status" = "OPEN" ]; thenlog_green "数据库实例启动成功,状态:$new_status"return 0elselog_red "数据库启动失败,输出:$startup_output"return 1fielselog_red "数据库当前状态异常:$status"return 1fi
}# 验证步骤
exec_check_oracle() {log_blue "开始验证数据库环境并创建用户..."sleep 10  # 等待数据库稳定su - oracle -c "source ~/.bash_profilesqlplus -S / as sysdba <<'EOF'SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFFselect instance_name,status from v\$instance;select file_name, tablespace_name from dba_data_files;CREATE USER test_user IDENTIFIED BY test_password;GRANT CONNECT, RESOURCE TO test_user;EXIT;
EOF" || {log_red "[ERROR] 验证数据库或创建用户失败"return 1}status=$(su - oracle -c "source ~/.bash_profilesqlplus -S / as sysdba <<'EOF'SET PAGESIZE 0 FEEDBACK OFF VERIFY OFF HEADING OFF ECHO OFFSELECT status FROM v\$instance;EXIT;
EOF")if [ "$status" = "OPEN" ]; thenlog_green "Oracle 数据库服务安装成功并且状态正常。"log_green "测试用户 test_user 已成功创建。"elselog_red "Oracle 数据库服务状态异常:$status"return 1fi
}# 其他函数保持不变
exec_set_hostname() {log_blue "设置主机名"hostnamectl set-hostname "$ORACLE_HOSTNAME"echo "$SERVICE_IP" "$ORACLE_HOSTNAME" >> /etc/hostslog_echo " hosts文件内容:"cat /etc/hosts >> $LOG_FILElog_green "[SUCCESS] 设置主机名成功"
}exec_set_users_and_groups() {log_blue "设置用户和组"/usr/sbin/groupadd -g 60001 oinstall/usr/sbin/groupadd -g 60002 dba/usr/sbin/groupadd -g 60003 operuseradd -u 61001 -g oinstall -G dba,oper oraclelog_green "[SUCCESS] 设置用户和组成功"
}exec_set_oracle_password() {log_blue "设置oracle用户密码"echo "oracle:MyPassWd@123!" | chpasswdlog_green "[SUCCESS] 设置oracle用户密码成功"
}exec_create_data_directories() {log_blue "创建数据目录"mkdir -p /u01/app/oracle/product/11.2.0mkdir -p /u01/app/oraInventorychown -R oracle:oinstall /u01log_green "[SUCCESS] 创建数据目录成功"
}exec_install_dependencies() {log_blue "安装软件依赖"umount /dev/sr0 /media 2>/dev/nullmkdir -p /mnt/localrepo mount /dev/sr0 /mnt/localrepoif [ $? -ne 0 ]; thenlog_red "挂载光盘失败"return 1filog_echo "挂载结果:"df -h | grep /mnt/localrepo >> $LOG_FILEcd /etc/yum.repos.d/rm -rf *cat > /etc/yum.repos.d/local.repo << EOF
[local-repo]
name=Local Offline Repository
baseurl=file:///mnt/localrepo
gpgcheck=0
enabled=1
EOFyum clean all >> $LOG_FILE 2>&1yum makecache >> $LOG_FILE 2>&1yum install /root/install_oracle11g/depFiles/compat-libcap1-1.10-1.x86_64.rpm -y >> $LOG_FILE 2>&1yum install /root/install_oracle11g/depFiles/compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm -y >> $LOG_FILE 2>&1rpm -ivh /root/install_oracle11g/depFiles/libnsl-2.28-49.p03.ky10.x86_64.rpm --nodeps --force >> $LOG_FILE 2>&1yum install -y unzipyum install -y device-mapper-persistent-data lvm2 wget \net-tools nfs-utils lrzsz gcc gcc-c++ \make cmake libxml2-devel openssl-devel \curl curl-devel sudo ntp libaio-devel \wget vim ncurses-devel autoconf automake zlib-devel \python-devel openssh-server  \ntpdate telnet psmisc bc binutils gdb glibc ksh \elfutils-libelf elfutils-libelf-devel fontconfig-devel \glibc-devel libaio libXrender libXrender-devel libX11 \libXau sysstat libXi libXtst libgcc librdmacm-devel \libstdc++ libstdc++-devel libxcb compat-libcap1 compat-libstdc++-33 \smartmontools targetcli python python-configshell python-rtslib \python-six unixODBC unixODBC-devel iscsi-initiator-utils device-mapper \device-mapper-multipath unbound bind-utils numactl libnsl >> $LOG_FILE 2>&1if [ $? -ne 0 ]; thenlog_red "安装依赖包失败"return 1fi\cp /root/install_oracle11g/depFiles/libaio.so.1.0.1.new /usr/lib64/ln -sf /usr/lib64/libaio.so.1.0.1.new /usr/lib64/libaio.so.1\cp /root/install_oracle11g/depFiles/libpthread_nonshared.a /usr/lib64/log_green "[SUCCESS] 安装软件依赖成功"
}exec_adjust_kernel_parameters() {log_blue "调整内核参数"SHMMAX=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*1024*0.8)}')SHMALL=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*1024/4096*0.8)}')sed -i "s/kernel.shmmax/#kernel.shmmax/g" /etc/sysctl.confsed -i "s/kernel.shmall/#kernel.shmall/g" /etc/sysctl.confcat >> /etc/sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = $SHMALL
kernel.shmmax = $SHMMAX
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 1048576
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOFsysctl -p >> $LOG_FILE 2>&1log_green "[SUCCESS] 调整内核参数成功"
}exec_modify_system_resource_limits() {log_blue "修改系统资源限制参数"SMEMLOCK=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*0.9)}')HMEMLOCK=$(grep 'MemTotal' /proc/meminfo |awk '{printf ("%d\n",$2*0.9)}')cat >> /etc/security/limits.conf << EOF
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 2048
grid hard nofile 65536
grid soft stack 10240
grid hard stack 32768
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 2048
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
oracle soft memlock $SMEMLOCK
oracle hard memlock $HMEMLOCK
EOFsysctl -p >> $LOG_FILE 2>&1log_green "[SUCCESS] 修改系统资源限制参数成功"
}exec_disable_transparent_hugepage() {log_blue "关闭透明页"log_echo "当前透明页状态:"cat /sys/kernel/mm/transparent_hugepage/defrag >> $LOG_FILEcat /sys/kernel/mm/transparent_hugepage/enabled >> $LOG_FILEcat << 'EOF' > /etc/rc.d/rc.local
# Disable Transparent Huge Pages
if test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; thenecho never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOFchmod +x /etc/rc.d/rc.localsh /etc/rc.d/rc.local >> $LOG_FILE 2>&1log_green "[SUCCESS] 关闭透明页成功"
}exec_set_timezone() {log_blue "修改时区"ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimelog_echo "当前硬件时钟:"hwclock >> $LOG_FILElog_green "[SUCCESS] 修改时区成功"
}exec_disable_selinux() {log_blue "禁用SELINUX"cp /etc/selinux/config /etc/selinux/config_$(date +"%Y%m%d%H%M%S").baksed -i 's/enforcing/disabled/' /etc/selinux/config setenforce 0 >> $LOG_FILE 2>&1log_green "[SUCCESS] 禁用SELINUX成功"
}exec_disable_firewall() {log_blue "关闭防火墙"log_echo "防火墙状态:"systemctl status firewalld.service >> $LOG_FILE 2>&1systemctl stop firewalld.service >> $LOG_FILE 2>&1systemctl disable firewalld.service >> $LOG_FILE 2>&1log_green "[SUCCESS] 关闭防火墙成功"
}exec_install_oracle_database_1() {log_blue "分发安装包"mkdir -p /home/oracle/software/chown -R oracle:oinstall /home/oracle/software/PKG1="/root/install_oracle11g/pkgs/Linux-x86-64_database_1of7.zip"PKG2="/root/install_oracle11g/pkgs/Linux-x86-64_database_2of7.zip"if [ ! -f "/home/oracle/software/Linux-x86-64_database_1of7.zip" ]; thencp "$PKG1" /home/oracle/software/ || {log_red "[ERROR] 复制安装包1失败: $PKG1"return 1}fiif [ ! -f "/home/oracle/software/Linux-x86-64_database_2of7.zip" ]; thencp "$PKG2" /home/oracle/software/ || {log_red "[ERROR] 复制安装包2失败: $PKG2"return 1}fichown -R oracle:oinstall /home/oracle/software/log_blue "切换到oracle用户解压并准备安装"su - oracle -c "cd /home/oracle/software || { echo '切换目录失败'; exit 1; }rm -rf databaseunzip -q Linux-x86-64_database_1of7.zip || { echo '解压包1失败'; exit 1; }unzip -q Linux-x86-64_database_2of7.zip || { echo '解压包2失败'; exit 1; }if [ ! -d 'database' ]; thenecho '解压失败,未找到database目录'; exit 1;ficp /usr/bin/unzip database/install/ || { echo '复制unzip工具失败'; exit 1; }cd database || { echo '进入database目录失败'; exit 1; }cp response/db_install.rsp response/db_install.rsp_$(date +"%Y%m%d%H%M%S").bakcp response/dbca.rsp response/dbca.rsp_$(date +"%Y%m%d%H%M%S").baksed -i 's/^oracle.install.option=.*/oracle.install.option=$ORACLE_INSTALL_OPTION/g' response/db_install.rspsed -i 's/^ORACLE_HOSTNAME=.*/ORACLE_HOSTNAME=$HOSTNAME/' response/db_install.rspsed -i 's/^UNIX_GROUP_NAME=.*/UNIX_GROUP_NAME=$UNIX_GROUP_NAME/' response/db_install.rspsed -i 's|^INVENTORY_LOCATION=.*|INVENTORY_LOCATION=$INVENTORY_LOCATION|' response/db_install.rspsed -i 's/^SELECTED_LANGUAGES=.*/SELECTED_LANGUAGES=$SELECTED_LANGUAGES/' response/db_install.rspsed -i 's|^ORACLE_HOME=.*|ORACLE_HOME=$ORACLE_HOME|' response/db_install.rspsed -i 's|^ORACLE_BASE=.*|ORACLE_BASE=$ORACLE_BASE|' response/db_install.rspsed -i 's/^oracle.install.db.InstallEdition=.*/oracle.install.db.InstallEdition=$ORACLE_INSTALL_DB_INSTALL_EDITION/' response/db_install.rspsed -i 's/^oracle.install.db.DBA_GROUP=.*/oracle.install.db.DBA_GROUP=$ORACLE_INSTALL_DB_DBA_GROUP/' response/db_install.rspsed -i 's/^oracle.install.db.OPER_GROUP=.*/oracle.install.db.OPER_GROUP=$ORACLE_INSTALL_DB_OPER_GROUP/' response/db_install.rspsed -i 's/^DECLINE_SECURITY_UPDATES=.*/DECLINE_SECURITY_UPDATES=$DECLINE_SECURITY_UPDATES/' response/db_install.rspsed -i 's/^SECURITY_UPDATES_VIA_MYORACLESUPPORT=.*/SECURITY_UPDATES_VIA_MYORACLESUPPORT=$SECURITY_UPDATES_VIA_MY_ORACLE_SUPPORT/' response/db_install.rspls -l response/" || {log_red "[ERROR] oracle用户处理安装包失败"return 1}log_green "[SUCCESS] 静默安装数据库软件步骤1成功"
}exec_install_oracle_database_2() {log_blue "切换到oracle用户静默安装数据库"if [ ! -d "/home/oracle/software/database" ]; thenlog_red "[ERROR] 未找到database目录,安装包解压失败"return 1fisu - oracle -c "cd /home/oracle/software/database || { echo '进入database目录失败'; exit 1; }./runInstaller -silent -ignorePrereq -responseFile /home/oracle/software/database/response/db_install.rsp > install.log 2>&1 &" || {log_red "[ERROR] 启动安装程序失败"return 1}max_attempts=60attempt=0sleep_interval=60log_file_oracle="/home/oracle/software/database/install.log"success_flag="Successfully Setup Software"log_blue "等待Oracle安装完成,这可能需要较长时间..."while [ $attempt -lt $max_attempts ]; doif [ -f "$log_file_oracle" ] && grep -q "$success_flag" "$log_file_oracle"; thenlog_green "Oracle软件安装成功!"breakfisleep $sleep_intervalattempt=$((attempt + 1))log_blue "已等待 $(($attempt * $sleep_interval)) 秒,继续等待..."doneif [ $attempt -eq $max_attempts ]; thenlog_red "达到最大尝试次数,退出。请检查日志文件: $log_file_oracle"return 1fish /u01/app/oraInventory/orainstRoot.sh >> $LOG_FILE 2>&1 && log_blue "oraInventory root脚本执行成功"sh /u01/app/oracle/product/11.2.0/db_1/root.sh >> $LOG_FILE 2>&1 && log_blue "Oracle数据库root脚本执行成功"
}# 执行所有步骤
proc pre_check
proc set_hostname
proc set_users_and_groups
proc set_oracle_password
proc create_data_directories
proc install_dependencies
proc adjust_kernel_parameters
proc modify_system_resource_limits
proc disable_transparent_hugepage
proc set_timezone
proc disable_selinux
proc disable_firewall
proc switch_to_oracle_user
proc install_oracle_database_1
proc install_oracle_database_2
proc start_lns
proc install_oracle_database_3
proc start_database
proc check_oracle# 结束提示
echo "=================================================="
purple_echo "               Oracle 11g 安装成功完成!           "
echo "=================================================="
log_purple "****** Oracle 11g 安装成功完成! ******"# 数据库信息输出
blue_echo "数据库信息:"
blue_echo "  - 实例名:         $ORACLE_SID"
blue_echo "  - 全局数据库名:   $GLOBAL_DATABASE_NAME"
blue_echo "  - SYS密码:        $SYS_PASSWORD"
blue_echo "  - SYSTEM密码:     $SYSTEM_PASSWORD"
blue_echo "  - 监听状态:       使用 'lsnrctl status' 查看"
blue_echo "  - 连接命令:       sqlplus sys/$SYS_PASSWORD@$ORACLE_SID as sysdba"
green_echo "请记录以上信息以备后续使用!"# 数据库信息写入日志
log_blue "数据库信息:" >> $LOG_FILE
log_blue "  - 实例名:         $ORACLE_SID" >> $LOG_FILE
log_blue "  - 全局数据库名:   $GLOBAL_DATABASE_NAME" >> $LOG_FILE
log_blue "  - SYS密码:        $SYS_PASSWORD" >> $LOG_FILE
log_blue "  - SYSTEM密码:     $SYSTEM_PASSWORD" >> $LOG_FILE
log_blue "  - 监听状态:       使用 'lsnrctl status' 查看" >> $LOG_FILE
log_blue "  - 连接命令:       sqlplus sys/$SYS_PASSWORD@$ORACLE_SID as sysdba" >> $LOG_FILE
log_green "请记录以上信息以备后续使用!" >> $LOG_FILE
[root@oracleServer install_oracle11g]#./1.sh

在这里插入图片描述

http://www.dtcms.com/a/340158.html

相关文章:

  • 【运维进阶】管理大项目
  • Linux数据库:【索引】
  • 如何成功初始化一个模块
  • 第4章 React状态管理基础
  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • LWIP的IP 协议栈
  • C#传参调用外部exe
  • FACE 与 AUTOSAR 架构比较研究:本质异同分析
  • Huggingface-Qwen2-blog学习
  • Ubuntu 下面安装搜狗输入法debug记录
  • git 常用操作
  • 可靠性测试:软件稳定性的守护者
  • Linux网络服务(二)——交换机、网络层与传输层原理详解
  • L2TP虚拟局域网
  • Qt 插件开发全解析:从接口定义,插件封装,插件调用到插件间的通信
  • 从0到1掌握 Spring Security(第四篇):密码加密原理、默认行为与配置选型
  • 电子电气架构 --- 软件项目风险管理
  • ONVIF 设备debug: 设置onvif视频流配置的办法
  • 趣谈设计模式之策略模式-比特咖啡给你一杯满满的情绪价值,让您在数字世界里”畅饮“
  • 数据结构 -- 链表--单向链表的特点、操作函数
  • 【Git 子模块与动态路由映射技术分析文档】
  • 视觉测试:确保应用界面一致性
  • 数据结构 -- 单向链表的特点、操作函数
  • 使用segment-anything将目标检测label转换为语义分割label
  • 数据结构:二叉树oj练习
  • 实现进度条
  • 【大模型早期融合的非标记化架构】
  • 学习strandsagents的http_request tool
  • 【上升跟庄买入】副图/选股指标,动态黄色线由下向上穿越绿色基准线时,发出买入信号
  • Ubuntu 20 各种网卡配置IP的方法