7.数据库的启动和关闭03

1.前言

  启动到mount状态以后,Oracle就可以从参数文件中获取控制文件的位置信息,然后找到控制文件,并且根据控制文件中记录的数据文件进行数据文件的存在性判断。

2.控制文件的定位 

show parameter  control_files;

3.数据文件的存在性判断

  在启动了实例之后,实际上数据库的后台进程已经运行,那么当进一步的mount数据库之后,后台进程就可以根据控制文件中记录的数据文件信息来验证数据文件是否存在,如果数据文件不存在,则后台进程将在告警日志文件中记录文件缺失信息,并且在动态视图中记录这些信息。  

SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
/data/oracle/oradata/orcl/system01.dbf
/data/oracle/oradata/orcl/sysaux01.dbf
/data/oracle/oradata/orcl/undotbs01.dbf
/data/oracle/oradata/orcl/users01.dbf
/data/oracle/oradata/orcl/example01.dbf
/data/oracle/oradata/orcl/tbs16.dbf

在mount数据库的过程中,Oracle需要找到控制文件,锁定控制文件,如果控制文件全部丢失时就会报出如下错误:

ORA-00205:error in identifying controlfile.check alert log for more info

在oracle10g之前,oracle的控制文件一般只要3个,而且这三个是镜像复制的。它们的内容是完成相同的。如果只是损失了1个或者2个,可以复制完好的复制文件。并更改

相应的名称,就可以启动数据库;如果丢失了所有的控制文件,那么就需要恢复或重建控制文件来打开数据库。

4.口令文件的作用

  口令文件一般位于$ORACLE_HOME/dbs目录下,缺省的名称为orapw<ORACLE_SID>。口令文件中存放sysdba/sysoper 用户的用户名及口令, 

[oracle@node04 dbs]$ strings orapworcl 
]\[Z
ORACLE Remote Password file
INTERNAL
66AAB02F263D762F
83CF95DD15FD33DC
!tWJ}

口令文件可以用于对具备sysdba/sysoper身份的用户进行登录认证,如果不存在该文件,则远程用户将无法使用这两个身份进行登录数据库。

如果丢失该文件,在alert.log日志中可能会报出:ORA-01990:eroor opening password file '/xxx/xx/orapw${ORACLE_SID}'

如果该文件丢失,可以通过工具orapwd工具进行创建

[oracle@11g:/home/oracle]$ orapwd --help
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).
 

初始化参数remote_login_passwordful和口令文件有关。

6.lk<ORACLE_SID>文件以及作用

  通过在linux/unix平台下,在$ORACLE_HOME/dbs目录下,还会存在另一个文件,该文件命令规则为lk<ORACLE_SID>,其中lk之lock,该文件在数据库启动时创建,用于操作系统对数据库的锁定,当数据库启动时获得锁定,数据库关闭是释放。

  有时候在系统出现异常时,可能数据库已经关闭,但是锁定并未释放,或者因为后台进程未正常停止等原因,会导致下次数据库无法启动

     比如:ora-09968:scumnt:unable to lock file

  如果遇到这种情况,可以通过重启服务器或者手工释放共享内存段等方法来释放锁定。该文件通常只有一行,提示不要删除,该文件仅仅用于锁定

[oracle@11g:/u01/app/oracle/product/11.2.0/db/dbs]$ more lkORCL 
DO NOT DELETE THIS FILE!   

posted on 2021-09-24 18:35  太白金星有点烦  阅读(70)  评论(0)    收藏  举报

导航