干了这么多年Linux运维和Oracle DBA的活儿,最怕听到的一句话就是“帮我在服务器上装套Oracle”。Oracle安装本身并不难,难的是安装前那些绕不开的系统配置,还有各种依赖、权限、内核参数的坑。尤其是RedHat 6.8这种老系统,配Oracle 12c简直是经典组合——系统老但稳定,数据库版本也成熟,企业里存量相当大。
我这次就把整个安装过程完整记录下来,从环境准备、依赖包安装、内核参数调优、用户创建,到Oracle软件安装、监听配置、建库,全部走一遍。这篇文章不挑机器,RedHat 6.x、CentOS 6.x理论上都适用,只要你跟着步骤做好系统侧的准备,Oracle安装基本就是一路Next的事。适合刚接触Oracle的运维新手,也适合需要快速搭一套测试环境的老手直接抄作业。
1. 环境准备:装Oracle前先搞清楚这些硬指标
1.1 系统版本与Oracle版本的匹配关系
很多人上来就急着拷安装包、跑安装程序,结果卡在OUI(Oracle Universal Installer)的预检查阶段,报一堆“操作系统版本不受支持”或者依赖缺失的错误。先说结论:Oracle 12c Release 1(12.1.0.2)在RedHat 6.8上跑是完全没问题的,官方认证列表里也明确支持RHEL 6.x系列。
我这次用的环境是RedHat 6.8,内核版本2.6.32-642.el6.x86_64,Oracle版本是12.1.0.2.0 for Linux x86-64。这个组合在实际生产环境里非常多,尤其是金融、制造、政企这些偏保守的行业。如果你手里是CentOS 6.8或者6.9,同样适用这篇文章的步骤,因为CentOS和RHEL的包管理方式、内核参数配置路径完全一致。
有一点需要注意:Oracle 12c在安装时会自动检测操作系统发行版,如果它识别到的系统不在支持列表里,会给出一个警告而非错误,可以忽略继续。但如果在预检查阶段报了“Package缺失”那一类,就必须认真处理,否则就算强行装完,后面起库也容易出各种灵异问题。
1.2 硬件配置评估:内存、磁盘、SWAP怎么定
安装Oracle之前,先对自己手里的服务器资源做一个体检,这一步能省掉后面很多莫名其妙的报错。
内存方面,Oracle官方给12c的最低要求是1GB物理内存,但那是理论值,实际跑起来你会发现1GB连OUI图形界面都跑得费劲。我的经验是测试环境至少2GB,生产环境建议8GB起步。内存直接决定了内核参数kernel.shmmax和kernel.shmall怎么设置,后面我会详细说。
SWAP空间的推荐规则是:
- 物理内存1GB~2GB,SWAP设为物理内存的1.5倍
- 物理内存2GB~16GB,SWAP设为与物理内存相等
- 物理内存超过16GB,SWAP设为16GB即可
磁盘空间方面,Oracle 12c企业版完整安装大概需要6GB左右,但加上数据库文件、归档日志、安装过程中的临时文件,建议预留至少20GB。特别要注意/tmp目录,Oracle安装程序会在/tmp下创建大量临时文件,如果/tmp空间不足,会在解压安装包或运行root脚本时报“无法写入临时文件”的错。如果发现/tmp不够大,可以通过export TMP=/bigdir这种方式把它指到别的分区。
另外,64位系统和32位系统的区别也要提前确认。Oracle 12c在x86-64平台上的安装包是2个zip文件(linuxx64_12201_database.zip分卷),解压后是一个database目录,大小在3GB左右。如果你的服务器是32位系统,那得单独下载32位的安装包,本文所有步骤基于64位系统。
2. 安装前的系统配置:磨刀不误砍柴工
2.1 配置本地Yum源与安装依赖包
RedHat 6.8的系统盘自带了绝大多数Oracle依赖的rpm包,最省事的做法是把系统ISO挂载成本地yum源,然后直接用yum安装依赖。这里分享一个我常用的配置方法,避免你在内网环境里下载依赖包下载到怀疑人生。
# 挂载系统ISO到/mnt mount -o loop /dev/cdrom /mnt # 创建repo文件 cat > /etc/yum.repos.d/local.repo << EOF [local] name=local repository baseurl=file:///mnt/Packages enabled=1 gpgcheck=0 EOF # 清理缓存并检查可用包 yum clean all yum repolist如果服务器没有光驱和ISO文件,也可以从网易镜像、阿里镜像下载rpm包手动安装,但我强烈不推荐这种方式,依赖关系会把你折腾疯。还是本地yum源最省心。
依赖包是Oracle安装前最容易踩坑的地方。Oracle 12c在RedHat 6.x上需要的依赖包列表可以在安装介质里的database/stage/cvu/cv/rpm/cvuqdisk-1.0.10-1.rpm附近找到,但OUI预检查时会更精确地告诉你缺什么。根据我的实操经验,核心依赖包括:
- binutils
- compat-libcap1
- compat-libstdc++-33
- gcc、gcc-c++
- glibc、glibc-devel
- ksh
- libaio、libaio-devel
- libgcc、libstdc++、libstdc++-devel
- libXext、libXtst、libX11、libXau、libXi
- make、sysstat
- unixODBC、unixODBC-devel
其中需要特别注意,有些包是32位和64位都要装的,比如glibc.i686、libgcc.i686、libstdc++.i686这些,如果只装64位版本,OUI预检查还是会报缺失。
yum install -y binutils compat-libcap1 compat-libstdc++-33 \ gcc gcc-c++ glibc glibc-devel glibc.i686 glibc-devel.i686 \ ksh libaio libaio-devel libaio.i686 libaio-devel.i686 \ libgcc libgcc.i686 libstdc++ libstdc++.i686 \ libstdc++-devel libstdc++-devel.i686 \ libXext libXtst libX11 libXau libXi \ make sysstat unixODBC unixODBC-devel这里有一个小坑要提醒你:RedHat 6.8自带的包版本可能和Oracle 12c要求的不完全一致,比如compat-libstdc++-33这个包,有可能在Packages目录下的名称是compat-libstdc++-33-3.2.3-69.el6.x86_64.rpm,yum安装时一般能自动处理好,但如果yum提示找不到包,可以去ISO的Packages目录里挨个找,找到后用rpm -ivh手动装。
2.2 内核参数调整与资源限制设置
Linux内核参数直接决定了Oracle数据库能使用多少共享内存、能打开多少文件、能建立多少信号量。这一节我给的参数都是从实际项目中验证过的,你直接照抄就行。
编辑/etc/sysctl.conf,加入以下内容:
# Oracle 12c required kernel parameters fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 536870912 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 vm.dirty_ratio = 15 vm.dirty_background_ratio = 3然后执行sysctl -p让配置立即生效。
这几个参数里最常用也最容易被忽略的是kernel.shmmax和kernel.shmall。shmmax表示单个共享内存段的最大大小,官方要求不小于物理内存的一半,我给的536870912是512MB的值,如果你的机器内存大于1GB,建议根据实际情况调整,计算公式是:内存字节数/2,比如8GB内存可以设置为4294967296(4GB)。shmall是共享内存页总数,一般公式是物理内存字节数/page_size,在x86-64 Linux上页大小通常是4096字节,所以8GB内存的话shmall可以设成2097152(2GB×1024×1024/4096)。
kernel.sem那四个数字分别代表信号量数组最大值、系统内最大信号量数、每个信号量组的信号量数、系统内最大信号量组数,直接用官方推荐值250 32000 100 128就没问题。
接下来编辑/etc/security/limits.conf,给oracle用户设置资源限制:
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768注意nproc是进程数限制,nofile是文件句柄数限制,stack是栈大小限制。很多人在这一步会漏掉stack设置,导致后续安装时报“Insufficient stack size”之类的问题。
还有一个容易被忽略的是/etc/pam.d/login文件。如果系统里开了pam_limits模块,需要在login文件里确认有这一行:
session required pam_limits.soRedHat 6.8默认是有的,但有些精简过的系统可能被阉割了,如果没有就手动加上。
2.3 创建用户、组与目录结构
Oracle不允许用root用户直接安装数据库软件,所以需要创建专用的操作系统用户和组。官方推荐的用户组规划是:
- oinstall组:Oracle软件所有者基组,通常作为主组
- dba组:具备数据库管理员权限的组,通常作为附加组
groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle这里解释一下为什么要把dba作为附加组而不是主组。oinstall是安装软件时使用的INVENTORY目录(/u01/app/oraInventory)的所有者组,而dba组用于管理数据库实例。如果以后要加其他运维人员,只需要把他加进dba组就有管理权限了,而不用动软件安装目录的归属。
接下来创建Oracle的安装目录,并赋予正确的属主权限:
mkdir -p /u01/app/oracle/product/12.1.0/dbhome_1 mkdir -p /u01/app/oradata chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app关于目录规划,我多说一句。ORACLE_BASE我习惯放在/u01/app/oracle,ORACLE_HOME放在/u01/app/oracle/product/12.1.0/dbhome_1,数据目录用独立的/u01/app/oradata单独规划。如果有条件,建议把数据目录放到独立的磁盘分区或存储上,避免日志和数据争抢IO。
2.4 配置oracle用户环境变量
用oracle用户登录后编辑~/.bash_profile,把下面这些内容加进去:
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1 export ORACLE_SID=orcl export PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export TMP=/tmp export TMPDIR=/tmpORACLE_SID是数据库实例名,你可以按自己需求改成其他名字,比如test、prod都行,但要注意一个实例名只能有一个数据库。NLS_LANG建议设置为AMERICAN_AMERICA.AL32UTF8,避免数据库字符集和客户端不一致导致中文乱码。如果你要装中文字符集,可以设置成SIMPLIFIED CHINESE_CHINA.AL32UTF8,但我个人建议都用UTF8,兼容性更好。
设置好后执行source ~/.bash_profile使变量生效,用echo $ORACLE_HOME确认一下路径没问题。
3. Oracle 12c安装过程实录:从解压到建库全套
3.1 解压安装介质与安装前检查
把Oracle 12c的安装包上传到服务器后,先做一件事——校验文件完整性。Oracle官方的安装包都是zip格式分卷压缩的,如果上传过程中文件损坏,解压时会直接报错或者中途失败。校验MD5最稳妥,但如果你懒得算MD5,至少也得确保两个zip文件大小完全一致。
# 切换目录并解压 cd /u01/software unzip linuxx64_12201_database.zip # 如果是两个分卷 unzip linuxx64_12201_database.zip unzip linuxx64_12201_database_2of2.zip解压完成后会生成一个database目录,里面主要包含runInstaller、response目录、stage目录等。确认一下runInstaller有执行权限:
ls -l database/runInstaller然后在root用户下执行Oracle自带的环境检查脚本,这一步可以提前暴露很多问题:
cd /u01/software/database ./runInstaller -executeSysPrereqs -responseFile /u01/software/database/response/db_install.rsp这个命令会静默执行安装前的系统预检查,并输出一份检查结果。如果输出中有某个package is missing之类的报错,就回到刚才yum安装那一步把缺的包补上。
如果你准备用图形界面安装,还需要确保X Window环境可用,或者你通过VNC、Xmanager这类工具连到了服务器的图形界面。关于远程图形安装的坑,我在后面常见问题里会专门讲。
3.2 runInstaller安装Oracle数据库软件详解
这是整个安装过程的核心环节。我以图形化安装为例,因为对新手来说图形界面最直观,出错概率也最低。静默安装的方案在下一节单独讲。
以oracle用户身份,在图形环境下执行:
cd /u01/software/database ./runInstaller启动后进入OUI界面,关键步骤我来逐项解读:
配置安全更新(Configure Security Updates):这个页面直接取消勾选“I wish to receive security updates via My Oracle Support”,这是Oracle强推的订阅通知,本地安装完全不需要。
安装选项(Installation Option):选择“Install database software only”。如果你选“Create and configure a database”,OUI会连建库一起做完,但那样出错了不好排查,而且建库的灵活性比较差。我习惯先单独装软件,再用DBCA建库,两步分开做,问题定位清楚很多。
数据库安装类型(Database Installation Type):选“Single instance database installation”。RAC集群安装需要Grid Infrastructure,不是本文讨论范围。
语言选择(Database Languages):默认English就行,如果业务需要中文,把Simplified Chinese也勾上。这里补充一点:这个语言选项影响的是客户端工具的语言显示,不影响数据库实际存储的字符集。
企业版还是标准版(Database Edition):按你的License选。企业版功能全,但如果你只是测试,标准版也够用。两者安装时间差别不大。
安装位置(Installation Location):这里会自动读取oracle用户环境变量里的ORACLE_BASE和ORACLE_HOME。正常情况下OUI会自动识别,如果显示的路径不对,手动改成:
- Oracle Base: /u01/app/oracle
- Software Location: /u01/app/oracle/product/12.1.0/dbhome_1
操作系统组(Operating System Groups):
- Oracle Inventory Directory: /u01/app/oraInventory,所属组选oinstall
- OS DBA Group: 选择dba
- OS Operator Group: 选择dba
这些组就是我们之前在系统里创建好的,OUI会自动列出可选项,确认无误就下一步。
前置检查(Prerequisite Checks):这是所有新手最紧张的一步。OUI会自动检测内核参数、依赖包、内存、磁盘空间等。如果出现警告,先看是“Warning”还是“Error”。Warning一般可以强制继续,比如系统版本识别偏差这类;Error必须解决,比如缺少某个rpm包。
检查完成后,点击“Install”开始正式安装,这一步大概需要15~20分钟。安装过程中会有一个进度条,以及一个提示你“以root身份执行orainstRoot.sh脚本”的窗口。这时候别急着点OK,先把root脚本执行完:
# 切换到root用户,执行两个脚本 /u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/12.1.0/dbhome_1/root.shorainstRoot.sh主要是在Inventory目录里写入权限配置,root.sh会创建/etc/oratab文件并为bin目录下的某些可执行文件设置root权限。执行root.sh的时候,它会问你本地bin目录路径,直接回车默认值就行。
脚本执行完,回到OUI窗口点OK,安装就完成了。
3.3 静默安装方案:没有图形环境怎么装
很多时候服务器是放在机房里,没有显示器,或者远程图形工具没开通,这时候就用静默安装。静默安装的核心是response file,也就是把安装界面里的所有选项预先填写到配置文件里。
Oracle安装介质自带了一个模板响应文件,位于database/response/db_install.rsp。我们需要改几个关键参数:
cd /u01/software/database/response cp db_install.rsp db_install_my.rsp vi db_install_my.rsp需要修改的参数是:
oracle.install.option=INSTALL_DB_SWONLY UNIX_GROUP_NAME=oinstall INVENTORY_LOCATION=/u01/app/oraInventory ORACLE_BASE=/u01/app/oracle oracle.install.db.InstallEdition=EE oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=dba oracle.install.db.OSBACKUPDBA_GROUP=dba oracle.install.db.OSDGDBA_GROUP=dba oracle.install.db.OSKMDBA_GROUP=dba oracle.install.db.OSRACDBA_GROUP=dba oracle.install.db.CLUSTER_NODES= oracle.install.db.config.starterdb.type=GENERAL_PURPOSE oracle.install.db.config.starterdb.globalDBName=orcl oracle.install.db.config.starterdb.SID=orcl注意其中SECURITY_UPDATES_VIA_MYUORACLESUPPORT和DECLINE_SECURITY_UPDATES这两项,如果不想收邮件,必须设置:
DECLINE_SECURITY_UPDATES=true否则安装会卡在检查更新这一环。修改完成后,以oracle用户执行:
./runInstaller -silent -responseFile /u01/software/database/response/db_install_my.rsp控制台会弹出日志输出,安装完成后,同样需要以root身份执行orainstRoot.sh和root.sh。
静默安装有一点要注意:它不是完全不交互,在root脚本执行那一步仍然需要你手动干预。除非你写一个expect脚本去自动执行root脚本,否则整个安装过程不算100%无人值守。
3.4 配置监听器与创建数据库
软件装好之后,接下来要做两件事:配置监听器(listener)和创建数据库。
配置监听器:用Oracle自带的netca工具,图形和静默两种方式我都用过,推荐静默方式,一个命令搞定:
# 以oracle用户执行 netca -silent -responseFile $ORACLE_HOME/assistants/netca/netca.rsp如果不想编辑response文件,也可以直接交互式运行netca,在图形界面里一路默认配置。监听器默认端口是1521,监听服务名是LISTENER。配置完成后,用lsnrctl status查看监听状态,如果看到“The command completed successfully”,说明监听起来了。
用DBCA创建数据库:DBCA是Oracle的建库工具,同样支持图形和静默两种方式。
图形方式:
dbca在DBCA界面中,选择“Create a database”,数据库模板选“General Purpose or Transaction Processing”,全局数据库名和SID都填orcl(跟你环境变量里设置的保持一致)。内存大小建议按物理内存的40%~60%来分,比如8GB内存给SGA+PGA合计4GB左右。
这里特别讲一下12c的多租户架构。DBCA建库时,会有一步询问“Create As Container Database”,这是12c的新特性,允许数据库作为容器数据库(CDB),里面可以包含多个可插拔数据库(PDB)。如果你只是简单用用,建议直接勾选“Create as Container Database”并创建一个PDB,这样既能跟上12c的新特性,也不影响日常使用。如果后续要兼容老的11g操作习惯,可以不勾选,保持非容器数据库模式。
静默方式建库,可以写一个简单的响应文件:
dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName orcl -sid orcl \ -sysPassword Oracle123 -systemPassword Oracle123 \ -emConfiguration NONE \ -memoryPercentage 40 \ -storageType FS \ -datafileDestination /u01/app/oradata \ -characterSet AL32UTF8 \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName orclpdb执行后大概需要10~20分钟,视磁盘IO而定。期间如果看到日志停在某一处很久,别着急,建库过程本来就有几个阶段。
建库完成后,用sqlplus / as sysdba验证一下能否正常登录:
sqlplus / as sysdba SQL> select status from v$instance;如果输出OPEN,说明数据库已经正常运行了。
4. 常见问题与排查技巧实录
这一节我把自己这些年装Oracle 12c踩过的坑和解决办法整理成速查表,遇到问题直接对号入座。
4.1 依赖包检测失败:最让人抓狂的一类问题
现象:OUI预检查时弹出“Package: libstdc++-devel-4.4.7-3.el6.x86_64 is missing”之类的Error。明明yum shows已经装了,为什么还报缺少?
原因:OUI要求的是精确版本号或者最低版本号,你装的版本可能比它要求的低,或者架构对不上。还有一种可能是系统里装了多个版本,OUI检测到了旧版本。
解决办法:先确认系统里实际的包版本:
rpm -q libstdc++-devel libaio-devel glibc-devel如果版本偏低,用yum update更新到和ISO内一致,或者从ISO Packages目录找到新版本手动装。如果版本够了还报错,可能是OUI的bug,可以尝试在预检查页面点“Ignore All”强行继续。我在RedHat 6.8上遇到过unixODBC版本比要求低的情况,检查后确认不影响实际使用,直接忽略并通过了。
4.2 图形界面启动失败:DISPLAY变量问题
现象:执行./runInstaller报“Cannot find a valid Java Runtime”或者“DISPLAY not set”。
原因:runInstaller是基于Java的图形程序,需要X Window环境。你如果是在SSH终端里执行,必须设置DISPLAY变量并确保本地有X Server。
解决办法:三种思路。
一是用VNC远程桌面,先启动VNC服务端:
vncserver :1 export DISPLAY=:1二是用X11转发,通过SSH的-X参数登录:
ssh -X oracle@服务器IP三是Windows下用Xmanager、MobaXterm这类工具,它们自带X Server,连上后runInstaller图形界面会直接弹到你本机。
4.3 内存或内核参数检查不通过
现象:预检查提示“kernel.shmmax is too small”或者“Insufficient memory”。
解决办法:shmmax的问题直接用sysctl -w临时修改或持久化到/etc/sysctl.conf。内存不足的提示,先free -m确认实际内存,如果内存确实少,建议加内存或者缩小Oracle的SGA配置。有些时候是DBCA的memoryPercentage配得太大,导致虚拟内存检查不通过,可以调小比例后重试。
请注意,修改内核参数后需要重新登录oracle用户才能生效,因为ulimit这些限制是在登录时读取的。很多人在limits.conf里加了配置,但没重新登录就运行runInstaller,结果还是报资源限制错误,白折腾半天。
4.4 安装过程中出现oraInst.loc无法读写
现象:安装进行到某个阶段,报“OUI-10054: You do not have sufficient permission to write to the inventory directory”。
原因:oracle用户对/u01/app/oraInventory目录没有写权限,或者Inventory目录的属主不对。
解决办法:检查一下Inventory目录的属主和权限:
ls -ld /u01/app/oraInventory正常情况下属主应该是oracle:oinstall。如果不对,用root改:
chown -R oracle:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventory4.5 oracle用户无法使用lsnrctl和sqlplus命令
现象:软件装完之后,oracle用户执行lsnrctl报“command not found”。
解决办法:这是环境变量没配好,确认.bash_profile里的PATH是否包含$ORACLE_HOME/bin,并且已经source过。还有一个容易犯的错是,用root用户切换到oracle用户时用了su -,如果oracle用户的家目录下环境变量文件有问题,切换进来一样是空环境。建议用su - oracle完整加载环境,并先执行echo $ORACLE_HOME验证。
4.6 常见问题速查表
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 预检查报Package缺失 | 依赖包没装全或版本不符 | yum安装缺失包,必要时用rpm手动装精确版本 |
| runInstaller没有图形界面 | DISPLAY未设置 | 配置VNC或X11转发 |
| shmmax/shmmni检查失败 | 内核参数设置不对 | 修改/etc/sysctl.conf并sysctl -p |
| /tmp空间不足 | 安装包解压占用过多临时空间 | 清理/tmp或export TMP指向其他分区 |
| 执行root.sh报权限错误 | 脚本运行时当前用户不是root | 用root执行orainstRoot.sh和root.sh |
| dbca建库卡住不动 | 内存分配过小或IO太慢 | 增大SWAP,降低memoryPercentage,等待观察日志 |
| sqlplus登录报ORA-12541 | 监听器未启动 | lsnrctl start启动监听 |
| sqlplus登录报ORA-01034 | 数据库实例没有启动 | startup启动数据库实例 |
4.7 安装完成后必做的几件事
装好Oracle不代表万事大吉,有几个配置建议你在正式使用前做完。
一是把数据库设为开机自启动。编辑/etc/oratab文件,把最后一行的N改成Y:
orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y然后在/etc/rc.local里加入监听和数据库启动命令:
su - oracle -c "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start" su - oracle -c "/u01/app/oracle/product/12.1.0/dbhome_1/bin/dbstart"二是打开数据库的归档模式。生产环境非常重要,不然数据文件损坏时想恢复都难:
sqlplus / as sysdba SQL> shutdown immediate; SQL> startup mount; SQL> alter database archivelog; SQL> alter database open;三是设置好数据库密码策略。测试环境经常用Oracle123这种弱密码,生产环境千万别这么干,至少给SYS和SYSTEM设置12位以上的强密码,并定期更换。
5. 卸载与重装:万一装坏了怎么办
Oracle装失败、想重装的情况太常见了,这里把卸载的步骤一并写出来,方便你清理干净重新来。
先停止所有Oracle相关进程:
# 以oracle用户执行 lsnrctl stop sqlplus / as sysdba SQL> shutdown immediate; SQL> exit再用root身份删除配置文件和目录:
rm -rf /u01/app/oracle rm -rf /u01/app/oraInventory rm -rf /u01/app/oradata rm -f /etc/oratab rm -f /etc/oraInst.loc清理用户和环境变量(可选,如果不再用oracle用户):
userdel -r oracle groupdel dba groupdel oinstall清理内核参数(把你在/etc/sysctl.conf里加的Oracle相关行删掉),然后重启服务器,让系统环境彻底干净。重装的时候,严格按本文第2、3节的步骤走一遍就行。
我个人在实操中的体会是:Oracle安装失败,90%的原因出在“系统准备不充分”而不是Oracle软件本身。只要你把依赖包、内核参数、用户目录、环境变量这四件事做扎实,安装流程基本是畅通无阻的。如果中途真的遇到没见过的问题,一定先去看日志,常见的有/u01/app/oraInventory/logs/installActions*.log和$ORACLE_HOME/cfgtoollogs/dbca下的日志,很多报错在日志里会有详细描述,比网上搜答案高效得多。
最后再分享一个小技巧:整个安装过程建议用script命令录屏,把操作过程完整记录下来:
script /tmp/oracle_install.log装完之后翻一翻这个日志,能帮你复盘整个过程中的每一步,尤其是那些当时没在意、后来出问题才想起来的环境变更。这个方法我在帮客户做数据库上线审计时经常用,关键时刻能救人一命。