首页 > 代码库 > 数据库mount阶段
数据库mount阶段
数据库从nomount启动到mount状态后,查看日志:
Wed Dec 17 13:23:19 2014 alter database mount Wed Dec 17 13:23:23 2014 Successful mount of redo thread 1, with mount id 1394303559 Database mounted in Exclusive Mode Lost write protection disabled Completed: alter database mount Wed Dec 17 13:36:20 2014 db_recovery_file_dest_size of 3882 MB is 0.00% used. This is a user-specified limit on the amount of space that will be used by this database for recovery-related files, and does not reflect the amount of space available in the underlying filesystem or ASM diskgroup.
日志中提示成功加载redo线程。并输出mount id 1394303559 这里在经过多次重启后观察变化,还可以转储控制文件来观察变化。
查看参数中的配置(11g默认产生两个控制文件,一个放在数据目录下,另一个放在闪回区目录下):
SQL> show parameters control_files; NAME TYPE VALUE ------------------ --------------------------------- ------------------------------ control_files string /DBBK/oracle/oradata/orcl/cont rol01.ctl, /DBBK/oracle/flash_ recovery_area/orcl/control02.c tl
当数据库从nomount切换到mount的状态时,数据库首先去读取spfile中指定的路径中的controlfile:
SQL> col status for a10 SQL> select status,name,is_recovery_dest_file,block_size,file_size_blks from v$controlfile; STATUS NAME IS_RECOVE BLOCK_SIZE FILE_SIZE_BLKS ---------- --------------------------------------------------- --------- ---------- -------------- /DBBK/oracle/oradata/orcl/control01.ctl NO 16384 594 /DBBK/oracle/flash_recovery_area/orcl/control02.ctl NO 16384 594
当数据库找不到指定的controlfile时会报如下错误:
Wed Dec 17 11:14:06 2014 alter database mount ORA-00210: cannot open the specified control file ORA-00202: control file: ‘/DBBK/oracle/product/11.2.0.1.0/dbs/cntrlorcl.dbf‘ ORA-27037: unable to obtain file status Linux-x86_64 Error: 2: No such file or directory
为了安全起见也可以自定义增加数据库controlfile的数据,并指定位置,数据库启动前,在pfile中指定多个控制文件,同时拷贝控制文件到对应的路径:
SQL> show parameter control_files; NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ control_files string /DBBK/oracle/oradata/orcl/cont rol01.ctl, /DBBK/oracle/oradat a/orcl/control03.ctl, /DBBK/or acle/flash_recovery_area/orcl/ control02.ctl SQL> select name,block_size,file_size_blks from v$controlfile; NAME BLOCK_SIZE FILE_SIZE_BLKS --------------------------------------------------- ---------- -------------- /DBBK/oracle/oradata/orcl/control01.ctl 16384 594 /DBBK/oracle/oradata/orcl/control03.ctl 16384 594 /DBBK/oracle/flash_recovery_area/orcl/control02.ctl 16384 594
修改后再次观察mount状态下的mount id已经发生改变
[oracle@021Y-SH-BKAP trace]$ grep -B2 ‘mount id‘ alert_orcl.log alter database mount Wed Dec 17 13:23:23 2014 Successful mount of redo thread 1, with mount id 1394303559 -- alter database mount Wed Dec 17 14:28:10 2014 Successful mount of redo thread 1, with mount id 1394319734
按照盖国强《DBA入门书、进阶与诊断案例》中所述启动到mount状态下时,数据库还需要一个重要的文件即口令文件,该文件位于$ORACLE_HOME/dbs下,命名方式为:orapw+SID
[oracle@021Y-SH-BKAP dbs]$ strings orapworcl ]\[Z ORACLE Remote Password file INTERNAL 59F91175308D448B AB38EDAF3AF77681 tS/C
但通过验证发现11G之后,数据库加载时已经取消了对该密码文件的验证,其实这也可以解释,为什么在11G前修改数据库的SYS用户密码需要通过orapwd命令进行修改,而到了11G仅需要通过alter user sys identified by ‘newpassword‘这样的方式即可以修改密码了。与该文件相关的数据库参数remote_login_passwordfile.
关于orapwd命令的使用,可以通过在终端中直接输入命令的方式获取命令的使用帮助,后续对该命令的使用进一步说明:
Usage: orapwd file=<fname> entries=<users> force=<y/n> ignorecase=<y/n> nosysdba=<y/n> where file - name of password file (required), password - password for SYS will be prompted if not specified at command line, entries - maximum number of distinct DBA (optional), force - whether to overwrite existing file (optional), ignorecase - passwords are case-insensitive (optional), nosysdba - whether to shut out the SYSDBA logon (optional Database Vault only). There must be no spaces around the equal-to (=) character.
另外,在$ORACLE_HOME/dbs目录下还有一些文件如hc_orcl.dat,HC表示Health Check,网上介绍该文件作为instance健康状态检查时参考的文件,该文件中的内容说不要删除或修改他,但实际发现每次重启实例后,该文件会自动被创建出来。
还有一个文件时lkORCL,从命名方式可以看出该文件时实例的锁文件,lk表示LOCK。同样该文件也会在每次实例启动时重新创建,但根据盖国强书中提到的当数据库关闭,锁未释放的情况发生时,会导致后续数据库无法启动。因为没有遇到过类似的问题。这里暂时不在举例。
参考:《DBA入门书、进阶与诊断案例》 盖国强著
本文出自 “LinuxOracle” 博客,请务必保留此出处http://onlinekof2001.blog.51cto.com/3106724/1591011
数据库mount阶段