专栏首页bisal的个人杂货铺因host命令导致无法正常SHUTDOWN的实验

因host命令导致无法正常SHUTDOWN的实验

SHUTDOWN有几个参数可以使用:

SHUTDOWN NORMAL:NORMAL也是默认的子句,执行的条件是

No new connections are allowed after the statement is issued.

Before the database is shut down, the database waits for all currently connectedusers to disconnect from the database.

下次启动时不需要任何实例恢复过程。

SHUTDOWN IMMEDIATE:执行的场景是

To initiate an automated and unattended backup.

When a power shutdown is going to occur soon.

When the database or one of its applications is functioning irregularly and youcannot contact users to ask them to log off or they are unable to log off.

执行的条件是

No new connections are allowed, nor are new transactions allowed to be started,after the statement is issued.

Any uncommitted transactions are rolled back. (If long uncommitted transactionsexist, this method of shutdown might not complete quickly, despite its name.)

Oracle Database does not wait for users currently connected to the database todisconnect. The database implicitly rolls back active transactions and disconnectsall connected users.

同样地,下次启动时不需要任何实例恢复过程。

SHUTDOWN TRANSACTIONAL:执行的场景是需要进行例行的实例停止,但首先允许所有活动的交易完成,执行的条件是

No new connections are allowed, nor are new transactions allowed to be started,after the statement is issued.

After all transactions have completed, any client still connected to the instance isdisconnected.

At this point, the instance shuts down just as it would when a SHUTDOWNIMMEDIATE statement is submitted.

下次启动时不需要任何实例恢复过程。

这种关闭操作不会让客户端丢失任务,同时不要求所有用户退出。

SHUTDOWN ABORT:执行的场景是

You need to shut down the database instantaneously (for example, if you know apower shutdown is going to occur in one minute).

You experience problems when starting a database instance.

执行的条件是

No new connections are allowed, nor are new transactions allowed to be started,after the statement is issued.

Current client SQL statements being processed by Oracle Database areimmediately terminated.

Uncommitted transactions are not rolled back.

Oracle Database does not wait for users currently connected to the database todisconnect. The database implicitly disconnects all connected users.

下次启动时将需要实例恢复过程。

可以看出ABORT是一种暴力的关闭,不会隐式地回滚交易,由于仍存在脏块,所以下次启动时需要进行实例恢复。

实验:

1. 执行shutdown normal命令关闭数据库

SQL> shutdown normal

发现提示SHUTDOWN: waiting for logins to complete.

从上面的介绍看,使用shutdown normal的方式关闭数据库,不允许新连接接入,同时需要所有已连接的客户端断开后,才能继续正常关闭。怀疑此处可能存在仍未断开的连接。

使用kill -9 7255仍不起作用。

2. 执行shutdown immediate命令关闭数据库

于是直接CTRL+C中断shutdown normal,然后使用shutdown immediate命令关闭数据库

SQL>shutdown immediate

此时提示SHUTDOWN: Active processes prevent shutdown operation

MOS上有篇文章(416658.1)专门介绍了immediate出现这种报错的问题,给出的原因是:

“If the DB Control repository is running on the database target against which shutdown immediate was attempted then an incorrect order of events seems used.You should stop DB Control first to get rid of all connections between DB Control and the repository database and then shutdown the database with 'shutdown immediate'.”

意思是说可能DB Control库正在执行一些事件,需要停止DB Control避免所有DB Control和库之间的连接,然后才能执行shutdown immediate关闭,但这里我没有这样可能的操作,应该是没有普通用户未执行exit的场景,想一想,原来之前使用SYS登录后用过host切换到OS下,但并未切回退出,因此可能由于这样的问题,导致shutdown immediate出现hang的情况

3. 执行shutdown abort命令关闭数据库

按照MOS的说法,使用

SQL> shutdown abort   直接关闭

SQL> startup restrict     允许具有restrict session权限的用户才能登陆,换句话,避免用户再登陆导致无法正常关闭

SQL> shutdown normal 执行normal正常关闭

此时一切都安静了。

总结

1. 非到万不得已尽量不要使用ABORT,谁知道会出现什么诡异的事情。

2. 执行关闭前,建议断开所有使用SYS连接的会话,特别是使用host切换OS的连接,可能会不注意,这点是教训。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JDBC读取数据优化-fetch size

    最近由于业务上的需求,一张旧表结构中的数据,需要提取出来,根据规则,导入一张新表结构中,开发同学写了一个工具,用于实现新旧结构的transformation,

    bisal
  • 预估表和索引空间容量的方法

    最近有一个业务功能要上线,生产数据库环境之前已经到位,目前要做的是估算下,业务数据量对数据库空间,有何影响。开发同学根据表字段定义,分别统计出了最大占用空间,以...

    bisal
  • imp错误IMP-00098: INTERNAL ERROR: impgst2Segmentation fault

    如果使用impdp要看dump的内容,可以使用sqlfile参数,他会将所有的DDL语句写入文件,

    bisal
  • k8s|Blue/Green Deployments on Kubernetes

    Kubernetes has a really awesome built-in feature called Deployments. Deployments...

    heidsoft
  • Kit 3D 更新

    Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

    用户1172164
  • 面试官怎么看你的Github profile

    Udacity的Machine Learning纳米学位课程中,关于Github的笔记。 听课范围: Github Profile Git 和 Github...

    杨熹
  • Validating ECDSA Signatures in Golang

    The Go programming language is widely used in the Kubernetes and blockchain comm...

    李海彬
  • go语言接受者的选取

    1.如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型)。 2.如果接受者是一个 slice,并且方法不执行 reslic...

    charlieroro
  • SAP UI5 CRM Reuse Fiori应用 note.js代码审查结果

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • 异步分布式平均:一种用于平均误差分析的交换系统框架(CS MA)

    本文研究了异步更新下分布平均问题的期望平均误差,在这种情况下,异步意味着不存在全局时钟,以及通信不确定性中的随机特性,如通信延迟和数据包丢失。虽然已有的一些工作...

    Elva

扫码关注云+社区

领取腾讯云代金券