从SQL*PLUS中启动和关闭数据库
一、启动数据库
在启动数据库时,oracle在$ORACLE_HOME/dbs(linux)或者%ORACLE_HOME%/database(windows)中按照下列顺序寻找参数文件:
spfile$oracle_sid.ora
spfile.ora
init$oracle_sid.ora
如果想使用自己指定的参数文件启动数据库,需要使用pfile指定初始化参数文件的路径和名称,但不能使用spfile指定服务器参数文件。如:pfile=pfile_path_name,
1、启动实例
读取参数文件,分配内存、启动后台进程,读取控制文件的路径和名称,但不读取控制文件。
SQL>startup nomount
重建或者恢复控制文件需要在这种模式下。
2、装在数据库
SQL>startup mount
如果已经启动实例:
SQL>alter database mount
按照参数文件中control_files指定的路径和名称打开控制文件,读取数据文件和重做日志的路径和名称
修改数据库如归档模式、修改数据文件、日志文件的名称、路径,恢复数据库,通常需要在这种模式下。
3、打开数据库
SQL>STARTUP [OPEN] --startup默认为startup open
如果已经装在数据库:
SQL>alter database open
根据控制文件中指定的路径和名称读取数据文件和控制文件,并且检查数据库是否一致,如果一致则打开数据库,循序用户连接。
如果数据库不一致,则要看是需要实力恢复还是介质恢复,如果需要实力恢复,则数据库自动进行前滚和后滚,完成数据库恢复。
如果是需要介质恢复,则返回提示用户需要介质恢复,当用户完成介质恢复之后,打开数据库。
二、限制数据库的访问
当需要维护数据库时,需要打开数据库,但不想普通用户连接,可以以受限方式打开
1、当数据库关闭时
sql>startup restrict;
当数据库处于nomount、mount、或者open模式时,也可以使用下列方式使数据库以受限方式打开
SQL>STARTUP FORCE RESTRICT;
以受限方式打开数据库,除非用户具有restricted session权限,否则当用户连接数据库时,将返回错误:oracle只对有restrictedsession权限的用户可用.
当以受限方式打开数据库之后,可以使用下列方式取消受限方式:
SQL>alter system disable restricted session;
2、当数据库已经打开:
sql>alter system enable restricted session ;
以这样方式启用受限方式,启用受限之前已经连接数据库的用户不受影响,可以继续进行操作。但不允许不具有restricted session权限的用户连接。
取消受限:SQL>alter system disable restricted session;
三、数据库只读
这种方式主要用于备用数据库
当不允许用户更改数据库时也可以使用这种方式。
1、sql>startup mount;
2、sql>alter database open read only;
四、关闭数据库
1、shutdown [normal] --shutdown默认为shutdown normal
a、不允许新用户连接数据库
b、等待所有已经连接的用户离开数据库
c、发布checkpoint,把内存中的数据写入数据文件和日志文件
d、终止后台进程、释放内存,关闭数据库
2、shutdown transactional
a、不允许新用户连接数据库
b、断开没有操作的用户的连接
c、正在开展事务的用户允许完成事务,完成事务之后被断开连接,不允许开始新的事务。
d、发布checkpoint,将内存中的数据写入数据文件和日志文件
e、终止后台进程、释放内存,关闭数据库
3、shutdown immediate
a、不允许新用户连接数据库
b、断开所有用户的连接,没有完成的事务将被rollback
c、发布checkpoint,将内存中的数据写入数据文件和日志文件
d、终止后台进程、释放内存,关闭数据库
4、shutdown abort
a、不允许建立新连接
b、断开所有用户的连接
c、未完成的事务既不被提交也不被rollback
d、不发布checkpoint,不会将内存中的数据写入数据文件年和日志文件
e、终止后台进程,释放内存,关闭数据库
该关闭方式,在启动数据库的时候需要实例恢复。
以这种方式关闭数据库,然后以只读方式打开数据库,需要介质恢复。recover database;
五、停顿数据库
当数据库处于停顿时,有如下限制:
1、所有非活动会话不允许发布任何数据库命令
2、允许完成所有活动会话
3、所有新登录企图被挂起排队
4、允许DBA进行操作
SQL>alter system quiesce restricted;
结束停顿:
SQL>alter system unquiesce;
六、挂起数据库
数据库挂起之后,禁止所有对数据文件的读和写。
SQL>alter system suspend;
继续执行:
SQL>alter system resume;
七、删除数据库
sql>drop database;
八、监控数据库的状态
1、使用v$instance监控实例状态
2、使用database_properties监控数据库的设置
3、使用v$database监控数据库的状态