导致 *** 作系统故障的主要原因有哪些

导致 *** 作系统故障的主要原因有哪些,第1张

数据库运行过程中,可能会出现各种各样的故障,这些故障可分为以下三类:事务故障、系统故障和介质故障。应该根据故障类型的不同,采取不同的恢复策略。

1,事务故障及其恢复:

事务故障表示由非预期的、不正常的程序结束所造成的故障。

造成程序非正常结束的原因包括输人数据错误、运算溢出、违反存储保护、并行事务发生死锁等。

发生事务故障时,被迫中断的事务可能已对数据库进行丁修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚(RoLLBAcK)该事务,将数据库恢复到修改前的初始状态。

为此,要检查日志文件中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变。

这类恢复 *** 作称为事务撤销(uNDo),具体做法如下。

(1)反向扫描日志文件,查找该事务的更新 *** 作。

(2)对该事务的更新 *** 作执行反 *** 作,即对已经插入的新记录进行删除 *** 作,对己删除的记录进行插入 *** 作,对修改的数据恢复旧值,用旧值代替新值。这样由后向前逐个扫描该事务已做的所有更新 *** 作,并做同样处理,直到扫描到此事务的开始标记,事务故障恢复完毕为止。

因此,一个事务是一个工作单位,也是一个恢复单位。一个事务越短,越便于对它进行UNDO *** 作。如果一个应用程序运行时间较长,则应该把该应用程序分成多个事务,用明确的coMMIT语句来结束各个事务。

2,系统故障及其恢复系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的事务都以非正常方式终止,要求系统重新启动。引起系统故障的原因可能有硬件错误(如CPu故障、 *** 作系统)或DBMS代码错误、突然断电等。

这时,内存中数据库缓冲区的内容全部丢失,虽然存储在外部存储设备上的数据库并未破坏,但其内容不可靠了。系统故障发生后,对数据库的影响有以下两种情况。

一种情况是一些未完成事务对数据库的更新已写入数据库,这样在系统重新启动后,要强行撤销(uNDo)所有未完成的事务,清除这些事务对数据库所做的修改。这些末完成事务在日志文件中只有BEGIN TRANsLATl0N标记,而无COMMIT标记。

另一种情况是有些已提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。这类恢复 *** 作称为事务的重做(REDo)。这种巳提交事务在日志文件中既有BGIN TRANSCATION标记,也有COMMIT标记。

因此,系统故障的恢复要完成两方面的工作,既要撤销所有末完成的事务,还要重做所有已提交的事务,这样才能将数据库真正恢复到一致的状态。具体做法如下。

(1)正向扫描日志文件,查找尚未提交的事务,将其事务标识记人撤销队列。同时查找已经提交的事务,将其事务标识记入重做队列。

(2)对撤销队列中的各个事务进行撤销处理。方法同事务故障中所介绍的撤销方法。

(3)对重做队列中的各个事务进行重做处理。进行重做处理的方法是正向扫描日志文件,按照日志文件中所登记的 *** 作内容,重新执行 *** 作,使数据库恢复到最近某个可用状态。

系统发生故障后,由于无法确定哪些末完成的事务已更新过数据库,哪些事务的提交结果尚未写入数据库,因此系统重新启动后,就要撤销所有的末完成的事务,重做所有的已经提交的事务。

但是,在故障发生前已经运行完毕的事务有些是正常结束的,有些是异常结束的。所以无须把它们全部撤销或重做。

通常采用设立检查点(checkPoint)的方法来判断事务是否正常结束。每隔一段时间,比如说5分钟,系统就产生一个检查点,做下面一些事情:a,把仍保留在日志缓冲区中的内容写到日志文件中;b,在日志文件中写一个“检查点记录”;c,把数据库缓冲区中的内容写到数据库中,即把更新的内容写到物理数据库中;d,把日志文件中检查点记录的地址写到“重新启动文件”中。

每个检查点记录包含的信息有在检查点时间的所有活动事务一览表、每个事务最近日志记录的地址。

在重新启动时,恢复管理程序先从“重新启动文件”中获得检查点记录的地址,从日志文件中找到该检查点记录的内容,通过日志往回找,就能决定哪些事务需要撤销,恢复到初始的状态,哪些事务需要重做。为此利用检查点信息能做到及时、有效、正确地完成恢复工作。

3,介质故障及其恢复介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部分或全部丢失。

这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大,磁盘上的物理数据和日志文件可能被破坏,这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。

具体方法如下。

(1)装入最新的数据库副本,使数据库恢复到最近一次转储时的可用状态。

(2)装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务。首先扫描日志文件,找出故障发生时己提交的事务,将其记入重做队列。然后正向扫描日志文件,对重做队列中的各个事务进行重做处理,方法是正向扫描日志文件,对每个重做事务重新执行登记的 *** 作,即将日志记录中“更新后的值”写入数据库。

