ORACLE学习笔记(二)——数据库启动(mount)

一、控制文件的定位

启动到nomount状态后,Oracle就可以从参数文件中获得控制文件的位置信息,并根据控制文件中记录的数据文件位置进行数据文件的存在性判断。
在nomount状态,可以查询v$parameter视图,获得控制文件,这部分信息来自启动的参数文件;
SQL> select * from v$controlfile;
no rows selected
SQL> show parameter control_files
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
control_files			     string	 /home/oracle/app/oracle/oradat
						 a/orcl/control01.ctl, /home/or
						 acle/app/oracle/flash_recovery
						 _area/orcl/control02.ctl
当数据库mount之后,可以查询v$controlfile视图获得关于控制文件的信息,此时,这部分信息来自控制文件:
SQL> alter database mount;
Database altered.
SQL> select STATUS, NAME from v$controlfile;
STATUS    NAME
--------- --------------------------------------------------------------
          /home/oracle/app/oracle/oradata/orcl/control01.ctl
          /home/oracle/app/oracle/flash_recovery_area/orcl/control02.ctl
在mount数据库的过程中,Oracle需要找到控制文件,锁定控制文件。Oracle的3个控制文件内容完全相同,丢失了其中一个可以通过复制来回复丢失的控制文件;如果丢失了所有控制文件,就需要恢复或重建控制文件来打开数据库。

二、数据文件的存在性判断

当mount数据库后,后台进程就可以根据控制文件中记录的数据文件信息来验证数据文件是否存在。
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/home/oracle/app/oracle/oradata/orcl/system01.dbf
/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
/home/oracle/app/oracle/oradata/orcl/users01.dbf
/home/oracle/app/oracle/oradata/orcl/example01.dbf

三、控制文件的HeartBeat

在mount数据库的过程中,数据库需要计算mount id并将其记录在控制文件中,然后启动心跳(HeartBeat),每3秒更新一次控制文件。控制文件在mount状态下发生改变的只有这个HeartBeat。
HeartBeat值可以从一个内部表X$kCCCP中查到:
SQL> select cphbt from X$KCCCP;
     CPHBT
----------
 801632556
Oracle在数据库内部通过等待时间control file heartbeat来记录这个事件的相关等待;如果使用自动存储管理技术,那么还会增加一个ASM实例的心跳事件。
SQL> select event#, name
  2  from v$event_name where name like '%heart%';
    EVENT# NAME
---------- ----------------------------------------------------------------
	75 heartbeat monitor sleep
       380 ASM mount : wait for heartbeat
       563 control file heartbeat

四、口令文件的作用

数据库的口令文件位于$ORACLE_HOME/dbs目录下,缺省的名称为orapw<ORACLE_SID>。口令文件中存放SYSDBA/SYSOPER用户的用户名及口令。
对于口令文件,Oracle缺省查找orapw<ORACLE_SID>文件,如果该文件不存在,则继续查找orapw文件。
如果口令文件丢失,可以通过orapw工具即可重建,所以备份时可以不包含口令文件:
SQL> !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.
启动过程中如果口令文件丢失,和口令文件相关的部分功能将无法使用,比如进行SYSDBA的授权或者尝试远程通过SYSDBA身份登录都会出现错误。
数据库例具有SYSDBA/SYSOPER权限的用户可以通过v$pwfile_users视图查询得到:
SQL> select * from v$pwfile_users;
USERNAME		       SYSDB SYSOP SYSAS
------------------------------ ----- ----- -----
SYS			       TRUE  TRUE  FALSE

五、lk<ORACLE_SID>文件及作用

存在于$ORACLE_HOME/dbs目录下,该文件在数据库启动时创建,用于操作系统对数据库的锁定。当数据库启动时获得锁定,数据库关闭时释放。
在Oracle 10g中Oracle引入了db_unique_name参数。如果想在同一台机器上mount相同DB_NAME的数据库需要修改此参数。
SQL> show parameter db_unique_name;
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_unique_name			     string	 orcl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值