目录
使用Win+R快捷键,输入services.msc打开电脑本地服务。
shutdown normal是正常的关闭方式,normal 方式时Oracle关闭数据库的默认选项,这种方式关闭数据库时会等待用户会话从数据库断开连接后,此时数据库不再接受新的用户进程连接的请求,且数据库的请求会得到处理,未提交的事务会被回滚。
shutdown abort关闭数据库是放弃一切事务,立即关闭。
abort
方式为关闭数据库最快速的方式,但是关闭数据库时并不会等待用户进程断开连接,这个时候,尽管数据库会拒绝新产生的用户请求进程,但数据库中可能还存在之前已经建立的用户进程,或者用户请求的事务未提交、或数据库已提交的数据尚未写入到存储设备中等等情况。
这种方式关闭数据库时,未提交的事务并不会进行回滚,已连接到数据库的用户请求会被 terminated(中断)
。并且通过 abort
方式关闭的数据库,在数据库下一次启动时需要做 Instance Recovery(实例恢复)
。
shutdown immedate立即关闭数据库。
immediate
方式关闭数据库与 abort
方式类似,新的数据库连接都不被允许,也不允许产生新的事务。不同的是,shutdown immediate
方式处理关闭数据库时,会将数据库中未提交部分的事务进行回滚。
正因为 immediate
方式关闭数据库时对未提交的事务进行了回滚,下一次数据库实例启动时不用进行实例恢复。
如果关闭数据库时库中有大量长事务存在,immediate
方式的关闭也不会很块。
transactional
方式更像是一种定时任务式的关闭,正如 transactional
意为事务型。使用这种方式关闭数据库时,新连接到数据库的用户进程会被断开,对于已连接到数据库的用户并不会等待用户进程完全退出,而是当数据库中的事务被完全处理结束的时候,直接关闭数据库,可能这个时候数据库中仍然存在用户未释放的连接。
这种方式关闭数据库,可以有效防止数据库中丢失数据,因为数据库的关闭是在数据库中的所有事务处理结束后进行的。且无需用户断开与数据库的连接。数据库下一次启动时也不需要进行实例恢复。
transactional local
模式则指定仅当本节点的事务处理结束后进行数据库的关闭操作,而不是等待所有的数据库事务处理结束。
以shutdown normal为例子(有关更多的基础看上面文章开头给出的链接)。
参考作者:https://www.jianshu.com/p/18162324c194
既然关闭了数据库,那么也可以手动的开启数据库。
首先看数据库的启动过程的图解。
根据上面我们使用shutdown normal的数据库,现在对其进行启动。
- startup nomount;
- alter database mount;
- alter database open;
也可以直接使用下面的一条语句跳过中间的过程。
startup open
补充:
(1)Oracle 11g数据库默认的日期格式为:“DD-MM 月-YY”,例如“2022-07-09”应该输入为“9-7 月-20”,但是这不符合我们日常的习惯,所以更改格式的语法:
- 修改日期格式:ALTER SESSION
- SET NLS_DATE_FORMAT="YYYY-MM-DD"
- 输出当前日期:select sysdate from dual;
(2)查看用户状态(是否解锁)
select username,account_status from dba_users;