背景
新年伊始,小伙伴是不是还处于假期综合症的状态。我们在日常运维数据库的时候,会时常查看数据库的状态,检查数据库是否正常运行。对于这些状态的熟悉对于我们处理数据库无法访问的
问题非常重要。当数据库突然变成一个你没有见到过的状态时,你就会非常慌乱,手足无措。这里给小伙伴普及下数据库的各个状态。已经他们是怎么转换的
案例
前两天在处理一个客户问题,突然某个数据库无法访问了。数据库下面的表也无法查看。从SSMS界面上看数据库是正常的状态(就是数据库名字后面没有显示特别的状态)。查看
SYS.DATABASES 查看状态列,发现是ONLINE。此时其他数据库是正常的,就这个库有问题。肯定是数据库状态不对。 那么问题出在哪里呢? 仔细观察发现这个问题的数据库 collation_name 是null 值。
原来问题在这,
刚刚联机的数据库不一定马上能接受连接。 要确定数据库何时可以接受连接,可以查询 sys.databases 的 collation_name 列或 DATABASEPROPERTYEX 的 Collation 属性。 在数据库排序规则返回非 Null 值之后,数据库就可以接受连接了。
于是用命令把数据库设置为脱机,然后马上联机,再查看sys.databases 的 collation_name 列 变成了非null值。此时数据库恢复正常。
状态的转换
数据库有很多状态。他们是如何在这些状态之间进行切换的呢?下面这个图非常清晰的标示了各个状态的切换。在我刚学习数据库的时候,这个图给了我很大的帮助,
让我对数据库各个状态的转换有了很清楚的认识。
ONLINE (在线)
数据库可正常运行
RESTORING (正在还原)
数据库正在还原,当我们还原数据库使用NORECOVERY 模式时,数据库就会变成该状态
RECOVERING (正在恢复)
数据库启动,数据库创建,ALTER ONLINE,RESTORE WITH RECOERY 时,会经过这个状态,进行REDO,UNDO等操作。此时如果遇到问题就进入RECOVERY_PENDING。如果正常就会变成ONLINE。
RECOVERY_PENDING(等待恢复)
数据库在还原时遇到跟资源相关的错误,表明还原进程被挂起,数据库不能开始数据库的数据和日志的还原进程,这种情况下,最可能的原因是丢失数据文件或日志文件。
SUSPECT (置疑)
数据库可能损坏了
EMERGENCY (紧急)
供DBA用来修复数据库的状态
OFFLINE (脱机)
离线状态
总结
了解数据库处于的状态非常重要。我们如果还不熟悉的小伙伴可以看看。
编辑推荐:
- SQLSERVER数据库状态揭秘03-02
- mssql 创建dblink03-02
- SQL SERVER运维日记--备份03-02
- cdc.lsn_time_mapping03-02
- Ubuntu高可用监控部署指南(手把手教你配置Keepalived实现Linux服务器高可用性)03-02
- 屏蔽机房壳体龙骨安装焊接教程03-02
- NTP时间服务器,为安防监控系统保驾护航03-02
- 高清视频监控系统基本组成03-02
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- SQLSERVER数据库状态揭秘
SQLSERVER数据库状态揭秘
26-03-02 - SQL SERVER运维日记--备份
SQL SERVER运维日记--备份
26-03-02 - Ubuntu高可用监控部署指南(手把手教你配置Keepalived实现Linux服务器高可用性)
- 屏蔽机房壳体龙骨安装焊接教程
屏蔽机房壳体龙骨安装焊接教程
26-03-02 - NTP时间服务器,为安防监控系统保驾护航
NTP时间服务器,为安防监控系统保驾护航
26-03-02 - 高清视频监控系统基本组成
高清视频监控系统基本组成
26-03-02 - 深入理解 SQL Server 2008 的锁机制
深入理解 SQL Server 2008 的锁机制
26-03-02 - 新建可用性组的正将TEST连接到XXXX上的可用性组TAG01报错和解决--alwayson搭建踩的坑
- SQL SERVER数据库收缩最佳实践
SQL SERVER数据库收缩最佳实践
26-03-02 - SQLServer执行存储过程失败(sys.xp_cmdshell)问题处理
