关于Oracle中重启数据库的一个bug

简介: 关于drop database在oracle中是致命的操作,这个操作自己在测试环境中体验过,会完全删除数据文件,因此这个操作非常敏感但是实用性不强,不过话说过来,这个操作也不是随便就能执行的,除了操作敏感的权限之外,其实还是有一些前提条件的。
关于drop database在oracle中是致命的操作,这个操作自己在测试环境中体验过,会完全删除数据文件,因此这个操作非常敏感但是实用性不强,不过话说过来,这个操作也不是随便就能执行的,除了操作敏感的权限之外,其实还是有一些前提条件的。
在数据库open状态,是无法运行这个命令的。
SQL> drop database TEST;
drop database TEST
              *
ERROR at line 1:
ORA-00933: SQL command not properly ended

需要重启到mount阶段。
SQL> alter database mount exclusive;
Database altered.

SQL> drop database TEST;
drop database TEST
              *
ERROR at line 1:
ORA-00933: SQL command not properly ended
同时还要保证处于exclustrict模式。
SQL> drop database;--要执行还是不容易的。
drop database
*
ERROR at line 1:
ORA-12719: operation requires database is in RESTRICTED mode
SQL> alter system enable restricted session;
System altered.
SQL> drop database;
Database dropped.

今天网友提供了一个精简的两个命令。就把停库,重启到Mount,设置restrict mode,drop database的步骤都完成了。
自己在本地的测试库中也尝试了一下,看看能不能启动到restrict模式下.,结果运行的时候报了一个ORA错误就退出了。
idle>  startup force  mount restrict;
ORA-00000: normal, successful completion
其实对于这个问题,oerr的解释感觉有些牵强,至少对于我来说是不可接受的。
$ oerr ora 00000
00000, 00000, "normal, successful completion"
// *Cause:  Normal exit.
// *Action: None.
顺着这个问题在metalink上看了一圈,突然有一个帖子引起了我的注意,就是关于钱包的一个设置。
关于钱包的设置,可以参考我之前对比MySQL和Oracle无密码登录的案例。http://blog.itpub.net/23718752/viewspace-1659551/
metalink中相关的文章是Bug 11706168 - ORA-00000 during STARTUP with SQLNET.WALLET_OVERRIDE=TRUE (Doc ID 11706168.8)
由此可见很可能就是我碰到的这个bug.
我们来简单验证和复现一下。
如果启用钱包的这个override特性,就出出现问题。
sys@TEST11G> startup force
ORA-00000: normal, successful completion
sys@TEST11G> !cat sqlnet.ora|grep SQLNET
SQLNET.WALLET_OVERRIDE=true
如果禁用,就会发现能够正常重启了。
idle> startup force
ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.
idle> !cat sqlnet.ora|grep SQLNET
#SQLNET.WALLET_OVERRIDE=true
对于这个问题的测试还没有完,我们可以深究一下,这个问题在什么场景下还会出现。
其实在同一个session中进行数据库的重启也是会有问题的。
我们在同一个session内重启,停库
idle> startup
ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
Database opened.
idle> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
当再次重启的时候,就会出现这个问题了,当然这个问题还是和钱包相关的。
idle> startup
ORA-00000: normal, successful completion
idle> !cat sqlnet.ora|grep SQLNET
SQLNET.WALLET_OVERRIDE=true

最后亮出那个精简的命令,看看效果。
sys@TEST11G> startup force mount restrict;
ORACLE instance started.
Total System Global Area  435224576 bytes
Fixed Size                  1337044 bytes
Variable Size             272632108 bytes
Database Buffers          155189248 bytes
Redo Buffers                6066176 bytes
Database mounted.
可以看到数据库可以很快的重启到Mount阶段,然后设置为restrict模式。
当然,startup force也就是个人本地测试环境玩玩,工作中的环境中一概要撇清关系,因为后果是很严重的,别说破坏性操作,就算新特性的使用都是谨慎又谨慎的,这也是我们DBA存在的一种意义和价值所在。



目录
打赏
0
0
0
0
16
分享
相关文章
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
186 11
数据库———事务及bug的解决
事务的一些概念,并发事务以及并发事务引起的bug,脏读,不可重复读,幻读,数据库中的隔离级别,事务的简单应用
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
85 7
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
514 2
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
139 7

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等