rac 重建undo

select segment_name,status,tablespace_name from dba_rollback_segs where status not in ('ONLINE','OFFLINE') and tablespace_name='UNDOTBS5'; 


SEGMENT_NAME
------------------------------------------------------------------------------------------
STATUS
------------------------------------------------
TABLESPACE_NAME
------------------------------------------------------------------------------------------
_SYSSMU1$
NEEDS RECOVERY
UNDOTBS5

_SYSSMU117$
NEEDS RECOVERY
UNDOTBS5

_SYSSMU750$
NEEDS RECOVERY
UNDOTBS5

_SYSSMU780$
NEEDS RECOVERY
UNDOTBS5

发现有4个undo 段不正常。

无法drop

16:39:16 sys@bt>alter rollback segment "_SYSSMU1$"   offline  ;
 
Rollback segment altered.
 
Elapsed: 00:00:00.01
16:39:45 sys@bt>alter rollback segment "_SYSSMU117$" offline  ;
 
Rollback segment altered.
 
Elapsed: 00:00:00.00
16:39:45 sys@bt>alter rollback segment "_SYSSMU750$" offline  ;
 
Rollback segment altered.
 
Elapsed: 00:00:00.00
16:39:45 sys@bt>alter rollback segment "_SYSSMU780$" offline  ;
 
Rollback segment altered.
 
Elapsed: 00:00:00.01
16:39:45 sys@bt>
16:39:46 sys@bt>
16:39:46 sys@bt>                                            
16:40:00 sys@bt>drop       rollback segment "_SYSSMU1$"   ; 
drop       rollback segment "_SYSSMU117$" ; 
drop       rollback segment "_SYSSMU1$"
*
ERROR at line 1:
ORA-30025: DROP segment '_SYSSMU1$' (in undo tablespace) not allowed
 
 
Elapsed: 00:00:00.02
16:40:00 sys@bt>drop       rollback segment "_SYSSMU750$" ; 
drop       rollback segment "_SYSSMU117$"
*
ERROR at line 1:
ORA-30025: DROP segment '_SYSSMU117$' (in undo tablespace) not allowed

 

需要将undo_management改为manual 后,使用隐含参数

_CORRUPTED_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU117$,_SYSSMU750$,_SYSSMU780$)

 

然后可以顺利的删除。

drop       rollback segment "_SYSSMU1$"   ; 
drop       rollback segment "_SYSSMU117$" ; 
drop       rollback segment "_SYSSMU750$" ; 
drop       rollback segment "_SYSSMU780$" ; 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8135069/viewspace-687465/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8135069/viewspace-687465/

### 将 Oracle RAC 数据库转换为单实例数据库的方法 要将 Oracle RAC 数据库转换为单实例数据库,需要执行一系列步骤来移除 RAC 相关的配置并重新配置数据库为单实例模式。以下是详细的步骤说明: #### 1. 停止 RAC 数据库和监听器 在进行任何更改之前,首先需要停止所有 RAC 数据库实例以及相关的监听器服务。 ```bash srvctl stop database -d <db_name> ``` #### 2. 修改初始化参数文件 将 RAC 数据库转换为单实例数据库需要修改初始化参数文件(`spfile` 或 `pfile`),移除与 RAC 相关的参数。主要需要修改的参数包括: - `cluster_database`:将其设置为 `FALSE`。 - `thread`:删除或注释掉与多线程相关的参数。 - `undo_tablespace`:确保只保留一个 UNDO 表空间。 生成新的 `pfile` 并修改相关参数: ```sql CREATE PFILE='/tmp/init<db_name>.ora' FROM SPFILE; ``` 编辑生成的 `pfile`,修改以下参数: ``` *.cluster_database=FALSE *.undo_tablespace='UNDOTBS1' ``` #### 3. 使用新的参数文件启动数据库 使用修改后的 `pfile` 启动数据库,并验证是否成功进入单实例模式: ```sql STARTUP PFILE='/tmp/init<db_name>.ora'; ``` #### 4. 删除 RAC 相关的 UNDO 表空间 如果数据库中有多个 UNDO 表空间,可以删除多余的 UNDO 表空间以简化管理: ```sql DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES; ``` #### 5. 重建控制文件(可选) 为了确保控制文件与单实例数据库兼容,可以选择重建控制文件。可以通过 `ALTER DATABASE BACKUP CONTROLFILE TO TRACE` 命令生成重建控制文件的脚本: ```sql ALTER DATABASE BACKUP CONTROLFILE TO TRACE; ``` 生成的脚本通常位于 `user_dump_dest` 指定的目录中。编辑该脚本并删除与 RAC 相关的部分(如 `thread` 和 `maxinstances` 参数),然后执行脚本以重建控制文件。 #### 6. 删除 RAC 相关的服务和资源 使用 `srvctl` 工具删除 RAC 数据库的服务和资源: ```bash srvctl remove database -d <db_name> ``` #### 7. 重新创建单实例数据库服务 使用 `dbca` 工具重新创建单实例数据库服务,确保数据库服务在单实例模式下正常运行: ```bash dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName <db_name> -sid <sid> -responseFile NO_VALUE -characterSet AL32UTF8 ``` #### 8. 验证单实例数据库状态 最后,验证数据库是否成功转换为单实例模式: ```sql SELECT * FROM v$active_instances; ``` 此查询应仅返回一个实例,表示数据库已成功转换为单实例模式。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值