这样就可以将数据库恢复至故障前某一时刻的一致状态了。

Shift键删除空白页,首先将光标定位在文档末尾,然后按住「Shift」键不松,鼠标单击选中空白页面,然后按下「Backspace或Delete」键即可删除空白页。

分页符删除空白页有一些空白页,即便是使用了Shift键删除法也无法删除,那么这个时候就要看看是不是插入了分页符,才会导致空白页的。表格删除空白页如果是以表格结束而产生的空白页,这个时候我们可以稍微调整下表格的大小,因为通常这种情况下都是因为表格太大占据了整整一页,使得最后一个回车在第二页无法删除,就形成了空白页。所以我们将表格调整的小一点,再按「Backspace」键就可以删除空白页了。

调整段落行距删除空白页如果还是以表格结尾而产生的空白页,除了利用方法三删除外,你也可以用这个方法来删除。首先将光标定位到空白页处,鼠标右键点击「段落」,将「行距」设为「固定值」,将「设置值」选择「1磅」,点击「确定」按钮也可以删除以表格结束的空白页。

查找替换删除空白页如果一个文档里出现了很多空白页,这个时候我们可以用替换功能来进行批量删除。首先按「Ctrl+H」键直接打开查找替换的窗口,在「特殊格式」中选择「手动分页符」,最后点击「全部替换」,就可以一下子把所有空白页都删除了!注意这个方法只适用于被隐藏的“分页符”导致的空白页,其它原因产生的空白页则不行。

