1. 项目概述与核心价值
最近在帮几个朋友的公司做数据库架构梳理,发现一个挺有意思的现象:虽然现在各种开源和云数据库很火,但不少传统企业,尤其是金融、制造这些对数据一致性、稳定性要求极高的行业,核心系统里Oracle依然是那个“定海神针”。特别是Oracle 19c,作为长期支持版本,未来几年都会是很多企业升级或新建系统的首选。但说实话,从零开始装一个Oracle,对很多刚入行的DBA或者开发兄弟来说,依然是个不小的挑战。网上的教程要么太老,要么步骤跳得太快,照着做总会在某个环节卡住,比如监听器起不来、PL/SQL Developer连不上,最后只能对着报错干瞪眼。
我自己这些年从11g、12c一路装到19c,踩过的坑不计其数。今天我就把自己在Linux(以CentOS 7为例)上安装、配置Oracle 19c,再到安装使用PL/SQL Developer连接的全过程,以及最后如何干净卸载,掰开揉碎了讲一遍。我的目标很简单:让你看完这篇,能拿着一台干净的Linux服务器,从头到尾独立完成一套可用的Oracle 19c环境搭建,并且知道每一步背后的“为什么”,出了问题也知道去哪儿查。这不仅仅是安装,更是一次对Oracle数据库基础架构的深度理解。
2. 环境准备与规划:兵马未动,粮草先行
安装Oracle,最忌讳的就是拿到安装包就开干。前期规划没做好,后面全是坑。我们先得把“战场”打扫干净,资源分配明白。
2.1 系统环境检查与要求
Oracle 19c对操作系统有明确要求。我们以CentOS 7.9为例,这是目前企业里比较常见且稳定的版本。
首先,用命令确认系统版本和内核:
cat /etc/redhat-release uname -r输出应该类似“CentOS Linux release 7.9.2009 (Core)”和“3.10.0-1160.el7.x86_64”。内核版本3.10.0-1160以上基本都行。
接下来是硬件,这是很多人容易忽略的地方。Oracle安装程序会做预检查,但我们可以提前自查:
- 内存:至少4GB,建议8GB以上。运行
free -g查看。 - 交换空间:这是个重点。Oracle官方有计算公式,但为了省事,我们可以记个经验值:物理内存8GB以下,交换空间设为内存的1.5倍;8GB到16GB,等于内存大小;超过16GB,设为16GB。用
free -g也能看,不够的话需要手动添加。 - 磁盘空间:安装软件本身需要约10GB,但数据库文件才是大头。对于学习或测试环境,建议
/u01目录(我们通常把Oracle装这里)至少有50GB空间。用df -h检查。
注意:交换空间不足是安装失败的一个常见原因,尤其是在虚拟机上。如果检查发现不够,一定要在安装前扩容。
2.2 创建Oracle用户与组
Oracle不建议直接用root用户安装和运行数据库。我们需要创建专门的用户和组。
# 1. 创建主要的oinstall组(软件所有者组)和dba组(数据库管理员组) groupadd oinstall groupadd dba # 2. 创建oracle用户,主组为oinstall,附加组为dba,并指定家目录 useradd -g oinstall -G dba -d /home/oracle oracle # 3. 为oracle用户设置密码 passwd oracle这里有个关键点:oinstall组是软件安装组的成员,拥有Oracle软件的安装目录权限;dba组成员可以执行数据库管理操作,比如启动关闭实例、创建用户等。把oracle用户同时放在这两个组里,就赋予了它完整的操作权限。
2.3 配置系统内核参数与资源限制
Oracle数据库是个资源消耗大户,Linux默认的某些内核参数和用户资源限制可能不够用,需要调整。这些参数写在/etc/sysctl.conf和/etc/security/limits.conf文件里。
内核参数 (/etc/sysctl.conf):
# 编辑文件 vi /etc/sysctl.conf # 在文件末尾添加或修改以下参数。数值仅供参考,生产环境需根据实际情况调整。 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 # 共享内存总页数,单位是页(通常4KB) kernel.shmmax = 4294967295 # 单个共享内存段的最大字节数,这里约4GB 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 # 保存后,使配置立即生效 sysctl -p解释一下kernel.shmmax和kernel.shmall:Oracle使用共享内存来存放SGA(系统全局区)。shmmax定义了单个内存段能有多大,shmall定义了系统总共能分配多少共享内存页。设置太小会导致数据库启动失败。
用户资源限制 (/etc/security/limits.conf):
# 编辑文件 vi /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 32768nproc是进程数,nofile是打开文件数。数据库运行时需要打开很多数据文件和建立很多进程,默认限制可能不够。
2.4 创建目录结构与设置权限
清晰的目录结构能让后期管理事半功倍。我习惯采用OFA(Optimal Flexible Architecture)推荐的结构。
# 创建顶级目录,通常放在空间较大的分区,比如/u01 mkdir -p /u01/app/oracle mkdir -p /u01/app/oraInventory mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 # 将目录所有权赋予oracle用户和oinstall组 chown -R oracle:oinstall /u01/app chmod -R 775 /u01/app/u01/app/oracle:这是ORACLE_BASE,Oracle软件的“大本营”。/u01/app/oracle/product/19.3.0/dbhome_1:这是ORACLE_HOME,具体版本的软件安装目录。/u01/app/oraInventory:这是Oracle的“中央库存目录”,记录所有Oracle产品的安装信息。
3. 软件安装与数据库创建:步步为营
环境配好了,终于可以请出主角——Oracle 19c的安装包了。我们使用Oracle Universal Installer (OUI)进行图形化安装,这是最直观的方式。
3.1 获取安装包与依赖检查
从Oracle官网下载Linux x86-64版本的19c安装包,通常是两个zip文件:LINUX.X64_193000_db_home.zip。把它上传到服务器的某个临时目录,比如/tmp。
安装前,需要一大堆系统依赖包。用yum一键安装最省事:
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make nfs-utils net-tools smartmontools sysstat elfutils-libelf-devel psmisc unzip如果下载慢,可以配置国内的yum源。安装完成后,可以运行Oracle提供的预检查脚本runcluvfy.sh,但更直接的方法是启动安装程序,它自己会检查并提示缺失的包。
3.2 配置Oracle用户环境变量
切换到oracle用户,配置它的shell环境(假设用的是bash)。
su - oracle vi ~/.bash_profile在文件末尾添加以下关键环境变量:
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=orcl # 你的数据库实例名,可自定义 export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 设置字符集,避免中文乱码ORACLE_SID是实例名,是连接数据库时的重要标识。NLS_LANG一定要设,特别是后续用PL/SQL Developer时,如果这里不设成UTF8,中文数据很容易变成乱码。
保存后,执行source ~/.bash_profile让配置生效。
3.3 图形化安装过程详解
因为OUI是图形界面,我们需要在服务器上配置显示,或者更常见的,在本地Windows上用Xmanager等X11转发工具连接过去。这里假设你用Xshell配合Xmanager。
- 解压安装包:在oracle用户下,进入ORACLE_HOME目录解压。
cd $ORACLE_HOME unzip /tmp/LINUX.X64_193000_db_home.zip - 启动安装:执行
./runInstaller。如果一切正常,会弹出熟悉的图形界面。 - 安装选项:
- 第一步:配置安全更新。这里可以直接取消勾选“我希望通过My Oracle Support接收安全更新”,并跳过邮箱填写,否则可能会因为网络问题卡住。
- 第二步:安装选项。选择“创建和配置数据库”。
- 第三步:系统类。选择“服务器类”,功能更全。
- 第四步:安装类型。对于学习,选“单实例数据库安装”即可。
- 第五步:安装位置。这里会自动读取我们之前设置的
ORACLE_BASE和ORACLE_HOME,检查一下是否正确。 - 第六步:产品清单目录。确认是
/u01/app/oraInventory。 - 第七步:配置类型。选择“典型安装”,方便快捷。
- 全局数据库名:比如
orcl(和ORACLE_SID一致)。 - 管理口令:为SYS、SYSTEM等管理员用户设置密码。务必记牢!建议符合Oracle复杂度要求(大小写字母、数字、特殊字符)。
- 字符集:默认AL32UTF8,兼容中文,不要改。
- 创建为容器数据库:建议勾选。19c默认是多租户架构(CDB),里面可以创建多个可插拔数据库(PDB),这是趋势。
- 全局数据库名:比如
- 第八步:执行先决条件检查。安装程序会自动检查。如果前面依赖包没装全,这里会报错,按照提示缺啥装啥就行。
- 第九步:概要。确认所有信息。
- 第十步:安装产品。点击安装,就泡杯茶等着吧。这个过程会安装软件并自动创建一个数据库。
- 执行脚本:安装到最后,会弹出一个小窗口,提示需要用root权限执行两个脚本。不要关闭安装程序!新开一个终端,用root登录,依次执行:
执行/u01/app/oraInventory/orainstRoot.sh /u01/app/oracle/product/19.3.0/dbhome_1/root.shroot.sh时,可能会问本地bin目录路径,直接回车用默认值就行。 - 完成:脚本执行成功后,回到安装程序点击“确定”,然后“关闭”。恭喜,数据库软件和实例都装好了!
3.4 验证安装与数据库状态
安装完第一件事就是确认数据库是否正常跑起来了。
# 切换回oracle用户 su - oracle # 检查数据库实例进程 ps -ef | grep pmon # 应该能看到一个类似 `ora_pmon_orcl` 的进程,说明实例已启动。 # 使用sqlplus连接数据库 sqlplus / as sysdba SQL> select status from v$instance; # 应该返回 `OPEN` SQL> select name, open_mode from v$database; # 查看数据库名和打开模式 SQL> exit;如果v$instance状态是OPEN,说明数据库运行正常。/ as sysdba是操作系统认证,因为oracle用户在dba组里,所以可以直接以sysdba身份登录,无需密码。
4. 网络配置与监听器:打通连接之路
数据库装好了,但还在“深闺”里,外部客户端(比如PL/SQL Developer)还连不上。这就需要配置监听器(Listener),它像数据库的“前台接待”,负责处理网络连接请求。
4.1 监听器配置文件解析
监听器的配置在$ORACLE_HOME/network/admin/listener.ora文件里。安装程序通常已经创建了一个默认的。
vi $ORACLE_HOME/network/admin/listener.ora典型内容如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521)) ) )LISTENER:监听器名称,默认就叫LISTENER。HOST:这里建议不要用主机名(可能解析有问题),直接改成服务器的IP地址,比如192.168.1.100。PORT:默认1521,这是Oracle的经典端口,除非冲突否则别改。
4.2 启动与管理监听器
# 启动监听器 lsnrctl start # 查看监听器状态 lsnrctl status运行status后,在“服务摘要”部分,你应该能看到你的数据库实例(如orcl)及其服务名(如orcl.oracle.com),状态为“READY”。这说明监听器已经成功注册了数据库服务。
如果状态不对,检查listener.ora中的HOST是否指向了正确的IP,并确保防火墙放行了1521端口:
# CentOS 7 使用firewalld firewall-cmd --permanent --add-port=1521/tcp firewall-cmd --reload4.3 配置客户端网络服务名 (TNS)
客户端要连接,需要知道数据库的“地址簿”,这就是tnsnames.ora文件。它在客户端机器上(比如你的Windows电脑),但原理和服务器端类似。
在你安装PL/SQL Developer的Windows电脑上,找到%ORACLE_HOME%\network\admin\tnsnames.ora(如果你装了Oracle客户端),或者放在PL/SQL Developer的安装目录下。添加如下配置:
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) # 或者是你数据库的实际服务名,安装时设定的 ) )这个ORCL就是你将来在PL/SQL Developer里填的“连接名”。HOST填数据库服务器的IP,SERVICE_NAME填数据库的服务名(可以用sqlplus登录后执行show parameter service_name查看)。
实操心得:连接问题十有八九出在网络配置上。
listener.ora的HOST用IP,tnsnames.ora的配置和服务名对应,防火墙端口开放,这三条检查完,大部分连接问题都能解决。
5. PL/SQL Developer安装、配置与核心使用
Oracle自带的sqlplus是命令行工具,效率高但不够友好。PL/SQL Developer是Windows下最流行的Oracle开发管理GUI工具。
5.1 安装与初始配置
- 安装:从官网下载安装包,一路“下一步”即可。注意安装路径不要有中文和空格。
- 首次启动与连接配置:
- 启动PL/SQL Developer,它会弹出登录窗口。
- Username:
system(或其他有权限的用户,如你自己创建的用户) - Password: 安装数据库时设置的密码
- Database: 这里就填你在
tnsnames.ora里配置的连接名,比如ORCL - Connect as:
Normal - 如果
tnsnames.ora文件位置正确,点击“OK”就能连上。
- 配置OCI库(关键步骤):为了让PL/SQL Developer能正常工作(特别是导出数据、调试等),需要指定OCI库。
- 菜单栏:Tools -> Preferences -> Connection。
- 在“Oracle Home”里,浏览到你Windows上Oracle Instant Client的安装目录(如果你没装完整客户端,强烈建议下载一个Instant Client Basic包解压到某个路径,例如
C:\instantclient_19_10)。 - 在“OCI library”里,指定该目录下的
oci.dll文件(例如C:\instantclient_19_10\oci.dll)。 - 重启PL/SQL Developer生效。
5.2 核心功能与日常操作
连接成功后,主界面主要分三块:左侧的“Objects”浏览器,右上方的SQL窗口,右下方的输出结果窗口。
1. 对象浏览器导航: 在这里可以查看所有表、视图、存储过程、函数、触发器等。展开Tables,找到你的表,右键可以“Edit Data”(像Excel一样编辑)、“Query Data”(生成查询语句)、“View”(查看定义)。
2. SQL窗口编写与执行: 这是最常用的地方。快捷键F8是执行语句。对于SELECT语句,会显示结果集;对于DML(INSERT/UPDATE/DELETE),需要手动提交(点击绿色的提交按钮或按Ctrl+Enter)或回滚。
3. 常用快捷键与技巧:
Ctrl+Enter:执行当前SQL语句(或选中的部分)。F5:以脚本形式执行,会在“Output”窗口输出结果,适合运行多个语句。Ctrl+Shift+F:格式化杂乱的SQL代码,让缩进、关键字大小写变规范。- 自动替换:在Preferences -> Editor -> AutoReplace 里可以配置。比如输入
s自动替换为SELECT * FROM,极大提升编码效率。 - 查看执行计划:选中一条SELECT语句,按F5,或者在结果集的“Explain plan”页签,可以查看Oracle如何执行这条SQL,对性能调优至关重要。
4. 编写与调试存储过程: 在Objects浏览器找到Procedures,右键新建。编写完代码后,点击齿轮图标进行编译。如果有编译错误,会在下方窗口显示。要调试,需要先以调试模式编译(Compile for debug),然后点击小虫子图标,可以设置断点、单步执行、查看变量值。
5.3 数据导出与结构同步
数据导出:Tools -> Export Tables。可以选择导出表结构(DDL)、数据(DML到INSERT语句)、或者两者。对于大量数据,导出为CSV或SQL脚本文件很方便。
比较表数据与结构:Tools -> Compare Table Data / Compare User Objects。这是非常强大的功能,可以比较两个环境(比如测试和生产)下,表里数据的差异,或者存储过程、函数等对象的定义差异,常用于部署验证。
注意事项:PL/SQL Developer默认的日期格式可能和数据库不一致,导致显示问题。可以在登录后的会话中执行
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';来临时修改,或者在Preferences -> User Interface -> Date/Time 里设置。
6. 数据库基础管理操作入门
用PL/SQL Developer连上后,除了开发,我们还需要会一些基本的数据库管理操作。
6.1 用户与权限管理
创建新用户并授权,是日常最基本的管理任务。
-- 1. 创建用户,并指定默认表空间和临时表空间 CREATE USER myuser IDENTIFIED BY MyPass123 DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; -- 在users表空间上配额无限制 -- 2. 授予基本权限:连接和资源 GRANT CONNECT, RESOURCE TO myuser; -- 3. 授予特定表的操作权限 GRANT SELECT, INSERT, UPDATE, DELETE ON scott.emp TO myuser; -- 4. 查看用户权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'MYUSER'; SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'MYUSER';CONNECT角色允许用户连接数据库,RESOURCE角色允许用户创建表、视图、存储过程等对象。对于生产环境,授权要遵循最小权限原则。
6.2 表空间管理
表空间是数据库存储的逻辑单元,数据文件是物理文件。
-- 查看所有表空间及其使用情况 SELECT tablespace_name, file_name, bytes/1024/1024 as size_mb, (bytes - maxbytes)/1024/1024 as free_mb FROM dba_data_files UNION ALL SELECT tablespace_name, file_name, bytes/1024/1024, (bytes - maxbytes)/1024/1024 FROM dba_temp_files; -- 创建新的表空间(数据文件大小10G,自动扩展每次100M,最大到30G) CREATE TABLESPACE mytbs DATAFILE '/u01/app/oracle/oradata/ORCL/mytbs01.dbf' SIZE 10G AUTOEXTEND ON NEXT 100M MAXSIZE 30G;定期检查表空间使用率,避免因为空间不足导致应用挂起。如果表空间快满了,可以给数据文件增加大小 (ALTER DATABASE DATAFILE '...' RESIZE 20G;) 或者添加新的数据文件。
6.3 备份与恢复概念(RMAN基础)
对于学习环境,最简单的“备份”就是导出逻辑备份。但了解基本的物理备份工具RMAN很重要。
# 使用RMAN进行全量备份(需要以sysdba身份运行) rman target / RMAN> BACKUP DATABASE PLUS ARCHIVELOG;这条命令会备份整个数据库以及所有的归档日志。备份文件默认存放在$ORACLE_HOME/dbs或快速恢复区(FRA)中。恢复时,也需要进入RMAN,使用RESTORE DATABASE;和RECOVER DATABASE;命令。
实操心得:对于测试环境,定期用
expdp(数据泵)工具做逻辑备份就足够了,恢复也快。但一定要理解,物理备份(RMAN)才是生产环境数据安全的基石。哪怕只是测试,也建议走一遍RMAN备份恢复的流程,真出了事才知道怎么救火。
7. 常见问题排查与解决方案实录
安装和使用过程中,总会遇到各种“坑”。我把最常见的问题和解决办法整理了一下。
7.1 安装阶段问题
问题1:执行runInstaller报错“无法使用命令/usr/bin/xdpyinfo自动检查显示器颜色”
- 现象:图形界面出不来。
- 原因:X11转发未正确配置,或者DISPLAY环境变量没设。
- 解决:
- 确保本地有X11服务(如Xming、Xmanager)在运行。
- 在ssh客户端(如Xshell)里启用X11转发。
- 登录服务器后,执行
echo $DISPLAY,应该显示类似localhost:10.0。如果没有,手动设置export DISPLAY=你的本地IP:0.0(例如export DISPLAY=192.168.1.50:0.0)。 - 还可以尝试用
./runInstaller -ignorePrereq忽略一些检查先启动。
问题2:安装预检查失败,提示“物理内存不足”或“交换空间不足”
- 解决:按照前面2.1节的方法,增加虚拟机的内存配置,或者创建/扩大交换分区。
# 创建交换文件(以增加4GB为例) sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效,需将 /swapfile swap swap defaults 0 0 写入 /etc/fstab
问题3:执行root.sh脚本时报错
- 现象:提示关于
/etc/oratab或权限的错误。 - 解决:仔细看错误信息。通常是环境变量问题或文件权限问题。确保是用root用户执行,并且之前用oracle用户安装时没有中途异常退出。可以尝试手动编辑
/etc/oratab文件,添加一行orcl:/u01/app/oracle/product/19.3.0/dbhome_1:Y。
7.2 连接与监听问题
问题4:PL/SQL Developer连接时报“ORA-12541: TNS:no listener”
- 原因:监听器没启动,或者客户端配置的HOST/PORT不对。
- 排查:
- 在服务器上执行
lsnrctl status,看监听器是否运行。 - 检查服务器
listener.ora中的HOST是否是IP地址。 - 检查客户端
tnsnames.ora中的HOST和PORT是否与服务器监听器配置一致。 - 在服务器本地用
sqlplus system/密码@orcl测试是否能连接,先排除数据库本身问题。 - 检查服务器防火墙是否开放1521端口。
- 在服务器上执行
问题5:连接时报“ORA-12170: TNS:连接超时”
- 原因:网络不通,或者防火墙拦截。
- 排查:
- 从客户端ping服务器IP,看是否能通。
- 在客户端用telnet测试服务器1521端口是否开放:
telnet 服务器IP 1521。如果没反应,就是端口不通,检查防火墙和安全组规则。
问题6:连接时报“ORA-01017: invalid username/password; logon denied”
- 原因:用户名或密码错误,或者用户被锁定。
- 解决:
- 确认密码大小写、特殊字符。
- 用sysdba登录,检查用户状态:
SELECT username, account_status FROM dba_users WHERE username = 'YOUR_USER';。如果状态是LOCKED,解锁:ALTER USER your_user ACCOUNT UNLOCK;。
7.3 使用中常见问题
问题7:PL/SQL Developer中查询结果中文显示为问号“?”或乱码
- 原因:服务器、客户端、PL/SQL Developer三者的字符集不一致。
- 解决:
- 在服务器上,确认数据库字符集:
SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET';,确保是AL32UTF8或ZHS16GBK等支持中文的。 - 在PL/SQL Developer的注册表或环境变量中,设置
NLS_LANG为AMERICAN_AMERICA.AL32UTF8(与数据库字符集一致)。最简单的方法是在Windows系统环境变量里添加NLS_LANG,值设为AMERICAN_AMERICA.AL32UTF8,然后重启PL/SQL Developer。 - 也可以在每次启动PL/SQL Developer后,在SQL窗口执行
ALTER SESSION SET NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CHARACTERSET='AL32UTF8';。
- 在服务器上,确认数据库字符集:
问题8:执行SQL脚本时,遇到“ORA-00911: invalid character”
- 原因:SQL语句中包含了不可见的非法字符,最常见的是复制代码时带上了中文分号、空格或引号。
- 解决:在PL/SQL Developer的SQL窗口中,全选代码,点击“Edit” -> “Blank Operations” -> “Remove Unnecessary Blanks and Tabs”,然后重新执行。最好在纯文本编辑器(如Notepad++)里检查并清理代码。
8. 彻底卸载Oracle 19c
有时候安装失败或者想重装,需要彻底清理。卸载不干净是导致重装失败的主要原因。
8.1 停止所有相关服务
# 切换为oracle用户 su - oracle # 停止数据库监听器 lsnrctl stop # 进入sqlplus停止数据库实例 sqlplus / as sysdba SQL> SHUTDOWN IMMEDIATE; SQL> EXIT;8.2 运行Oracle卸载程序
进入Oracle Home目录,运行卸载程序。注意:这会删除ORACLE_HOME下的所有软件。
cd $ORACLE_HOME/deinstall ./deinstall按照提示操作。它会询问是否删除数据库文件、清单目录等。如果你想完全重装,建议全部选择删除。这个过程是交互式的,仔细看提示。
8.3 手动清理残留文件与配置
即使运行了deinstall,有些目录和配置可能还需要手动清理,确保绝对干净。
# 切换回root用户 su - # 1. 删除安装目录 rm -rf /u01/app/oracle rm -rf /u01/app/oraInventory # 2. 删除用户和组(如果确定不再使用) userdel -r oracle # -r选项同时删除家目录 groupdel oinstall groupdel dba # 3. 删除环境变量配置 # 检查 /home/oracle/.bash_profile 和 /root/.bash_profile,删除所有与ORACLE相关的环境变量行(如ORACLE_BASE, ORACLE_HOME, PATH中的Oracle路径等)。 # 4. 删除系统配置文件中的Oracle相关设置 vi /etc/sysctl.conf # 删除或注释掉之前添加的Oracle内核参数(fs.aio-max-nr, kernel.shmall等) sysctl -p # 重新加载 vi /etc/security/limits.conf # 删除或注释掉为oracle用户添加的限制行 # 5. 删除/etc/oratab文件 rm -f /etc/oratab # 6. 检查并删除临时文件 rm -rf /tmp/Ora* rm -rf /tmp/CVU*完成以上步骤后,重启服务器是一个好习惯,可以确保所有与Oracle相关的进程和内存中的配置都被清除。重启后,你的环境就又是一台“干净”的服务器,可以重新开始安装了。
整个流程走下来,从规划、安装、配置到连接使用,最后再到清理,其实是一个完整的闭环。每个环节的细节都关系到最终的稳定性和可用性。尤其是前期规划和后期的问题排查,往往比单纯的点击“下一步”安装要花费更多时间,但这也是一个DBA或开发者核心能力的体现。多动手,多踩坑,多总结,这套东西就变成你自己的肌肉记忆了。