实例启动与关闭
【学习目标】
在Oracle数据库创建以后,最常见也是最基本的操作就是配置初始化参数文件,启动和关闭Oracle数据库实例。本章内容围绕启动和关闭数据库,讲解Oracle数据库实例管理的一些基本知识。
【本章要点】
<!--[if !supportLists]-->● <!--[endif]-->启动和关闭Oracle数据库实例
<!--[if !supportLists]-->● <!--[endif]-->创建和管理Oracle数据库初始化参数文件
<!--[if !supportLists]-->● <!--[endif]-->了解Oracle数据库的3类诊断文件
<!--[if !supportLists]-->● <!--[endif]-->手工创建数据库
【关键术语】
Startup启动 Shutdown 关闭
Alert log file日志文件 Parameter file 参数文件
Background trace file 后台跟踪文件 Mount 装载
Session 会话 Restrict 限制
PFILE 静态参数文件 SPFILE 服务器端参数文件
Trace File 跟踪文件 Alert Log File 警告日志文件
<!--[if !supportLists]-->一、<!--[endif]-->数据库的四种状态
如图1-1所示,Oracle实例分为四种状态,分别为:
关闭(SHUTDOWN)、非装载(NOMOUNT启动)、装载(MOUNT)、打开(OPEN)。
图1-1 实例的启动与关闭示意图
如果实例没有打开,以普通用户身份时,会报错。
访问Oracle数据库首先要启动数据库,管理员连接到空闲实例,然后才能发出启动实例或数据库的命令。
启动Oracle服务器,每个阶段会打开不同的文件并且会完成不同的管理任务。
<!--[if !supportLists]-->二、<!--[endif]-->启动数据库的相关指令
数据库的启动命令是STARTUP,在使用STARTUP命令启动数据库的时候首先需要使用初始化参数,并可以将数据库以不同的方式打开。
<!--[if !supportLists]-->(一)、<!--[endif]-->数据库状态命令
<!--[if !supportLists]-->1.<!--[endif]-->启动数据库(STARTUP)
执行命令STARTUP,要求用户必须具有SYSDBA或SYSOPER系统权限,另外,如果要建立数据库,则必须以SYSDBA身份登录。该命令具体格式如下:
STARTUP [ FORCE ] [ RESTRICT ] [ PFILE = filename ]
[ OPEN [ RECOVER ] [ database ]
| MOUNT
| NOMOUNT ]
其中:
OPEN:启动实例,装载并打开数据库,为默认选项。
MOUNT:启动实例并装载数据库,但不打开数据库。
NOMOUNT:启动实例,但不装载数据库。
PFILE=:指定用于启动实例的非默认初始化参数文件名。
FORCE:强制终止实例,并重新启动数据库。
RESTRICT:启动后只允许具有RESTRICTED SESSION权限的用户访问数据库。
RECOVER:在数据库启动时,进行介质恢复。
<!--[if !supportLists]-->2.<!--[endif]-->修改数据库(ALTER)
要使数据库由NOMOUNT进入MOUNT阶段或由MOUNT进入OPEN阶段,需要使用ALTER DATABASE命令:
ALTER DATABASE { MOUNT | OPEN }
要显示数据库的当前处于的启动状态,可以使用如下语句查询:
SQL> SELECT status FROM v$instance;
STATUS 列显示了V$INSTANCE视图对数据库状态的描述:
<!--[if !supportLists]-->● <!--[endif]-->STARTED 数据库处于启动状态(NOMOUNT)
<!--[if !supportLists]-->● <!--[endif]-->MOUNTED 数据库处于装载状态(MOUNT)
<!--[if !supportLists]-->● <!--[endif]-->OPEN 数据库出于正常打开状态(OPEN)
<!--[if !supportLists]-->● <!--[endif]-->OPEN MIGRATE 数据库以升级或降级模式打开(UPGRADE | DOWNGRADE)
用户可以在数据库关闭状态下直接执行STARTUP或STARTUP OPEN打开数据库。
Tips:当我们使用SQLPLUS连接进入数据库时,将会看到提示。如果提示信息如下:
[oracle@oracle ~ ]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 1 15:01:06 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
表示连接到空闲实例,即数据库处于关闭状态。
<!--[if !supportLists]-->(二)、<!--[endif]-->数据库模式指令
<!--[if !supportLists]-->1.<!--[endif]-->只读模式打开数据库(READ ONLY)
在正常启动状态下,默认数据库进入读写状态(ReadWrite)。在必要时可以将数据库设置为只读状态(ReadOnly)。在只读状态下,用户只能查询数据库,但不能以任何方式对数据库对象进行修改。
但要注意,在只读状态下,数据库还可以进行数据库的恢复或者一些维护操作操作,比如:数据文件仍然可以联机和脱机,已脱机的数据文件或表空间可以进行恢复。对其他文件如控制文件、跟踪文件、审计文件、警告文件等仍然可以继续写入。
使用如下命令,使数据库进入只读状态或进入读写状态。
<!--[if !supportLists]-->1) <!--[endif]--> STARTUP OPEN [ READ WRITE | READ ONLY ]
<!--[if !supportLists]-->2) <!--[endif]--> ALTER DATABASE OPEN [ READ WRITE | READ ONLY ]
其中:
READ WRITE:进入读写状态
READ ONLY:进入只读状态
//以READ ONLY模式打开数据库
SQL> startup open read only;
//尝试创建表
SQL> create table t11 nologging as select * from scott.dept;
create table t11 nologging as select * from scott.dept
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access
//尝试对表数据进行查询
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 DBA BEIJING
30 SALES CHICAGO
40 OPERATIONS BOSTON
数据库在READ ONLY模式下,对对象的DDL(创建、修改、丢弃、截断)、DML(插入、更新、删除)等操作都不被允许。可以对数据库中对象进行查询。
<!--[if !supportLists]-->3.<!--[endif]-->限制模式打开数据库(RESTRICT)
数据库管理员可以使用限制模式打开数据库。限制模式只允许具有RESTRICTED SESSION权限的用户进行连接,普通用户则不能连接。
当数据库管理员对数据库进行特定的维护操作,比如导入导出数据、装载数据、迁移数据库等等时,可以讲数据库置为限制模式。
<!--[if !supportLists]-->1) <!--[endif]--> STARTUP RESTRICT ;
启动数据库时,将数据库置为限制模式。
<!--[if !supportLists]-->3) <!--[endif]--> ALTER SYSTEM ENABLE RESTRICTED SESSION ;
数据库启动后,将数据库改为限制模式。
<!--[if !supportLists]-->4) <!--[endif]--> ALTER SYSTEM DISABLE RESTRICTED SESSION ;
取消数据库的限制模式。
Question:在修改数据库限制连接模式前?
Tips:想不明白的话,就在后面的章节中找答案吧!
<!--EndFragment-->来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29781254/viewspace-1744958/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29781254/viewspace-1744958/