如何配置才能使客户端连到数据库 要使一个客户端机器能连接oracle数据库 需要在客户端机器上安装oracle的客户端软件 唯一的例外就是java连接数据库的时候 可以用jdbc thin模式 不用装oracle的客户端软件 加入你在机器上装了oracle数据库 就不需要在单独在该机器上安装oracle客户端了 因为装oracle数据库的时候会自动安装oracle客户端 用过sql server数据库然后又用oracle的新手可能会有这样的疑问 问什么我用sql server的时候不用装sql server的客户端呢?原因很简单 sql server也是microsoft的 它在 *** 作系统中集成了sql server客户端 如果microsoft与oracle有协议 将oracle客户端也集成到 *** 作系统中 那我们也就不用在客户端机器装oracle客户端软机就可访问数据库了 不过 这好像是不可能实现的事情 也有的人会问 为什么在sql server中没有侦听端口一说 而在oracle中要配置侦听端口?其实sql server中也有侦听端口 只不过microsoft将侦听端口固定为 不允许你随便改动 这样给你一个错觉感觉sql server中没有侦听端口 咳 microsoft把太多的东西都封装到黑盒子里 方便使用的同时也带来的需要副作用 而oracle中的侦听端口直接在配置文件中 允许随便改动 只不过无论怎样改动 要与oracle服务器端设置的侦听端口一致 好 言归正传 我们如何做才能使客户端机器连接到oracle数据库呢? A. 安装相关软件 B. 进行适当的配置 A.在适当的位置安装适当的软件 在客户端机器 .在客户端机器上安装ORACLE的Oracle Net通讯软件 它包含在oracle的客户端软件中 .正确配置了sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN=DB_DOMAIN 一般情况下我们不用NAMES DEFAULT_DOMAIN参数 如果想不用该参数用#注释掉或将该参数删除即可 对于NAMES DIRECTORY_PATH参数采用缺省值即可 对于NAMES DEFAULT_DOMAIN参数有时需要注释掉 在下面有详细解释 .正确配置了tnsname ora文件 在服务器端机器 .保证listener已经启动 .保证数据库已经启动 如果数据库没有启动 用 Oracle i: dos>sqlplus / as sysdba sqlplus> startup Oracle i: dos>svrmgrl svrmgrl>connect internal svrmgrl>startup命令启动数据库 如果listener没有启动 用 lsnrctl start [listener name] lsnrctl status [listener name] 命令启动listener B.进行适当的配置 如何正确配置tnsname ora文件 可以在客户端机器上使用oracle Net Configuration Assistant或oracle Net Manager图形配置工具对客户端进行配置 该配置工具实际上修改tnsnames ora文件 所以我们可以直接修改tnsnames ora文件 下面以直接修改tnsnames ora文件为例 该文件的位置为 …\neork\admin\tnsnames ora (for windows)…/neork/admin/tnsnames ora (for unix) 此处 假设服务器名为testserver 服务名为 使用的侦听端口为 则tnsnams ora文件中的一个test网络服务名(数据库别名)为 test =(DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= ))) (CONNECT_DATA=(SERVICE_NAME=) )) 红色的内容为需要根据实际情况修改的内容 现解释如下 PROTOCOL 客户端与服务器端通讯的协议 一般为TCP 该内容一般不用改 HOST 数据库侦听所在的机器的机器名或IP地址 数据库侦听一般与数据库在同一个机器上 所以当我说数据库侦听所在的机器一般也是指数据库所在的机器 在UNIX或WINDOWS下 可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名 或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址 需要注意的是 不管用机器名或IP地址 在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名 否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析 PORT 数据库侦听正在侦听的端口 可以察看服务器端的listener ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看 此处Port的值一定要与数据库侦听正在侦听的端口一样 SERVICE_NAME 在服务器端 用system用户登陆后 sqlplus> show parameter service_name命令察看 如何利用配置的网络服务名连接到数据库 用sqlplus程序通过test网络服务名进行测试 如sqlplus system/manager@test 如果不能连接到数据库 则在tnsname ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值 通过用sqlplus> show parameter db_domain命令察看 此处db_domain参数值为 将其加到网络服务名后面 修改后的tnsname ora中关于该网络服务名的内容为 =(DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) )) 用sqlplus程序通过网络服务名测试 如sqlplus system/manager 关于为什们在网络服务名后面加db_domain参数 需要了解sqlplus连接数据库的原理 我在后面解决 常见故障中给出了详细的说明 如果上面的招数还不奏效的话 只好用一下乾坤大挪移了 将客户端的网络服务名部分 =(DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) )) 拷贝到服务器的tnsnames ora文件中 然后再服务器端用sqlplus system/manager连接到数据库 如果能连接成功 说明你的客户端与服务器端的网络有问题 如果连接不成功 用前面的部分检查网络服务名部分部分是否正确 如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题 建议重新安装数据库 常见故障解决办法 TNS (ORA ) TNS:could not resolve service name 该错误表示用于连接的网络服务名在tnsnames ora文件中不存在 如上面的tnsnames ora中的网络服务名只有test 假如用户在连接时用sqlplus system/manager@test 则就会给出TNS 错误 要注意的是 有时即使在tnsnames ora文件中有相应的网络服务名 可是用该网络服务名连接时还会出错 出现这种情况的典型配置如下(在客户端的机器上) sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN = tnsnames ora文件: test = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) sqlplus运行基本机理 在用户输入sqlplus system/manager@test后 sqlplus程序会自动到sqlnet ora文件中找NAMES DEFAULT_DOMAIN参数 假如该参数存在 则将该参数中的值取出 加到网络服务名的后面 即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/man 然后再到tnsnames ora文件中找网络服务名 这当然找不到了 因为该文件中只有test网络服务名 所以报错 解决的办法就是将sqlnet ora文件中的NAMES DEFAULT_DOMAIN参数注释掉即可 如#NAMES DEFAULT_DOMAIN = 假如NAMES DEFAULT_DOMAIN参数不存在 则sqlplus程序会直接到tnsnames ora文件中找test网络服务名 然后取出其中的host port tcp service_name 利用这些信息将连接请求发送到正确的数据库服务器上 另外原则上tnsnames ora中的配置不区分大小写 但是我的确遇到区分大小写的情况 所以最好将使用的网络服务与tnsnames ora中配置的完全一样 ORA : TNS:listener could not resolve SERVICE_NAME given in connect Descriptor 该错误表示能在tnsnames ora中找到网络服务名 但是在tnsnames ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致 解决的办法是修改tnsnames ora中的SERVICE_NAME 易混淆术语介绍 Db_name 对一个数据库(Oracle database)的唯一标识 该数据库为第一章讲到的Oracle database 这种表示对于单个数据库是足够的 但是随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱 为了解决这种情况 引 lishixinzhi/Article/program/Oracle/201311/18161

题主是否想询问“勤哲系统无法打开数据库的原因”?数据库服务器故障,数据库连接字符串出错。

1、 数据库服务器故障。数据库服务器宕机、网络问题等原因导致无法连接数据库。解决方法是可以检查数据库服务器的状态以及服务器密码,咨询相关技术人员帮忙处理。

2、数据库连接字符串出错。勤哲系统的数据库连接字符串中包含了数据库地址、用户名、密码等信息,这些信息填写错误,系统就无法连接数据库。解决方法是可以检查连接字符串,并且确保数据库服务器正常开启。

我们下载一款数据库恢复软件

2

双击打开安装这个软件

3

选择我同意,但记下一步

4

适当改一下文件安装路径

单击下一步

5

单击下一步,其他不用管

6

选中那个创建快捷方式,单击下一步

7

单击安装

8

安装完成之后

双击快捷方式

运行这个软件

9

单击打开数据库文件

选中要打开的文件

单击打开

10

选择版本

单击确定

11

这就是打开后的界面

12

选中要恢复的文件

单击导出所有表数据

以上就是关于导致 *** 作系统故障的主要原因有哪些全部的内容,包括:导致 *** 作系统故障的主要原因有哪些、mysql数据库运行过程中可能发生的故障包括、连接oracle数据库及故障解决办法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9843128.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存