启动数据库
--使用STARTUP命令启动Oracle数据库。
STARTUP [FORCE][RESTRICT][PFILE=文件名]
[OPEN [RECOVER][database]
|MOUNT
|NOMOUNT]
--注意:必须具有SYSDBA权限才可以执行STARTUP命令。
- 当Oracle收到STARTUP命令后,其执行顺序如下:
①首先使用服务器上的spfile.ora文件启动实例。
② 如果没有找到spfile.ora文件,就使用服务器上默认的SPFILE文件启动实例。
③ 如果没有找到默认的SPFILE文件,就使用服务器上init.ora文件启动实例。
④ 如果没有找到init.ora文件,就使用服务器上默认的PFILE文件启动实例。 - 可在STARTUP命令中使用PFILE选项覆盖读取参数文件的优先次序:
STARTUP PFILE = 参数文件名
--可以是PFILE,也可以是SPFILE
--例如,指定使用的PFILE文件
STARTUP
PFILE=D:\Oracle\product\11.2.0\dbhome_1\data
base\INITORCL.ORA
-- 还可以指定所使用的SPFILE文件
STARTUP
PFILE=D:\Oracle\product\11.2.0\dbhome_1\data
base\SPFILEORCL.ORA
- 数据库启动方式:
未装载启动(UNMOUNT)
装载启动(MOUNT)
正常启动(OPEN)——数据库启动的默认方式
强制启动(FORCE)
限制启动(RESTRICT)
未装载启动(STARTUP NOMOUNT)
- 该命令只启动实例并不打开数据 库中的任何文件。
- Oracle将进行如下的工作:
分配SGA,即配置所有的内存 缓冲区和相关的结构;
启动所需的全部后台进程;
打开报警文件(alertSID.log)和追踪文件(trace)。 - 这种状态常在创建数据库或重建控制文件时使用。
装载启动(STARTUP MOUNT)
- 该命令启动实例并装载数据库,但没有打开数据库。
- Oracle将进行如下的工作:
将一数据库与已启动的实例 关联起来;
利用初始化参数文件中的说明锁定并打开控制文件;
读控制文件以获取数据文件和重做日志文件的名字和状态信息,并不检查这些文件此时是否存在。
这种状态常在对数据库进行某些特殊维护时使用。
正常启动(STARTUP OPEN open可省略)
-
该命令完成启动实例、装载数 据库和打开数据库三个步骤。
-
Oracle将进行如下的工作:
启动实例并打开控制文件;
打开所有的联机数据文件;
打开所有的联机重做日志文件。 -
这是数据库正常操作的状态。在该状态下,任何合法的用户都可以与数据库连接和执行正常的数据访问操作。
强制启动(STARTUP FORCE)
- 该命令是强行关闭数据库 (shutdown abort)和启动数 据库(startup)两条命令的 一个综合。
- 该命令仅在关闭数据库遇到问题不能关闭数据库时采用。
限制启动(STARTUP RESCTRICT)
- 这种方式下,数据库被成功打 开,但仅允许具有 RESTRICTED SESSION系统权 限的用户(一般是具有DBA角色的用户)才可以使用数据库。
- 这种方式常用来对数据库进行维护时使用,如要维护数据库的结构,或对数据库进行导入和导出操作时不希望其他用户连接到数据库操作数据时。
- 也可以使用ALTER SYSTEM命令将一运行数据库状态置为限制模式:
ALTER SYSTEM ENABLE RESTRICTED SESSION;
- 使用上述SQL语句将数据库状态设置为限制模式时,Oracle服务器只保证将来登录数据库的用户必须具有RESTRICTED SESSION系统权限,在此之前已经在数据库上用户仍可以继续工作。因此,可能需要使用ALTER SYSTEM KILL SESSION命令杀死这些用户进程。
- 若要将限制模式的数据库重新置为正常模式,可使用如下语句:
ALTER SYSTEM DISABLE RESTRICTED SESSION;
杀死用户进程示例
- 首先启动SQL *Plus,以scott用户登录数据库。
- 再启动一个SQL *Plus,以sys用户登录数据库,获取用户进程信息。
select sid, serial#, username, type
from v$session
where type = 'USER';
- 根据用户的SID(会话标识符)和serial#(序列号)杀死scott用户进程。
--10为SID,9为serial#
alter system kill session '10, 9';
- 在以scott用户登录的会话中执行SQL语句,系统会显示出错信息“ORA-00028: 您的会话己被终止”。
修改数据库的状态
- 可以使用ALTER DATABASE命令修改数据库状态。
- 将数据库从NOMOUNT状态转换成MOUNT状态:
ALTER DATABASE MOUNT;
- 将数据库从MOUNT状态转换成OPEN状态。
--转换成可读写状态
ALTER DATABASE OPEN (READ WRITE);——可省略
--转换成只读状态,以防止用户进程修改数据库中的数据
ALTER DATABASE OPEN READ ONLY;
只读数据库
- 特点:
不能产生重做日志信息;
可执行查询;
可使用本地管理的表空间来执行磁盘排序;
可将数据文件脱机和联机,但不能对表空间进行这样的操作;
可执行数据文件和表空间的脱机恢复。
只读状态的数据库主要是为待机(standby)数据库设计的。