【实用脚本】一键安装Oracle19c数据库

news/2025/11/4 19:51:49/文章来源:https://www.cnblogs.com/liuziyi1/p/19191257

【实用脚本】一键安装Oracle19c数据库

f3e6092d-af7c-408c-866e-e9fa877ac011
image
image
image
完整脚本:

#!/bin/bash
#Oracle 一键安装工具
log_file="/var/log/oracle_install_$(date +%Y%m%d_%H%M%S).log"
# 屏幕输出只显示状态提示,日志文件记录完整详细信息
exec > >(tee -a "$log_file") 2>&1echo -e "\e[1;35m###########################################################\e[0m"
echo -e "\e[1;35m#                     Oracle 一键安装工具                 #\e[0m"
echo -e "\e[1;35m###########################################################\e[0m"
echo -e "安装日志路径:${log_file}\n"
echo "==========================================================" >> "$log_file"
echo "Oracle 安装开始时间:$(date '+%Y-%m-%d %H:%M:%S')" >> "$log_file"
echo "==========================================================" >> "$log_file"# 步骤1/15:修改主机名
echo -e "【步骤1/15】修改主机名..."
echo "===== 步骤1:修改主机名 =====" >> "$log_file"
hostnamectl set-hostname myoracle  # 保留详细输出到日志
if [ $? -eq 0 ]; thenecho -e "[SUCCESS] 主机名修改为 myoracle"
elseecho -e "[ERROR] 主机名修改失败,详细日志请查看:${log_file}"
fi
echo "当前主机名:$(hostname)" >> "$log_file"# 步骤2/15:添加主机名与IP对应记录
echo -e "\n【步骤2/15】添加主机名与IP对应记录..."
echo -e "\n===== 步骤2:添加主机名与IP对应记录 =====" >> "$log_file"
public_ip=$(hostname -I| grep -o -e '[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}' |head -n 1)
node_name=$(hostname)
echo "获取到的IP:${public_ip},主机名:${node_name}" >> "$log_file"
echo -e "${public_ip} ${node_name}">> /etc/hosts
# 屏幕只显示添加的记录,完整hosts文件写入日志
cat /etc/hosts | grep "${node_name}"
echo "完整/etc/hosts文件内容:" >> "$log_file"
cat /etc/hosts >> "$log_file"
echo -e "[SUCCESS] 主机名与IP对应记录添加完成"# 步骤3/15:关闭Selinux
echo -e "\n【步骤3/15】关闭Selinux..."
echo -e "\n===== 步骤3:关闭Selinux =====" >> "$log_file"
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0  # 保留详细输出到日志
# 屏幕只显示当前模式,完整sestatus输出写入日志
current_selinux=$(sestatus | grep "Current mode" | awk '{print $3}')
echo "Current mode:                   ${current_selinux}"
echo "完整sestatus输出:" >> "$log_file"
sestatus >> "$log_file"
echo -e "[SUCCESS] Selinux 已设置为 disabled"# 步骤4/15:关闭防火墙
echo -e "\n【步骤4/15】关闭防火墙..."
echo -e "\n===== 步骤4:关闭防火墙 =====" >> "$log_file"
systemctl stop firewalld  # 保留详细输出到日志
systemctl disable firewalld  # 保留详细输出到日志
# 屏幕只显示激活状态,完整status输出写入日志
firewall_status=$(systemctl status firewalld | grep "Active" | awk '{print $2,$3}')
echo "   Active: ${firewall_status}"
echo "完整firewalld状态输出:" >> "$log_file"
systemctl status firewalld >> "$log_file"
echo -e "[SUCCESS] 防火墙已停止并禁用"# 步骤5/15:准备目录并复制安装包
echo -e "\n【步骤5/15】准备目录并复制安装包..."
echo -e "\n===== 步骤5:准备目录并复制安装包 =====" >> "$log_file"
current_dir=$(pwd)
target_dir="/soft"
echo "当前目录:${current_dir},目标目录:${target_dir}" >> "$log_file"
if [ ! -d "$target_dir" ]; thenmkdir -p "$target_dir"echo -e "[INFO] 已创建目录: $target_dir"echo "创建目录 ${target_dir} 成功" >> "$log_file"
elseecho -e "[INFO] 目录 $target_dir 已存在"echo "目录 ${target_dir} 已存在" >> "$log_file"
fi
# 复制文件(保留详细输出到日志)
echo "开始复制当前目录文件到 ${target_dir}..." >> "$log_file"
cp -r "$current_dir"/* "$target_dir"
if [ $? -eq 0 ]; thenecho -e "[SUCCESS] 已将当前目录所有文件复制至 $target_dir"echo "复制文件完成,目标目录内容:" >> "$log_file"ls -la "$target_dir" >> "$log_file"
elseecho -e "[ERROR] 文件复制失败,详细日志请查看:${log_file}"
fi# 步骤6/15:添加用户组及用户(移到Yum源安装前,解决cvuqdisk依赖)
echo -e "\n【步骤6/15】添加用户组及用户..."
echo -e "\n===== 步骤6:添加用户组及用户 =====" >> "$log_file"
# 移除/dev/null,让组创建详细信息写入日志
groupadd -g 54321 oinstall || echo -e "[INFO] 组 oinstall 已存在"
groupadd -g 54322 dba || echo -e "[INFO] 组 dba 已存在"
groupadd -g 54323 oper || echo -e "[INFO] 组 oper 已存在"
groupadd -g 54324 backupdba || echo -e "[INFO] 组 backupdba 已存在"
groupadd -g 54325 dgdba || echo -e "[INFO] 组 dgdba 已存在"
groupadd -g 54326 kmdba || echo -e "[INFO] 组 kmdba 已存在"
useradd -u 54321 -g oinstall -G dba,backupdba,dgdba,kmdba,oper oracle || echo -e "[INFO] 用户 oracle 已存在"
echo "oracle" | passwd --stdin oracle
# 验证用户创建结果
if id oracle >/dev/null 2>&1; thenecho -e "[SUCCESS] oracle 用户及组创建完成"echo "oracle用户详细信息:" >> "$log_file"id oracle >> "$log_file"echo "用户组列表:" >> "$log_file"cat /etc/group | grep -E "oinstall|dba|oper|backupdba|dgdba|kmdba" >> "$log_file"
elseecho -e "[ERROR] oracle 用户及组创建失败,详细日志请查看:${log_file}"
fi# 步骤7/15:处理离线Yum源
echo -e "\n【步骤7/15】处理离线Yum源..."
echo -e "\n===== 步骤7:处理离线Yum源 =====" >> "$log_file"
cd /soft
if [ -f "oracle_repo.tar.gz" ]; thenecho -e "[INFO] 正在解压离线Yum源包..."echo "开始解压 oracle_repo.tar.gz..." >> "$log_file"tar -xvf oracle_repo.tar.gz >> "$log_file" 2>&1  # 解压详情写入日志if [ $? -eq 0 ]; thenecho "[INFO] 离线Yum源包解压完成" >> "$log_file"elseecho "[ERROR] 离线Yum源包解压失败" >> "$log_file"ficd /soft/my_oracle_repoecho -e "[INFO] 正在安装离线Yum源(包含cvuqdisk)..."echo "开始安装离线Yum源rpm包(CVUQDISK_GRP=oinstall)..." >> "$log_file"# rpm安装详情写入日志,屏幕不显示CVUQDISK_GRP=oinstall rpm -ivh *.rpm --nodeps --force >> "$log_file" 2>&1if [ $? -eq 0 ]; thenecho -e "[SUCCESS] 离线Yum源(含cvuqdisk)安装完成"echo "已安装的rpm包列表:" >> "$log_file"rpm -qa | grep -E "$(ls *.rpm | sed 's/.rpm//g')" >> "$log_file"elseecho -e "[ERROR] 离线Yum源安装失败,详细日志请查看:${log_file}"fi
elseecho -e "[WARNING] 未找到 oracle_repo.tar.gz,离线Yum源安装跳过"echo "未找到 oracle_repo.tar.gz,跳过离线Yum源安装" >> "$log_file"
fi
echo -e "[SUCCESS] Yum源配置完成"# 步骤8/15:配置系统参数文件(sysctl.conf)
echo -e "\n【步骤8/15】配置系统参数文件..."
echo -e "\n===== 步骤8:配置sysctl.conf =====" >> "$log_file"
chmod 644 /etc/sysctl.conf
echo "添加Oracle相关系统参数到/etc/sysctl.conf..." >> "$log_file"
cat <<EOF >>/etc/sysctl.conf
#ORACLE SETTING
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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 = 1048586
kernel.panic_on_oops = 1
kernel.shmmax = 2684354560
kernel.shmall = 655360
kernel.shmmni = 4096
vm.swappiness=10
vm.vfs_cache_pressure=200
EOF
echo "重新加载sysctl参数..." >> "$log_file"
sysctl -p  # 保留参数加载详细输出到日志
echo "修改后的/etc/sysctl.conf文件内容:" >> "$log_file"
cat /etc/sysctl.conf | grep -A 20 "#ORACLE SETTING" >> "$log_file"
echo -e "[SUCCESS] sysctl.conf 配置完成"# 步骤9/15:配置资源限制及内存挂载
echo -e "\n【步骤9/15】配置资源限制及内存挂载..."
echo -e "\n===== 步骤9:配置limits.conf及内存挂载 =====" >> "$log_file"
chmod 644 /etc/security/limits.conf
echo "添加Oracle用户资源限制到/etc/security/limits.conf..." >> "$log_file"
cat <<EOF >>/etc/security/limits.conf
#ORACLE SETTING
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 16384
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
EOF
echo "添加/dev/shm挂载配置到/etc/fstab..." >> "$log_file"
echo "none /dev/shm tmpfs defaults,size=3096m 0 0" >> /etc/fstab 
echo "重新挂载/dev/shm..." >> "$log_file"
mount -o remount /dev/shm  # 保留挂载详细输出到日志
# 屏幕只显示关键信息,完整df输出写入日志
df -h /dev/shm | grep "shm" | awk '{print $1,$2,$3,$4,$5,$6}'
echo "完整/dev/shm挂载信息:" >> "$log_file"
df -h /dev/shm >> "$log_file"
echo "修改后的/etc/security/limits.conf文件内容:" >> "$log_file"
cat /etc/security/limits.conf | grep -A 10 "#ORACLE SETTING" >> "$log_file"
echo -e "[SUCCESS] 资源限制及内存挂载配置完成"# 步骤10/15:配置系统环境变量(/etc/profile)
echo -e "\n【步骤10/15】配置系统环境变量..."
echo -e "\n===== 步骤10:配置/etc/profile =====" >> "$log_file"
chmod 644 /etc/profile
echo "添加Oracle用户环境变量到/etc/profile..." >> "$log_file"
cat <<EOF >>/etc/profile
if [ \$USER = "oracle" ]; thenif [ \$SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536elseulimit -u 16384 -n 65536fi
fi
EOF
source /etc/profile
echo "修改后的/etc/profile文件相关内容:" >> "$log_file"
cat /etc/profile | grep -A 10 "if [ \$USER = \"oracle\" ]" >> "$log_file"
echo -e "[SUCCESS] /etc/profile 配置完成"# 步骤11/15:准备Oracle安装目录及权限
echo -e "\n【步骤11/15】准备Oracle安装目录及权限..."
echo -e "\n===== 步骤11:准备Oracle安装目录及权限 =====" >> "$log_file"
install_dirs="/u01/app/oracle /u01/app/oraInventory /u01/app/oracle/product/19.0.0/dbhome_1"
echo "创建Oracle安装目录:${install_dirs}" >> "$log_file"
mkdir -p $install_dirs  # 保留详细输出到日志
echo "设置目录权限(oracle:oinstall,775)..." >> "$log_file"
chown -R oracle:oinstall /u01  # 保留详细输出到日志
chmod -R 775 /u01  # 保留详细输出到日志
# 屏幕只显示关键权限信息,完整ls输出写入日志
ls -ld /u01 | awk '{print $1,$3,$4,$9}'
echo "Oracle安装目录详细权限:" >> "$log_file"
ls -la /u01/app/ >> "$log_file"
echo -e "[SUCCESS] Oracle安装目录及权限设置完成"# 步骤12/15:配置Oracle用户环境变量(.bash_profile)
echo -e "\n【步骤12/15】配置Oracle用户环境变量..."
echo -e "\n===== 步骤12:配置oracle用户.bash_profile =====" >> "$log_file"
echo "添加Oracle环境变量到/home/oracle/.bash_profile..." >> "$log_file"
cat <<EOF >>/home/oracle/.bash_profile
#for oracle
umask=022
export PS1
export TMP=/tmp
export LANG=en_US.UTF8
export TMPDIR=\$TMP
export ORACLE_UNQNAME=orcl11g
export ORACLE_SID=orcl11g;
export ORACLE_BASE=/u01/app/oracle; 
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; 
export ORACLE_TERM=xterm; 
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS";
export NLS_LANG=AMERICAN_AMERICA.UTF8;
export PATH=.:\$PATH:\$HOME/.local/bin:\$HOME/bin:\$ORACLE_HOME/bin; 
export THREADS_FLAG=native;
export  LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib
export  CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
export ORACLE_OWNR=oracle        
export PATH=\$PATH:\$ORACLE_HOME/bin
EOF
source /home/oracle/.bash_profile
echo "修改后的.bash_profile文件内容:" >> "$log_file"
cat /home/oracle/.bash_profile | grep -A 25 "#for oracle" >> "$log_file"
echo "oracle用户环境变量验证:" >> "$log_file"
su - oracle -c "echo \$ORACLE_HOME; echo \$ORACLE_SID" >> "$log_file"
echo -e "[SUCCESS] oracle 用户环境变量配置完成"# 步骤13/15:移动并解压Oracle安装包
echo -e "\n【步骤13/15】移动并解压Oracle安装包..."
echo -e "\n===== 步骤13:移动并解压Oracle安装包 =====" >> "$log_file"
oracle_zip="/soft/LINUX.X64_193000_db_home.zip"
target_zip="/u01/app/oracle/product/19.0.0/dbhome_1/LINUX.X64_193000_db_home.zip"
if [ -f "$oracle_zip" ]; thenecho "移动Oracle安装包:${oracle_zip} -> ${target_zip}" >> "$log_file"mv "$oracle_zip" "$target_zip"  # 保留详细输出到日志cd /u01/app/oracle/product/19.0.0/dbhome_1echo -e "[INFO] 正在解压Oracle安装包(此过程可能需要几分钟)..."echo "开始解压Oracle安装包:${target_zip}" >> "$log_file"# 解压详细输出写入日志,屏幕不显示文件列表unzip LINUX.X64_193000_db_home.zip >> "$log_file" 2>&1if [ $? -eq 0 ]; thenecho -e "[SUCCESS] Oracle安装包移动并解压完成"echo "解压后目录大小:" >> "$log_file"du -sh /u01/app/oracle/product/19.0.0/dbhome_1 >> "$log_file"elseecho -e "[ERROR] Oracle安装包解压失败,详细日志请查看:${log_file}"fi
elseecho -e "[WARNING] 未找到 Oracle 安装包(${oracle_zip}),安装包解压跳过"echo "未找到Oracle安装包:${oracle_zip},跳过解压" >> "$log_file"
fi# 步骤14/15:配置安装响应文件(db_install.rsp)
echo -e "\n【步骤14/15】配置安装响应文件..."
echo -e "\n===== 步骤14:配置db_install.rsp =====" >> "$log_file"
response_dir="/u01/app/oracle/product/19.0.0/dbhome_1/install/response"
if [ -d "$response_dir" ]; thenmkdir -p /home/oracle/etcchown -R oracle.oinstall /home/oracle/etcecho "复制响应文件模板到/soft:${response_dir}/* -> /soft/" >> "$log_file"cp  "$response_dir"/* /soft/  # 保留详细输出到日志chmod 777 /soft/*.rspchown -R  oracle:oinstall /softecho "创建db_install.rsp响应文件:/soft/db_install.rsp" >> "$log_file"cat <<EOF >/soft/db_install.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
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.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dgdba
EOFchown -R  oracle:oinstall /soft/db_install.rspchmod 660 /soft/db_install.rspchown -R  oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1echo "db_install.rsp文件内容:" >> "$log_file"cat /soft/db_install.rsp >> "$log_file"echo -e "[SUCCESS] db_install.rsp 配置完成"
elseecho -e "[WARNING] 安装包解压目录不存在(${response_dir}),响应文件配置跳过"echo "安装包解压目录不存在:${response_dir},跳过响应文件配置" >> "$log_file"
fi# 步骤15/15:安装Oracle软件、配置监听及创建数据库(保留完整日志)
echo -e "\n【步骤15/15】安装Oracle软件及配置数据库...(此过程可能需要30分钟以上,请耐心等待)"
echo -e "\n===== 步骤15:安装Oracle软件及配置数据库 =====" >> "$log_file"
run_installer="/u01/app/oracle/product/19.0.0/dbhome_1/runInstaller"
db_rsp="/soft/db_install.rsp"
if [ -f "$run_installer" ] && [ -f "$db_rsp" ]; thenecho -e "[INFO] 正在安装Oracle软件..."echo "开始执行Oracle安装:${run_installer} -silent -responseFile ${db_rsp}" >> "$log_file"echo "Oracle安装详细日志开始($(date '+%Y-%m-%d %H:%M:%S')):" >> "$log_file"# 保留Oracle安装完整输出(包括进度、报错)写入日志su - oracle -c "$run_installer -silent -responseFile $db_rsp"echo "Oracle安装执行完成($(date '+%Y-%m-%d %H:%M:%S'))" >> "$log_file"echo "执行orainstRoot.sh脚本..." >> "$log_file"/u01/app/oraInventory/orainstRoot.sh  # 保留详细输出到日志echo "执行root.sh脚本..." >> "$log_file"/u01/app/oracle/product/19.0.0/dbhome_1/root.sh  # 保留详细输出到日志echo -e "\n[INFO] 正在配置监听..." netca_rsp_src="/u01/app/oracle/product/19.0.0/dbhome_1/assistants/netca/netca.rsp"netca_rsp="/soft/netca.rsp"if [ -f "$netca_rsp_src" ]; thenecho "复制监听配置文件:${netca_rsp_src} -> ${netca_rsp}" >> "$log_file"cp "$netca_rsp_src" "$netca_rsp"chmod 644 "$netca_rsp"echo "修改netca.rsp配置文件..." >> "$log_file"cat <<EOF >>"$netca_rsp"
[GENERAL]
RESPONSEFILE_VERSION="19.0"
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"}
EOFecho "netca.rsp文件内容:" >> "$log_file"cat "$netca_rsp" >> "$log_file"sleep 60echo "开始配置监听:netca -silent -responsefile ${netca_rsp}" >> "$log_file"# 保留监听配置完整输出到日志su - oracle -c "/u01/app/oracle/product/19.0.0/dbhome_1/bin/netca -silent -responsefile $netca_rsp"echo -e "[SUCCESS] 监听配置完成"echo "监听状态验证:" >> "$log_file"su - oracle -c "lsnrctl status" >> "$log_file"elseecho -e "[WARNING] 监听配置文件缺失(${netca_rsp_src}),监听配置跳过"echo "监听配置文件缺失:${netca_rsp_src},跳过监听配置" >> "$log_file"fiecho -e "\n[INFO] 正在创建数据库实例..." dbca_rsp_src="/u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/dbca.rsp"dbca_rsp="/soft/dbca.rsp"if [ -f "$dbca_rsp_src" ]; thenecho "复制数据库配置文件:${dbca_rsp_src} -> ${dbca_rsp}" >> "$log_file"cp "$dbca_rsp_src" "$dbca_rsp"chmod 644 "$dbca_rsp"echo "修改dbca.rsp配置文件..." >> "$log_file"cat <<EOF >>"$dbca_rsp"
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
templateName=General_Purpose.dbc
gdbName=orcl11g
sid=orcl11g
databaseConfigType=SI
sysPassword=Tiger@123
systemPassword=Tiger@123
characterSet=AL32UTF8
nationalCharacterSet=UTF8
listeners=LISTENER
memoryPercentage=40
databaseType=MULTIPURPOSE
automaticMemoryManagement=false
EOFecho "dbca.rsp文件内容:" >> "$log_file"cat "$dbca_rsp" >> "$log_file"sleep 60echo "开始创建数据库实例:dbca -silent -createDatabase ..." >> "$log_file"echo "数据库创建详细日志开始($(date '+%Y-%m-%d %H:%M:%S')):" >> "$log_file"# 保留数据库创建完整输出到日志su - oracle -c "/u01/app/oracle/product/19.0.0/dbhome_1/bin/dbca -silent -createDatabase -templateName /u01/app/oracle/product/19.0.0/dbhome_1/assistants/dbca/templates/General_Purpose.dbc -gdbname orcl11g -sid orcl11g -syspassword Tiger@123 -systempassword Tiger@123 -emConfiguration NONE -characterSet ZHS16GBK"echo "数据库创建执行完成($(date '+%Y-%m-%d %H:%M:%S'))" >> "$log_file"echo -e "[SUCCESS] 数据库实例创建完成"echo "数据库状态验证:" >> "$log_file"su - oracle -c "sqlplus -S / as sysdba <<EOF
select status from v\$instance;
exit;
EOF" >> "$log_file"elseecho -e "[WARNING] 数据库配置文件缺失(${dbca_rsp_src}),数据库创建跳过"echo "数据库配置文件缺失:${dbca_rsp_src},跳过数据库创建" >> "$log_file"fiecho -e "[SUCCESS] Oracle软件安装及数据库配置完成"
elseecho -e "[WARNING] 安装程序(${run_installer})或响应文件(${db_rsp})缺失,Oracle软件安装及数据库配置跳过"echo "安装程序或响应文件缺失:${run_installer} / ${db_rsp},跳过安装" >> "$log_file"
fiecho -e "\n==========================================================" >> "$log_file"
echo "Oracle 安装结束时间:$(date '+%Y-%m-%d %H:%M:%S')" >> "$log_file"
echo "==========================================================" >> "$log_file"echo -e "\n\e[1;32m###########################################################\e[0m"
echo -e "\e[1;32m#                     Oracle 安装流程完成                 #\e[0m"
echo -e "\e[1;32m###########################################################\e[0m"
echo -e "\n\e[1;33m安装完成提示:\e[0m"
echo -e "1. 安装日志路径:${log_file}(包含完整执行细节和报错信息)"
echo -e "2. 数据库信息:"
echo -e "   - SID:orcl11g"
echo -e "   - 端口:1521"
echo -e "   - 管理员账号:sys/system"
echo -e "   - 管理员密码:Tiger@123"
echo -e "3. 登录方式:su - oracle 后执行 sqlplus / as sysdba"
echo -e "4. 若安装失败,请查看日志文件排查问题(重点关注 [ERROR] 标记)"

目录文件:
image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/956005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员必逛的9个开发者社区推荐

程序员必逛的9个开发者社区推荐大家好,我是jobleap.cn的小九。 在技术飞速迭代的今天,开发者想要保持竞争力,离不开优质社区的滋养。无论是解决突发Bug、学习前沿技术,还是交流实战经验、寻找合作机会,合适的社区…

CleanMyMac X 4.14.2 dmg 安装教程|Mac 清理软件详细安装步骤

CleanMyMac X 4.14.2 dmg 安装教程|Mac 清理软件详细安装步骤​ CleanMyMac X​ 是一款专门为 ​Mac 电脑​ 设计的 ​系统清理和优化工具一、下载文件 CleanMyMac X 4.14.2.dmg​ 文件安装包下载: https://pan.quar…

java-迭代器

java-迭代器1.迭代器在遍历集合的时候是不依赖索引的 2.迭代器需掌握三个方法: Iteratorit=list.iterator(); while(it.hasNext()){ String str=it.next(); System.out.println(str); } 3.迭代器的四个细节: *如果当…

go语言访问新浪股票(hq.sinajs.cn)

config.go: package main// 股票代码配置 - 简化版本,只包含主要指数和热门股票 var stockSymbols = []string{// 主要指数"sh000001", // 上证指数"sh000016", // 上证50"sh000300", …

优化算法三剑客:SGD、Adam、AdamW的深度对比

优化算法三剑客:SGD、Adam、AdamW的深度对比 1. 引言:模型训练的"导航系统" 想象一下,你正在一个复杂的地形中寻找最低点(最小损失),四周浓雾弥漫(高维空间不可视)。优化算法就是你的GPS导航系统,它…

某大厂跳动面试:计算机网络相关问题解析与总结 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

动手动脑5

https://files.cnblogs.com/files/blogs/847696/动手动脑5.zip?t=1762256201&download=true程序在第5行有一个问题: int i=1, j=0, k; k=i/j; // 这里会在 try-catch 块之前就抛出异常,导致程序终止 正确的异常…

AI元人文:悟空机制与反思——论智能文明的自我超越之道

AI元人文:悟空机制与反思——论智能文明的自我超越之道 引言 “AI元人文”并非一个已完成的理论城堡,而是一个正在生长中的思想丛林。本文所探讨的“悟空机制”,与笔者此前在相关论述中提及的“决策机制”等概念,在…

从零开始搭建你的 Hexo 静态博客(支持 macOS 与 Windows)

从零开始搭建你的 Hexo 静态博客(支持 macOS 与 Windows)本文将手把手教你如何在 macOS 和 Windows 上使用 Hexo 搭建一个属于自己的静态博客,并部署到 GitHub Pages。文末还附带常见问题及解决方案,助你避开“坑”…

cmake也是个恶大的玩意

cmake也是个恶大的玩意/home/user# apt show scons Package: scons Version: 4.4.0+dfsg-1 Priority: optional Section: devel Maintainer: Laszlo Boszormenyi (GCS) <gcs@debian.org> Installed-Size: 2,671 …

实用指南:Python 运算符与列表(list)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

接口请求测试题目

接口请求测试题目1. 基础HTTP GET接口请求测试 操作步骤: 1. 打开JMeter,新建测试计划,右键添加“线程组”(线程数1、循环次数1)。 2. 线程组下添加“HTTP请求”,服务器名称/IP填写httpbin.org,端口80,请求方法…

iOS - 从 @property 开始

核心概念本质:@property 是一组访问器方法的声明 (setter/getter) ,编译器可以自动“合成”「访问器」以及「底层存储(ivar)」,并且允许用点语法调用。例如:@property (nonatomic) NSInteger age;编译器等价(自…

使用涡流效应将伽马射线收集到一起的装置

使用涡流效应将伽马射线收集到一起的装置 用中子轰击u235原子核产生伽马射线,通过螺旋线圈使伽马射线的运动轨道成为一个螺旋曲线。在这个螺旋曲线的上面安装一个超导线圈,在这个超导线圈上面安装另一个超导线圈,,…

ESP32 中断

中断 含义:程序被中断程序打断转去执行中断程序 将中断附加到GPIO void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode); ISR 函数原型 void ISR() {//中断发生时执行的代码 }外部中断类型…

25.11.4随笔联考总结

考试 正常通读题面,发现前面两道题比较可做。T3 挺神秘的,我猜那是子序列自动机 dp,T4 一道果的 ds 题。 开题顺序 2134,本来纠结了一会 34 先开谁,最后随缘了。几分钟会了 2 然后写了过了,通知要去体检于是中途…

docker 常用命令本地部署打包

要查看特定容器的挂载设置,请执行以下命令: docker inspect <容器ID或名称> 进入 Docker 容器内部 使用 docker exec 这是推荐的方法,特别是当你想打开一个新的终端会话时。docker exec 可以在运行中的容器中…

Linux中读写自旋锁rwlock的实现 - 详解

Linux中读写自旋锁rwlock的实现 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

用古代数论分析电磁波频谱

用古代数论分析电磁波频谱 下面介绍一种使用古代道教符箓图形,周天列曜星符,分析电磁感应中的电磁波频谱信号。周天列曜星符就是宇宙星辰的排列规律,有无数总画法。通过电路产生一种电磁波信号,或者用电路产生一个…

AddressSanitizer (ASan) is a fast memory error detector

AddressSanitizer (ASan) is a fast memory error detectorAddressSanitizer (ASan) 是由Google开发的内存错误检测工具,用于检测C/C++程序中的内存安全问题,如野指针、数组越界、堆栈溢出等‌。 它通过编译时插桩和…