Oracle rac手动删库

本文详细介绍了Oracle RAC环境下数据库删除的步骤,包括停止监听、查看磁盘组空间、关闭数据库、启动到mount状态、修改参数、使用drop database命令、手动清除相关文件等关键操作。

与单实例删库步骤基本一致。

1.停止监听

防止有新的连接产生,同时,在数据库配置了em的,也需要停止

$ lsnrctl stop listener_name
$ emctl stop dbconsole

2.查看ASM磁盘组空间

获得数据文件,日志文件及控制文件的相关信息,包含归档文件

SQL> select
name "名称",
state "状态",
round(total_mb/1024,2) "总空间GB",
round(free_mb/1024,2) "剩余空间GB",
round(total_mb/1024,2)-round(free_mb/1024,2) "使用空间GB",
round(free_mb/total_mb*100,2) "空闲比"
from v$asm_diskgroup;  
名称               状态            总空间GB    剩余空间GB 使用空间GB     空闲比
------------------------ ----------- ---------- ---------- ---------- ----------
FRA               CONNECTED      200         .01        199.99         0
OCR               MOUNTED        2           1.61       .39 80        .65
RACDB_DATA    CONNECTED      2099.99    239.49     1860.5         11.4
  • 如果这台实例已经关掉数据库服务了,可以用asmcmd查看磁盘组空间
[grid@testrac1 ~]$ asmcmd
ASMCMD> ls -l
State    Type    Rebal  Name
MOUNTED  EXTERN  N      FRA/
MOUNTED  EXTERN  N      OCR/
MOUNTED  EXTERN  N      RACDB_DATA/
ASMCMD> ls -s
Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
   512   4096  1048576    204805   198132                0          198132              0             N  FRA/
   512   4096  1048576      2047     1651                0            1651              0             Y  OCR/
   512   4096  1048576   2150394   244562                0          244562              0             N  RACDB_DATA

3.查看实例相关文件信息

  • 如果数据库开着
  1. 获取控制文件的路径
SQL> show parameter control
  1. 获取数据文件的位置
SQL> select file_name from dba_data_files;
  1. 获取日志文件的位置
SQL> select * from v$logfile;
  1. 获取归档日志的路径
SQL> archive log list; 
  • 如果实例已经关闭,可以通过grid用户:
  1. 获取文件的位置
[grid@testrac1 ~]$ sqlplus / as sysdba

# 查看文件,注意group_number表示位于不同的磁盘组
SQL> select name,file_number,group_number,file_incarnation from v$asm_alias;

NAME	FILE_NUMBER GROUP_NUMBER FILE_INCARNATION
--------------------------------- ----------- ------------ ----------------
.
.
.
# 共有274个文件
274 rows selected.
  1. 查看控制文件位置:
$ asmcmd

ASMCMD> cd racdb_data/racdb/controlfile
ASMCMD> ls
Current.256.1023463073
current.268.1023469245		# 当前实例的控制文件
current.444.1041513741
current.445.1041517695

4.关闭数据库

SQL>shutdown immediate(abort);

反正都要删库了,可以考虑用abort

5.启动到mount状态(使用exclusive restart)

SQL> startup mount exclusive restrict;
ORACLE instance started.

Total System Global Area 5.3447E+10 bytes
Fixed Size            2265864 bytes
Variable Size         3.0870E+10 bytes
Database Buffers     2.2549E+10 bytes
Redo Buffers           26480640 bytes
Database mounted.
  • 再次确认是否是要删除的实例
SQL> show parameter instance;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
active_instance_count             integer
cluster_database_instances         integer     1
instance_groups              string
instance_name                 string     racdb2
instance_number              integer     2
instance_type                 string     RDBMS
open_links_per_instance          integer     4
parallel_instance_group          string
parallel_server_instances         integer     1

6.修改参数为允许受限的会话模式

SQL> alter system enable restricted session;

System altered.

7.使用drop database命令来清除数据库

SQL> drop database;

