Oracle启动和关闭的多个阶段

Oracle公司建议的数据库启动顺序为:首先启动Database Control,然后启动数据库侦听器,最后启动数据库。启动数据库本身需要多个步骤。并非一定要按此顺序进行,在更复杂的环境中,如集群系统或Enterprise Manager Grid Control管理的系统,可能还有其他过程。过于简单的单实例环境而言,按此顺序执行是可以满足要求的。

3.2.1 Database Control 的启动和连接

Database Control 是用于管理一个数据库(可以是群集系统)的工具,如果同一个ORACLE主目录下有多个数据库实例正在运行,则每个主实例都必须有对应的Database Control实例。Database Control工具使用Perl和JAVA编写而成,从浏览器访问。不必在系统中安装JAVA运行时环境或PERL解释器,这些都在ORACLE主目录中提供,由OUI安装。与Database Control 进行的所有通信通过HTTPS完成,因此尽可以在全球任何位置通过浏览器使用Database Control, 通信将十分安全,所有的防火墙代理服务器都可以路由它们。对防火墙需要执行的唯一配置是使其了解Database Control侦听连接请求使用的端口。

 在创建数据库时已经完成了Database Control的配置。该配置包含了两个关键信息:运行Database Control的计算机的主机名,以及Database Control侦听的TCP端口。如果有必要更改其中之一,将需要重新配置Database Control

 要启动Database Control,请使用emctl实用程序。此程序位于ORACLE_HOME/bin目录中。下面三个命令用于启动和停止Database Control并对其状态进行检查。

emctl start dbconsole

emctl stop dbconsole

emctl status dbconsole

要使任一命令生效,必须设置三个环境变量:PATH,ORACLE_HOME和ORACLE_SID。PATH使操作系统可以找到emctl实用程序。ORCLE_HOME和ORACLE_SID的作用是使emctl找到Database Control配置文件。这些配置文件位于三个位置:ORACLE_HOME/sysman/config目录包含应用于从ORACLE主目录运行的所有Database Control 实例的通用配置指令。要使用WEB浏览器连接到Database Control,可以使用下列URL:

https://hostname:port/em

其中,hostname是运行Database Control的计算机的名称,PORT是侦听传入连接请求的TCP端口。如果主机有多个名称或网卡,则任何一个都可以使用。用户甚至可以使用环回地址,因为Database Control可以侦听所有地址。为了识别端口,可以使用emctl。emctl status dbconsole的输出显示运行Database Control的端口。另外,可以打开ORACLE_HOME/install/portlist.ini文件进行查看,此文件中列出了由OUI和DBCA配置的所有从浏览器连接到刚才给出的URL时,可能收到一条与Database Control返回到浏览器的数字证书有关的消息。


3.2.2启动数据库侦听器

数据库侦听器是一个进程,它监视一个端口的数据库连接请求。这些请求使用Oracle Net,即Oracle的专用通信协议。ORACLE NET 是运行在正使用的任何基础网络协议上的分层协议。可以采用三种方式来启动数据库侦听器:

A 使用lsnrctl实用程序

B 使用Database Control

C 使用一项Windows服务启动

lsnrctl实用程序位于ORCLE_HOME/bin目录中。关键命令如下:

lsnrctl start

lsnrctl status

其中,listener是侦听器的名称。默认为LISTENER,大多数情况下,该名称都十分恰当。用户将可以了解到是否用另一个名称创建侦听器。



3.2.3 启动SQL*PLUS

正如前面所说,SQL*PLUS的启动十分简单。SQL*PLUS只是一个用于向数据库发送SQL命令的基本客户端-服务器程序。读者需要了解的一个变化是NOLOG开关。默认方式下,SQL*PLUS程序会立即提示输入用户名、口令、和数据库连接串。这种方式适用于普通的终端用户,但对于数据库管理员而言,是没有用处的,因为它要求数据库已经处于打开状态。要在不提示登录的情况下启动SQL*PLUS,请使用/NOLOG开关。

sqlplus / nolog

执行上述命令将得到一个SQL提示符,用户可以在此提示符下使用各种语法进行连接,很多使用W indows的DBA都修改“开始”菜单快捷项,以便包含NOLOG开关。


3.2.4 启动和关闭数据库

准确的讲,不能说是启动和关闭数据库:可以说是启动和关闭实例,就数据库而言,则说加载和打开,然后卸载和关闭。这可以从SQL*PLUS中使用STARTUP命令和SHUTDOWN命令执行,也可以通过Database Control执行,在Windows 系统中,可以通过控制在其中运行实例的WINDOWS服务来执行。警报日志将详细描述所有这些操作,不管以什么方式启动,日志都将予以详细描述。启动和关闭是关键操作,所以总是被记录下来,而且只有权限高的用户才能执行。

1 使用适当权限进行连接

普通用户无权启动或关闭数据库,原因在于普通用户依据数据字典进行身份验证。从逻辑上讲,普通用户无法启动实例并打开数据库。因为只有在打开数据库之后才能读取到数据字典。因此,必须使用某种外部身份验证方式来连接数据库:必须通过操作系统进行身份验证,下面使用/NOLOG开关连接后的各种可能:

connect user/pwd[@connect alias]

connect user/pwd[@connect alias] as sysdba

connect user/pwd[@connect_alias] as sysoper

connect / as sysdba

connect / as sysoper

在这些例子中,user是用户名,而pwd是口令。connect_alias上网络标识符。第一个例子是普通的数据字典身份验证。此时数据库必须处于打开状态,否则连接失败。使用此语法连接的任何用户都不能发出启动或关闭命令。接下来的两个例子告知ORACLE使用外部口令文件来验证用户名\口令组合。最后两个例子使用操作系统身份验证。ORACLE产品将进入主机操作系统,并确认运行SQL*PLUS的操作系统用户是否为拥有ORACLE软件的操作系统组的成员。使用后四和语法进行连接的用户不仅能发出启动和关闭命令,而且不管数据库处于什么状态都可以进行连接。也可以简化连接方式:

