只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库。 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库。 虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库。 在oracle用户下: 启动监听程序 lsnrctl start 关闭监听程序lsnrctl stop 查询监听程序状态lsnrctl status
STARTUP options | upgrade_options
options为:[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] | [ OPEN [open_options] [dbname] ] | NOMOUNT ], NOMOUNT、MOUNT、OPEN为startup的三个阶段,不能在命令中同时存在。其中,open_options为:READ {ONLY | WRITE [RECOVER]} | RECOVER。 upgrade_options为:[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
启动数据库的步骤:
启动数据库过程中,文件的使用顺序是:参数文件,控制文件,数据文件和重做日志文件。这些文件都正常时,数据库才能正常启动。
以NOMOUNT方式打开实例 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库、读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
以MOUNT方式打开实例,如果未指定dbname,则打开以参数文件中DB_NAME参数指定的数据库。 安装启动,这种方式启动下可执行:
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,但此时不对数据文件和日志文件进行校验检查。
先执行“nomount”, 然后执行“mount”, 再打开包括Redo log文件在内的所有数据库文件, 这种方式下可访问数据库中的数据。
以默认参数文件(SPFILE)开启实例,装载默认的数据库,并打开数据库。 等于以下三个命令
startup nomount
alter database mount
alter database open
STARTUP会分三步开启数据库,分别为: 1、Start and instance(NOMOUNT); 2、Mount the database(MOUNT); 3、Open the database(OPEN)
约束方式启动 以此模式打开的数据库只有拥有RESTRICTED SESSION系统权限的用户才能连接。 非特权用户访问时,会出现以下提示:
ERROR:
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
打开后,可以使用ALTER SYSTEM命令将该状态设为disable,以关闭restricted将数据库正常打开。
带初始化参数文件的启动方式 先读取参数文件,再按参数文件中的设置启动数据库 使用指定的文件中的参数打开实例。在未使用PFILE的情况下,startup以默认参数文件中的参数打开。
当不能关闭数据库时,可以用startup force来完成数据库的关闭,先关闭数据库,再执行正常启动数据库命令。 强制打开数据库,在open之前会先执行shutdown,相当于shutdown abort; startup open。在当前实例正在运行的情况下,如果不使用FORCE的话,startup时会报错。FORCE可以在调试环境或非生产环境中使用,需慎用。
shutdown的四个参数:normal、transactional、immediate、abort 缺省不带任何参数时表示是normal方式
关闭数据库步骤:
正常方式关闭数据库。 不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
立即方式关闭数据库。 在SVRMGRL中执行shutdown immediate,数据库并不立即关闭, 而是在Oracle执行某些清除工作后才关闭(终止会话、释放会话资源), 当使用shutdown不能关闭数据库时,shutdown immediate可以完成数据库关闭的操作。 不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动ROLLBACK的。启动时不需要实例恢复。
直接关闭数据库,正在访问数据库的会话会被突然终止, 如果数据库中有大量操作正在执行,这时执行shutdown abort后,重新启动数据库需要很长时间。
不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。
使用shutdown的时候 normal和immediate可能都因为连接没有释放而造成数据库无法重启的现象。
SQL>shutdown abort; --这个方法是不等待会话结束就直接关闭掉数据库,一般情况下事不推荐使用的。实在关不掉的话,一般也没有什么问题。跟直接KILL进程差不多。
SQL>startup --shutdown abort以后在启动数据库。
SQL>startup force; --这个方法是直接关闭掉数据库然后再重启数据库,这个方式也可以达到关闭并重启的目的。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有