Database dropped.

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> exit
[oracle@testrac2 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on 星期四 5月 28 11:28:01 2020

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> exit
Disconnected

8.手动清除相关文件

  • 删库后控制文件已自动删除:
ASMCMD> cd controlfile
ASMCMD> ls
Current.256.1023463073
current.444.1041513741
current.445.1041517695
  • 数据文件除了sys表空间、users表空间、undo表空间、临时表空间、redo、参数文件外,都被删除
ASMCMD> ls
EGRANTCLOB.275.1023478277
SYSAUX.260.1023463079
SYSTEM.259.1023463075
UNDOTBS1.261.1023463081
UNDOTBS2.263.1023463091
USERS.264.1023463091
egrantclob31.dbf   #遗留了一个数据文件
ASMCMD> rm -rf EGRANTCLOB.275.1023478277
ASMCMD> rm -rf egrantclob31.dbf
ASMCMD-8002: entry 'egrantclob31.dbf' does not exist in directory '+racdb_data/racdb/datafile/'
ASMCMD> ls
SYSAUX.260.1023463079
SYSTEM.259.1023463075
UNDOTBS1.261.1023463081
UNDOTBS2.263.1023463091
USERS.264.1023463091
  • 空间释放:
ASMCMD> ls -s
Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
   512   4096  1048576    204805   203905                0          203905              0             N  FRA/
   512   4096  1048576      2047     1651                0            1651              0             Y  OCR/
   512   4096  1048576   2150394  2125326                0         2125326              0             N  RACDB_DATA/
  • 查看文件
select name,file_number,group_number,file_incarnation from v$asm_alias;

NAME                                       FILE_NUMBER GROUP_NUMBER FILE_INCARNATION
---------------------------------------------------------------------- ----------- ------------ ----------------
RACDB                                    4294967295          2       4294967295
CONTROLFILE                                4294967295          2       4294967295
Current.256.1023381111                                   256          2       1023381111
Current.261.1023463073                                   261          2       1023463073
current.1393.1041517699                               1393          2       1041517699
ONLINELOG                                4294967295          2       4294967295
group_1.257.1023381111                                   257          2       1023381111
group_2.258.1023381111                                   258          2       1023381111
group_3.259.1023381881                                   259          2       1023381881
group_4.260.1023381881                                   260          2       1023381881
group_1.262.1023463073                                   262          2       1023463073
group_2.263.1023463075                                   263          2       1023463075
group_3.264.1023463843                                   264          2       1023463843
group_4.265.1023463843                                   265          2       1023463843
testrac-cluster                             4294967295          3       4294967295
ASMPARAMETERFILE                            4294967295          3       4294967295
REGISTRY.253.1023288043                                253          3       1023288043
OCRFILE                                 4294967295          3       4294967295
REGISTRY.255.1023288045                                255          3       1023288045
RACDB                                    4294967295          4       4294967295
CONTROLFILE                                4294967295          4       4294967295
Current.256.1023463073                                   256          4       1023463073
current.444.1041513741                                   444          4       1041513741
current.445.1041517695                                   445          4       1041517695
ONLINELOG                                4294967295          4       4294967295
group_1.257.1023463073                                   257          4       1023463073
group_2.258.1023463075                                   258          4       1023463075
group_3.265.1023463843                                   265          4       1023463843
group_4.266.1023463843                                   266          4       1023463843
DATAFILE                                4294967295          4       4294967295
SYSTEM.259.1023463075                                   259          4       1023463075
SYSAUX.260.1023463079                                   260          4       1023463079
UNDOTBS1.261.1023463081                                261          4       1023463081
UNDOTBS2.263.1023463091                                263          4       1023463091
USERS.264.1023463091                                   264          4       1023463091
TEMPFILE                                4294967295          4       4294967295
TEMP.262.1023463083                                   262          4       1023463083
spfileracdb.ora                                    267          4       1041591383
DB_UNKNOWN                                4294967295          4       4294967295
PARAMETERFILE                                4294967295          4       4294967295
SPFILE.267.1041591383                                   267          4       1041591383

41 rows selected.

9.跑路

删库删全套,删完跑路!

Oracle RAC环境中,使用非标准方式(如`rm -rf`命令)手动删除集群就绪服务(Cluster Ready Services, CRS)或Grid Infrastructure后,系统中往往会残留大量文件和配置。这些残留物会导致后续重装或新版本安装失败、节点加入异常或出现意想不到的服务冲突。彻底清理这些残留是成功重装或进行环境修复的必要前提[ref_5]。 ### 核心残留文件及位置分析 清理工作的关键在于识别和定位所有与CRS相关的目录、文件、系统配置项和存储设备信息。下表汇总了主要的残留组件及其位置: | 残留组件类别 | 主要路径/文件示例 | 说明与影响 | | :--- | :--- | :--- | | **Grid Infrastructure 安装目录** | `/u01/app/11.2.0/grid` <br> `/u01/app/12.2.0/grid` | 手动删除可能不彻底,或遗留`oracle`用户无法访问的隐藏文件。 | | **Oracle Inventory 清单目录** | `/u01/app/oraInventory` | 存放所有Oracle产品的安装记录。未清理将导致新安装程序检测到旧组件而报错。 | | **CRS 相关系统配置文件** | `/etc/oracle` <br> `/etc/init.d/init.*` <br> `/etc/init.d/ohasd` | 包含OCR、集群网络等配置文件和服务启动脚本。 | | **Oracle 用户环境变量文件** | `~oracle/.bash_profile` | 可能包含`$CRS_HOME`、`$ORA_CRS_HOME`等环境变量定义。 | | **ASM 磁盘头/OCR/Voting Disk** | `/dev/asm*` 或 `/dev/oracleasm/disks/*` | ASM使用的物理磁盘或分区上存有OCR和Voting Disk数据,是集群的核心元数据。 | | **集群服务残留** | Windows: 注册表项、VIP资源、服务 <br> Linux: `/etc/rc*.d/`下的服务链接 | 操作系统层面仍存在CRS相关的服务定义和资源信息。 | ### 分步清理方法与具体操作 清理操作需要在所有集群节点上以`root`用户执行,并确保所有Oracle相关进程已停止。以下是详细的清理步骤和代码示例。 #### 1. 停止所有残留进程与资源 首先强制停止任何可能仍在运行的CRS或ASM相关进程。 ```bash # 以root用户执行,停止所有与CRS和ASM相关的守护进程 ps -ef | grep -E “(crsd|cssd|evmd|ohasd|diskmon|asm)” | grep -v grep | awk ‘{print $2}’ | xargs kill -9 ``` #### 2. 卸载并删除CRS相关系统包(仅Linux) 检查并卸载Oracle Grid Infrastructure安装时可能添加的RPM包。 ```bash # 查询并卸载相关的Oracle软件包 rpm -qa | grep -iE “(grid|crs|oracleasm)” | xargs rpm -e –nodeps # 清理可能存在的Oracle用户和组(确认不再需要后) # userdel -r oracle # groupdel oinstall # groupdel dba ``` #### 3. 删除所有相关目录 彻底删除物理目录是清理的关键。 ```bash # 删除Grid Infrastructure安装目录 rm -rf /u01/app/11.2.0/grid rm -rf /u01/app/oracle/product/11.2.0/grid # 删除Oracle Inventory清单目录 rm -rf /u01/app/oraInventory # 删除OCR和Voting Disk使用的本地文件(如果使用了文件系统存储) rm -rf /u01/oradata/*ocr* rm -rf /u01/oradata/*vot* # 删除Oracle用户主目录下的配置文件(可选) rm -f /home/oracle/.bash_profile rm -f /home/oracle/.bashrc ``` #### 4. 清理ASM磁盘头信息(关键步骤) 如果CRS使用了ASM来管理OCR和Voting Disk,必须清除磁盘头信息,否则新集群会读取到旧的元数据而失败[ref_5]。 ```bash # 使用Oracle提供的磁盘清理工具(例如在Linux ASMLib下) # 注意:此操作会破坏磁盘上的所有数据,请务必确认磁盘无误 /usr/sbin/oracleasm deletedisk DATA1 /usr/sbin/oracleasm deletedisk OCR1 /usr/sbin/oracleasm deletedisk VOTE1 # 如果使用UDEV或原生磁盘,可以使用dd命令清除磁盘头部信息 # 例如,假设OCR使用的磁盘设备是/dev/sdb1 dd if=/dev/zero of=/dev/sdb1 bs=1M count=100 # 警告:`dd`命令极其危险,操作前务必反复确认设备名。 ``` #### 5. 清理系统配置文件和启动项 删除所有操作系统层面的CRS配置。 ```bash # 删除配置文件目录 rm -rf /etc/oracle # 删除服务启动脚本(位置可能因系统而异) rm -f /etc/init.d/init.crs rm -f /etc/init.d/init.crsd rm -f /etc/init.d/init.cssd rm -f /etc/init.d/init.evmd rm -f /etc/init.d/ohasd # 删除启动链接(例如在RedHat/CentOS的runlevel目录下) find /etc/rc*.d -name “*crs*” -o -name “*ohasd*” | xargs rm -f ``` #### 6. 清理网络配置与内核参数 移除CRS安装时可能修改的系统参数。 ```bash # 清理`/etc/sysctl.conf`中与Oracle相关的内核参数 # 使用sed命令注释掉特定行,例如: sed -i ‘/^fs.aio-max-nr/d’ /etc/sysctl.conf sed -i ‘/^kernel.shmall/d’ /etc/sysctl.conf # … 其他参数 sysctl -p # 重新加载生效 # 清理`/etc/security/limits.conf`中为oracle用户添加的配置行 sed -i ‘/^oracle/d’ /etc/security/limits.conf # 删除CRS专用的网络接口配置(如果存在) # ifconfig <private_interface_name> down ``` ### 注意事项与最佳实践 1. **备份重要数据**:在执行任何删除操作前,务必确认已备份数据数据、OCR和Voting Disk(如果可能),并备份重要配置文件。 2. **多节点环境**:在RAC环境中,必须在**所有节点**上执行上述清理步骤,确保环境一致[ref_4]。遗漏任何一个节点的清理都可能导致新集群添加节点失败。 3. **验证清理**:清理完成后,使用`ps -ef | grep ora`、`df -h`检查是否有进程残留和目录挂载。使用`crsctl check cluster`(如果命令还在)应返回命令未找到,而非显示集群仍在运行。 4. **使用官方卸载工具**:相比手动删除,**首选方法是使用Oracle提供的卸载脚本**,如`$GRID_HOME/deinstall/deinstall`或专门针对旧版本CRS的卸载脚本[ref_2][ref_3]。手动删除应作为官方工具无法使用时的最后手段。 5. **Windows环境差异**:在Windows系统上,除了删除目录,还需通过服务管理器(`services.msc`)删除所有Oracle服务,并使用`regedit`清理相关注册表项(如`HKEY_LOCAL_MACHINE\SOFTWARE\Oracle`下的相关键值)[ref_4]。 6. **重装前检查**:在计划重新安装Grid Infrastructure之前,运行Oracle Universal Installer(OUI)的预安装检查,或使用集群验证工具(CVU)检查环境是否干净,确认所有残留已被清除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值