ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle启动三阶段(二)

Oracle启动三阶段(二)

原创 Linux操作系统 作者:realkid4 时间:2011-01-23 21:08:30 0 删除 编辑

mount阶段

 

mount阶段是启动的第二个阶段。此处,我们说mount的是什么?mount的是数据文件和控制文件,同时对应的日志文件信息也已经获取到。mount阶段下,所有的系统参数已经加载完成,通过参数找到的控制文件帮助实例定位加载了数据文件。同时,针对上次关闭系统中的问题,比如未完成事务和恢复等,都要进行处理。

 

//进入mount状态

SQL> alter database mount;

 

Database altered.

 

 

此时,监听器状态,从block变为了ready。

 

[oracle@oracle11g ~]$ lsnrctl status;

 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-JAN-2011 15:59:22

 

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date                22-JAN-2011 15:46:51

Uptime                    0 days 0 hr. 12 min. 31 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/oracle/network/admin/listener.ora

Listener Log File         /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

Services Summary...

Service "wilson" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

The command completed successfully

 

 

此时的sqlplus命令提示符下,我们可以看到查询项目。

 

 

SQL> select count(*) from v$datafile;

 

  COUNT(*)

----------

         7

 

SQL> select count(*) from v$controlfile;

 

  COUNT(*)

----------

         2

 

SQL> select count(*) from v$logfile;

 

  COUNT(*)

----------

         6

 

SQL> select count(*) from dba_objects;

select count(*) from dba_objects

                     *

ERROR at line 1:

ORA-01219: database not open: queries allowed on fixed tables/views only

 

SQL> select * from v$tablespace;

 

       TS# NAME                           INC BIG FLA ENC

---------- ------------------------------ --- --- --- ---

         0 SYSTEM                         YES NO  YES

         1 SYSAUX                         YES NO  YES

         2 UNDOTBS1                       YES NO  YES

         4 USERS                          YES NO  YES

         3 TEMP                           NO  NO  YES

         6 EXAMPLE                        YES NO  YES

         7 PERFSTAT                       YES NO  YES

         8 PERFSTATTEMP                   NO  NO  YES

         9 MYTEST                         YES NO  YES

 

9 rows selected.

 

SQL> archive log list;

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     78

Current log sequence           80

 

 

上面的结果,可以看出。在mount状态下,一些基础视图已经可以查询,比如从控制文件中指定的对象信息,如表空间、日志等内容。但是涉及到对象数据类型的数据,还是不支持。说明,虽然将数据文件mount上了,但是并没有读取数据文件信息的操作。

 

此时,笔者在实验中发现了一个差异。在mount状态下,如果使用sqlplus查找参数,大部分参数是可以查询到的。但是转移到pl/sql developer开发工具上,大部分就会以报错结束。如:

 

--sqlplus

SQL> show parameter tablespace;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ----------

undo_tablespace                      string      UNDOTBS1

SQL>

 

--pl/sql developer

SQL> show parameter tablespace;

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询

 

 

 

笔者猜想:从一些开发工具的角度,可能对于这种维护模式下的查询还是有限制的。

 

相对于nomount阶段,mount阶段是比较常用的。我们在这个阶段可以在不受到干扰的情况下进行数据库备份和还原工作。

 

 

打开数据库

 

该操作就是直接将数据文件的读取开启了。

 

SQL> alter database open;

 

Database altered.

 

 

此时监听器状态:

 

[oracle@oracle11g ~]$ lsnrctl status;

 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-JAN-2011 16:04:21

 

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date                22-JAN-2011 15:46:51

Uptime                    0 days 0 hr. 17 min. 29 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/oracle/network/admin/listener.ora

Listener Log File         /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

Services Summary...

Service "wilson" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

Service "wilsonXDB" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

The command completed successfully

 

注意:和刚才的监听器程序相比,多出了一个XDB服务。这是Oracle提供的XMLDB服务的名称。默认情况下,XDB服务一同启动,一般都需要将他关闭掉。

 

说道XDB服务,有一个问题需要注意到。这个服务关联的系统参数是

dispatchers='(PROTOCOL=TCP) (SERVICE=XDB)'

 

熟悉共享模式的朋友们就会意识到,dispatchers参数不是共享模式的设置吗?没错,在全局是专用模式支持连接的情况下,默认的XDB是使用共享模式的。我们在启动的进程列表中,也可以看到对应的d00s00/s01进程。

 

 

[oracle@oracle11g ~]$ ps -ef | grep oracle

root      5529  5497  0 15:39 pts/0    00:00:00 su oracle

oracle    5530  5529  0 15:39 pts/0    00:00:00 bash

oracle    5559     1  0 15:46 ?        00:00:00 /u01/oracle/bin/tnslsnr LISTENER -inherit

oracle    5565  5530  0 15:49 pts/0    00:00:00 sqlplus      

(篇幅原因,略)

oracle    5645     1  0 15:50 ?        00:00:00 ora_mmnl_wilson

oracle    5647     1  0 15:50 ?        00:00:00 ora_d000_wilson  //1

oracle    5649     1  0 15:50 ?        00:00:00 ora_s000_wilson  //2

oracle    5651     1  0 15:50 ?        00:00:00 ora_s001_wilson  //3

oracle    5653  5565  0 15:50 ?        00:00:03 oraclewilson (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))                //4

root      5712  5680  0 15:53 pts/1    00:00:00 su oracle

(篇幅原因,略)

oracle    5796  5713  0 16:05 pts/1    00:00:00 grep oracle

 

 

其中,//4为对应的专用连接模式。//1、//2、//3为对应XDB的共享模式。也可以看出,在Oracle中,共享连接和专用连接在一定程度上是可以并存在一个实例下的。

 

此时,所有的数据信息已经开始支持访问。

 

 

SQL> select count(*) from dba_objects;

 

  COUNT(*)

----------

72516

 

同时,一些视图的结构也发生变化,更多的信息被加载。

 

 

SQL> select * from v$tablespace;

 

TS# NAME  INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP

---------- ------------------------------ --------------------------- -------

         0 SYSTEM                         YES                         NO YES  

         1 SYSAUX                         YES                         NO YES  

         2 UNDOTBS1                       YES                         NO  YES  

         4 USERS                          YES                         NO  YES 

         3 TEMP                           NO                          NO  YES 

         6 EXAMPLE                        YES                         NO  YES 

         7 PERFSTAT                       YES                         NO  YES 

         8 PERFSTATTEMP                   NO                          NO  YES 

         9 MYTEST                         YES                         NO  YES

 

9 rows selected

 

 

 

结论:Oracle的启动阶段每个阶段都有相应的特点和功能。理解这些对于我们了解体系结构有很大帮助。同时,当我们启动遇到故障的时候,是可以分阶段启动进行调整调错。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-684504/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7677540