数据库状态,数据库的4种状态是什么
大家好,今天给各位分享数据库状态的一些知识,其中也会对数据库的4种状态是什么进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
数据库的4种状态是什么
Oracle10g数据库的4种存储形式
数据库的存在一定需要有永久性存储方式和介质。Oracle自然也不例外,在Oracle10g中,有4种存储形式,分别是操作系统文件,裸分区,自动存储管理,集群系统OCFS(RAC)。下面分别说一下这4种存储形式。 1操作系统文件。这种是大家最常用的方式了,也是非商业运行模式(比如开发或者开发阶段的测试环境)下最常用的形式。当大家安装Oracle的时候,如果选用了操作系统文件的存储形式,那么就会把Oracle的数据存储在操作系统中,以文件的形式存在。就好像我们玩某些单机版游戏,你的存档就是操作系统的文件一样。用文件形式存储数据,带来的优点就是易于数据库移动。比如你把Oracle的数据文件直接copy到一台电脑上,就可以很快复制出一个一样的数据库系统出来。在文件的读写的时候,操作系统通常会提供缓存形式进行读写,避免过多读写硬盘对磁盘造成很大伤害。所以用操作系统文件形式存储数据,等于先天性获得了操作系统的缓存功能。
2裸分区。裸分区就是把数据库直接写在磁盘上,不再经过操作系统这一层,Oracle专门来对这个分区进行读写。因为没有了操作系统这一层,所以读写起来的速度和性能是质一般的飞跃的,在某些对Oracle读写非常频繁的数据库应用中,采用裸分区形式存储数据甚至可以提高30%以上的性能。当然,如果数据存储是采用的操作系统文件,如果在Unix下采用RAID对于文件读写操作频繁的情况下也是一个可以提高性能的手段。
3自动存储管理。自动存储管理通常也被称为ASM,是在Oracle 10g以后才提供的一种新的存储形式。这种存储形式貌似是前两种存储形式的折中。既不是用的host操作系统的文件系统,也不是裸分区的形式直接由Oracle读写。而是可以看作为一种Oracle特有的文件系统形式。在ASM上可以存储数据文件,控制文件,日志文件等等,在ASM中,这些也是以文件的形式存在的,只不过这个时候的文件格式是Oracle自有的ASM形式。在Linux中和ASM有点相似的就是LVM(逻辑Volume管理),也是可以看作是一种自有的新的文件系统形式。
4集群系统OCFS(RAC)。RAC的全称是什么呢,就是Real Application Cluster,是一种在集群的环境下实现共享的一种数据库存储形式。在通常我们的数据库,如果是单机版的数据库,当数据文件磁盘不能访问,那么这个数据库就挂掉了。如果是集群共享数据库的话,其中一种方法就是在某个节点存放数据文件,其余的数据库都通过NFS或者Samba来进行共享,虽然数据库的数据处理能力得到了很大的提高,不过如果这个存储节点挂掉的话,同样数据库也就宕掉了。而OCFS则是一种无断点恢复的存储形式,在整体给人的感觉就是每台数据服务器都有自己的文件系统,但是这些文件系统又仿佛只是同一个文件系统,因为数据更新或者其他的操作都是很统一的。即使某台电脑挂了,其余的服务器照样运行,不会出现数据库的异常,而如果想新加入一台服务器也是很简单的事。特别适合于商用的7X24这种服务形式。
Oracle10g中的4种数据存储方式都介绍完了,我们最常用的自然是第一种形式,不过后面三种形式在商用环境下比较多。特别在大型商用对可靠性要去很高应用中,第四种RAC形式的使用是比较多的。当然,这里只是很简要的介绍了一下几个文件系统的概念。如果要仔细了解的话,当然是要好好查阅Oracle技术手册了。
SQLServer数据库所能处在的几种状态
欢迎进入Windows社区论坛,与300万技术人员互动交流>>进入数据库所能处在的几种状态,一个完整的模型如下:数据库所能处在的状态关系上面的几种状态的具体转换关系超出了本文的讨论范围,但是这里我会强调两种和日志损坏关系很大的状态:RECOVERY_PENDING
欢迎进入Windows社区论坛,与300万技术人员互动交流>>进入
数据库所能处在的几种状态,一个完整的模型如下:
数据库所能处在的状态关系
上面的几种状态的具体转换关系超出了本文的讨论范围,但是这里我会强调两种和日志损坏关系很大的状态:RECOVERY_PENDING和SUSPECT状态。
假如出现了数据库没有正常关闭,也就是还有数据没有CheckPoint到磁盘,如果数据库要启动就必须经历Recovery过程,如果日志损坏,则无法进行该Recovery过程,就会造成数据不一致的问题。
此时,数据库可能处于下面两种状态之一:
RECOVERY_PENDING:需要运行crash recovery,但该过程由于资源等待无法开始,比如说日志完全损坏
SUSPECT:crash recovery已经开始,但无法完成
因此处理该类情况要基于您所在的业务环境是否允许数据损失,可以选择从备份中恢复数据,或是将数据库状态改为EMERGENCY。EMERGENCY模式意味着数据库跳过crash recovery阶段,此时虽然可以访问数据库,但是会存在数据事务不一致的问题,如果仅仅是某些数据页不一致还好,但如果是对表结构修改的事务存在,那就可能存在数据库架构不一致的问题。如果您没有合适的备份集,那只能通过该方式来恢复数据。将数据库设置为EMERGENCY模式非常简单,如代码清单1所示。
ALTER DATABASE AdventureWorks2012 SET EMERGENCY
代码清单1.将数据库设置为紧急模式
与该模式有关的一个选项是REPAIR_ALLOW_DATA_LOSS,该选项依然会执行crash recovery过程,但会跳过受损的日子,从而尽可能的修复数据一致性问题,该选项会创建一个新的日志文件,最后使得数据库处于ONLINE状态,使用该选项的一个简单例子如代码清单2所示。
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER
DBCC CHECKDB(AdventureWorks2012,REPAIR_ALLOW_DATA_LOSS)
代码清单2.使用REPAIR_ALLOW_DATA_LOSS选项
值得注意的是,作为DBA永远是要有“备”无患,上面这些操作是在您准备工作不充分的情况下才要去考虑的。
数据库处于在线状态,日志损坏
在这种情况下,如果SQL Server在运行时需要使用的日志损坏(比如说回滚时),则SQL Server会将数据库下线,并转为SUSPECT模式。
同样如果没有备份的话,只能考虑使用EMERGENCY模式。
还有一种方式是,将数据库的恢复模式改为简单,然后手动发起一个CheckPoint来截断日志,最后再将数据库改回完整恢复模式。但这种方式会破坏日志链。但可能会将被损坏的日志清除掉。
oracle:数据库mount状态是什么意思啊
数据库mount状态是加载控制文件,让度实例和数据库相关联。
nomount状态:启动实例。
Reading the initialization file from$ORACLE_HOME/dbs in the following order:
从环境变量下dbs目录按如下顺序读取初始化文件:
-first spfileSID.ora
首先,读取spfile+实例名.ora
-if not found then, spfile.ora
若未发现文件则读取spfile.ora
-if not found then, initSID.ora
若未发现文件则读取init+实例名.ora
Specifying the PFILE parameter with STARTUP overrides the default behavior.
扩展资料
后台进程是数据库和操作系统进行交互的通道,后台进程的命名由ORACLE_SID决定,ORACLE根据ORACLE_SID来寻找参数文件启动实例。
是Oracle数据库为保持最佳性能和协调多用户请求而设置的,主要有DBWR(将Database Buffer Cache数据写入Data Files)、LGWR(将Redo Log Buffer数据写入Redo Log Files)、CKPT(协调数据文件、控制文件和重做日志。
将System Change Number即SCN写入到控制文件和数据文件头部,促使DBWR、LGWR执行)、SMON(System Monitor,3方面作用:instance recovery实例故障数据恢复、合并空闲碎片空间、回收临时段)、PMON(用户例程意外终止时处理事务。
如回退事务、释放锁及其他资源等)、ARCH(将Redo Log Files写入Archive Log Files)、CJQ0(job queue coordinator)、RVWR(recover writer,为flashback database提供日志记录)等进程。
如何查看数据库当前的状态
在实际的工作中,数据库管理员(dba)需要经常要定时对数据库的连接情况进行检查,查看与数据库建立的会话数目是不是正常,假如建立了过多的连接,会消耗许多数据库的资源。与此同时,针对一些“挂死”的连接,可能会需要dba自行手工进行清理。
下面的sql语句列出当前数据库建立的会话情况:
select
sid,serial#,username,program,machine,status
from
v$session;
输出的结果:
sid
serial#
username
program
machine
status
----
-------
----------
-----------
---------------
--------
1
1
oracle.exe
work3
active
2
1
oracle.exe
work3
active
3
1
oracle.exe
work3
active
4
1
oracle.exe
work3
active
5
3
oracle.exe
work3
active
6
1
oracle.exe
work3
active
7
1
oracle.exe
work3
active
8
27
sys
sqlplus.exe
workgroup\work3
active
11
5
dbsnmp
dbsnmp.exe
workgroup\work3
inactive
其中sid
会话(session)的id号;
serial#
会话的序列号,和sid一起用来唯一标识一个会话;
username
建立该会话的用户名;
status
当前这个会话的状态,active表示会话正在执行某些任务,inactive表示当前会话没有执行任何操作;
假如要手工断开某个会话,则执行:
alter
system
kill
session
'sid,serial#';注意:在上面的示例中,sid为1到7(username列为空)的会话,它是oracle数据库的后台进程,请大家不要对这些会话进行任何操作。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!