sqlplus / as sysdba

sqlplus sys/oracle@orcl as sysdba

2 SYSOPER和SYSDBA

SYSOPER 和SYSDBA是具有特殊功能的特殊权限。只有用户使用外部身份验证方法进行连接时才能启用这些权限:操作系统或口令文件。

SYSDBA和SYSOPER并非用户,而是可以授予用户的权限。默认方式下,在未将这些权限专门授予其他用户之前,只有SYS用户才拥有这些权限

使用SYSOPER权限可以作为PUBLIC用户进行连接。

3 启动:nomount , mount 和open

注意,实例和数据库是独立实体,可以独立存在。当实例停止时,没有任何内存结构或后台进程会存在,实例也不再存在,但数据库(由文件组成)仍继续工作。事实上,在RAC环境中,其他节点上的其他实例可以存在并连接数据库

因此,启动过程分成多个阶段:首先在内存中构建实例,然后通过加载数据库启用到数据库的连接,最后打开数据库来使用它。在任一时刻,数据库将处于以下四种状态之一:

SHUTDOWN

NOMOUNT

MOUNT

OPEN

数据库处于SHUTDOW状态时,将关闭与数据库相关的所有文件,同时实例并不存在,在NMOUNT模式中,实例已构建在内存中(已根据参数文件中指定的参数创建了SGA并启动某些后台进程),但是没有连接任何数据库,这种情况在数据库不存在时确实可能出现。在MOUNT模式中,实例定位并读取数据控制文件。在OPEN模式中,将定位和打开所有数据文件,并且终端用户能够使用数据库。数据库的启动进程分为三个阶段,只要执行startup 命令,就会依次完成这些阶段。

在启动进程的任何阶段,实例如何查找到其所需要的文件,同时还会出现怎样的情况?首先从NOMOUNT模式开始进行讨论。执行startup命令时,ORACLE会尝试按图所示的搜索顺序定位参数文件。

共有三种默认的文件名。在UNIX系统中,这些文件名如下所示:

$ORACLE_HOME/dbs/spfileSID.ora

$ORACLE_HOME/dbs/spfile.ora

$ORACLE_HOME/dbs/initSID.ora




NOMOUNT模式只使用参数文件和警报日志。参数文件中的参数用于在内存中构建SGA和启动后台进程。各种实体会被写入描述这个启动进程的警报日志。警报日志位于BACKGROUND_DUMP_Dest参数所指定的位置。可以在参数文件中找到它,或在SQL*PLUS提示窗口运行下列命令:

sho parameter background_dump_dest

如果已经存在警报日志,那么要写入的内容会被迫加到已存在的警报日志中;否则就会创建警报日志。如果在这个阶段出现了任何问题,那么还会在相同的位置生成跟踪文件。


实例一旦在NOMOUNT模式中启动成功,就可以通过控制文件转换到MOUNT模式。它使用CONTROL_FILES参数定位控制文件。如果控制文件被损坏或丢失,就不会加载数据库,因此还需要在继续启动进程之前执行适当的动作。如果数据库的加载成功,那么控制文件的所有副本都可用并且相同。

加载和打开数据库的进程为SMON,只有在成功打开数据库之后,ORACLE才允许用户会话。





数据库的关闭顺序应当与数据库的启动顺序相反。在有序关闭数据期间首先关闭数据库,然后卸载,最后停止实例。在数据库关闭阶段,将终止所有会话:通过PMON进程回滚活动的事务。通过DBWn进程将已完成的事务转储至磁盘,同时关闭数据文件和重做日志文件。在数据库卸载阶段,关闭控制文件。随后,通过解除分配SGA和终止后台进程,停止实例。

如果在用户不得不关闭数据库时,有人在运行一个长时间都不提交的语句,如正为数据仓库加载表,那么,回滚阶段的时间相当漫长。


4  关闭: NORMAL,TRANSACTIONAL,IMMEDIATE和ABORT

shutdown [normal  |    transactional   |   immediate  |  abort  ]

normal :这是默认选项。使用该选项时,不许可任何新的用户连接,但是允许继续当前的所有连接。只有所有用户退出登录时,数据库才能真正关闭。

正常的数据库关闭是没有意义的:即使只剩下Database Control在运行,也总是存在尚未退出登录的用户。

transactional:使用这个选项时,不许可任何新的用户连接,不存在于某个事务中的现有会话会被终止,允许当前位于某个事务中的会话在完成该事务之后终止。一旦所有会话关闭,则会关闭数据库。

immediate:使用这个选项时,不许可任何新的用户连接,当前所有连接的会话都被终止。任何活动的事务都将回滚,随后数据库会关闭。

abort:就ORACLE而言,使用这个选项相当于断电。实例立即终止。此时,不会将任何数据写入磁盘,也不会关闭任何文件够本,同时也不会采用任何有序的方式终止下在进行的事务。

执行shutdown abort命令不会损坏数据库,因此,我们建议在数据库异常退出之后不执行诸如备份之类的某些操作。

有一个可以节省时间的startup force 命令。它是一条二合一命令:先是shutdown abort,然后是startup

有序关闭是一个多阶段过程,可以使用SQL*PLUS对这些阶段进行控制。

alter database close;

alter database dismount

这些命令将完全颠倒启动顺序。在实际中,这样做没有价值。DBA将使用shutdown命令。这些命令甚至不能通过Database Control使用。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值