数据库关闭,shutdown三种语句。

1、shutdown normal  
   正常方式关闭数据库。

2、shutdown immediate  
   立即方式关闭数据库。  
   在SVRMGRL中执行shutdown immediate,数据库并不立即关闭,  
   而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源),  
   当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。

3、shutdown abort  
   直接关闭数据库,正在访问数据库的会话会被突然终止,  
   如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间 
-------------------------------------------------------- 
shutdown abort 的时候,跟kill 进程是一样的效果 
数据库立即关闭,这个时候文件状态可能不一致 
因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致并且不用进行崩溃恢复

若检查点信息一致,则做崩溃恢复 
若检查点信息不一致(正好在更新文件头)则需要做介质恢复

这些问题都好处理,最怕的问题是这个时候系统有大量IO,结果这样造成写的突然中断,碰巧造成文件块的逻辑坏块,那麻烦比较大一些,尤其是系统表空间的block损坏

虽然shutdown abort 出错的几率很小,1000个人可能只有一个人碰到,但是我们还是要小心。 
正确的处理流程是,shutdown immediate ,若数据库迟迟不能down下来,在os上观察IO状况,几乎没有io的时候,另开一窗口shutdown  abort ,几乎不会出问题了
--------------------------------------------------------
http://www.itpub.net/showthread.php?threadid=180315&pagenumber=  
先用IMMEDIATE来DOWN,实在不行了,看一下数据库文件上没IO了,再用ABORT  
------------------------------------------------------------------------------
你可以尝试先在系统级杀掉非后台Oracle进程,在连接shutdown immediate就安全多了

在Oracle8i里,当数据库失去响应以后,你在操作系统上杀掉用户进程后,一般数据库就可以恢复正常了 
-------------------------------------------------------------------------------
先 shutdown immediate 应该是首选

然后不行再重新shutdown abort

其实起不来也是因为os的缘故,在文件正在写的时候出现问题导致文件不一致或者损坏……

原文地址:https://www.cnblogs.com/grisa/p/10303707.html

时间: 2024-08-14 19:52:19

数据库关闭,shutdown三种语句。的相关文章

Oracle数据库备份与恢复的三种方法

转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10. 有删改 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份. 导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去. 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的

EntityFramework 更新数据库字段的三种方法

例: 实体类: public class TestDbContext : DbContext { public DbSet<Test> Tests { get; set; } public TestDbContext() : base() { } } public class Test { public long ID { get; set; } public string Name { get; set; } public string Email { get; set; } public

mysql数据库改名的三种方法

前不久去面试,被问到Innodb引擎的表如何改数据库名,当时我也只回答了MyISAM改如何操作,被一些细节问题打败,真是操蛋. 如果表示MyISAM那么可以直接去到数据库目录mv就可以. Innodb完全不行,自己测试过,会提示相关表不存在. 第一种方法: RENAME database olddbname TO newdbname 这个是5.1.7到5.1.23版本可以用的,但是官方不推荐,会有丢失数据的危险 第二种方法: 1.创建需要改成新名的数据库.2.mysqldum 导出要改名的数据库

SQL SERVER 数据库备份的三种策略及语句

1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋.使用这种类型的备份带来的问题是非常缺乏灵活性,而且当数据库被冲掉后,你面临丢失大量数据的潜在威胁.例如,假设你每天在午夜备份数据库. 如果服务器在晚上11点崩溃了,你将丢失前面23个小时对数据所做的全部修改.对大多数系统来说,这是无法接受的.对此规则,为数不多的例外如下: 1.系统中所存的数据可以

2019-3-1 09:05:16数据库建立的三种范式及冗余字段

第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性.如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系.在第一范式(1NF)中表的每一行只包含一个实例的信息.简而言之,第一范式就是无重复的列. 1NF的定义为:符合1NF的关系中的每个属性都不可再分 下表所示情况,便不符合1NF的要求: 说明:在任何一个关系数据库中,第一范式

sql注入过程中后台数据库类型的三种判断方式

后台数据库类型判断: 一.通过页面返回的报错信息,一般情况下页面报错会显示是什么数据库类型,在此不多说: 二.通过各个数据库特有的数据表来判断: 1.mssql数据库 http://127.0.0.1/test.php?id=1 and (select count(*) from sysobjects)>0 and 1=1 2.access数据库 http://127.0.0.1/test.php?id=1 and (select count(*) from msysobjects)>0 an

数据库对表的三种分割技术

一.水平分割  水平分割根据某些条件将数据放到两个或多个独立的表中.即按记录进分分割,不同的记录可以分开保存,每个子表的列数相同.水平切割将表分为多个表.每个表包含的列数相同,但是数据行更少.例如,可以将一个包含十亿行的表水平分区成 12 个表,每个小表表示特定年份内一个月的数据.任何需要特定月份数据的查询只需引用相应月份的表. 通常用来水平分割表的条件有:日期时间维度.地区维度等,当然还有更多的业务维度.下面我举几个例子来解说一下 案例1:某个公司销售记录数据量太大了,我们可以对它按月进行水平

Oracle数据库分页的三种方法

-- 不能对ROWNUM使用>(大于1的数值).>=(大于或等于1的数值).=(大于或等于1的数值),否则无结果-- 所以直接用只能从1开始-- rownum >10 没有记录,因为第一条不满足去掉的话,第二条的rownum又成了1,所以永远没有满足条件的记录.select * from student where rownum>=1; --如果想要用rownum不从1开始,需按下面方法使用select a1.* from (select student.*,rownum rn f

转载:oracle数据库关闭和启动命令

前言 先以sysdba登录到sqlplus然后运行以下命令. windows平台下,oracle 中组成实例的后台进程是由 oracle 服务派生出来的线程实现的,所以任务管理器看不见 DBWn 之类的后台进程 (linux 平台下 用 ps aux 命令是可以看见的).shutdown 停掉实例过程,是关闭后台进程(这里对应线程)和释放 SGA 内存.因为关闭的是线程,所以在任务管理器中看不出变化.oracle 进程是用来派生后台线程的服务进程,尽管他还在,实际上 oracle 实例已经停止了