首页 数据库 mysql教程 All about control file in Oracle Database

All about control file in Oracle Database

Jun 07, 2016 pm 03:02 PM
control file oracle

--数据库实例启动的三个阶段: NOMOUNT(START):打开初始化参数文件 MOUNT:打开控制文件 OPEN:打开数据文件和日志文件 --控制文件 控制文件的作用:管理数据库的状态和描述数据库的物理结构信息。 控制文件主要包含如下信息: 数据库名 数据库标识符DBID 数据



--数据库实例启动的三个阶段:
NOMOUNT(START):打开初始化参数文件
MOUNT:打开控制文件
OPEN:打开数据文件和日志文件

--控制文件
控制文件的作用:管理数据库的状态和描述数据库的物理结构信息。
控制文件主要包含如下信息:
数据库名
数据库标识符DBID
数据库创建时间戳
数据库字符集
数据文件信息
临时文件信息
在线重做日志信息
近期的归档日志信息
表空间信息
RMAN 信息库
检查点信息
损坏的数据块注册表
还原点信息
RESET_SCN
脏数据块的数量
                                         
                                                                    
-------------All about DBID
1. DBID 在数据库创建时自动生成
2. Oracle 不保证两个同名数据库DBID一定唯一
3. DBID 在数据库创建后永远不变,除非使用 $ORACLE_HOME/bin/nid 修改数据库名称时自动生成新的 DBID
4. 在未使用 FRA 时,通过控制文件的自动备份 restore 控制文件时,会遇到 ORA-06495 错误(在11R2尝试时未出现此错误)
5. DBID 和数据库名一样,不仅存在于控制文件,还存在于数据文件、日志文件头部,用于判断控制文件、数据文件和日志文件是否属于同一数据库

--获取数据库的 DBID
1. v$database.dbid

SQL> select dbid from v$database;

      DBID
----------
2127893003

2.控制文件的自动备份文件名(前提是自动备份没有放在FRA上,FRA使用OMF管理方式不会显式地显示DBID信息)
[oracle@ora dbs]$ ls -lrt c*
-rw-r----- 1 oracle asmadmin 48005120 Oct 28 15:09 c-2127893003-20131028-00
--------------2127893003 即为 DBID

3.执行转储命令查看各种数据文件的文件头信息
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
         1          1          1   10485760        512          2 NO  CURRENT                 459088 28-OCT-13   2.8147E+14
         2          1          0   10485760        512          2 YES UNUSED                       0                      0
         3          1          0   10485760        512          2 YES UNUSED                       0                      0

SQL> alter system dump logfile '+DATA/test/onlinelog/group_1.266.829746583';

System altered.

SQL> select value from v$diag_info where name='Default Trace File';

VALUE
------------------------------------------------------------
/u01/app/oracle/diag/rdbms/test/test/trace/test_ora_7538.trc

[oracle@ora dbs]$ grep -i 'db id' /u01/app/oracle/diag/rdbms/test/test/trace/test_ora_7538.trc
        Db ID=2127893003=0x7ed5120b, Db Name='TEST'
 
4.如果使用了 catalog ,还可以在查询 catalog 数据库中的 DB 表

select * from catalog_user.DB;


-----------数据库物理信息
在数据库处于 mount 状态(datafile和logfile均未open)时,可以查询记录在控制文件中的相应动态视图获取数据库的物理结构

v$database
v$archive_log
v$datafile
v$tempfile
v$log
v$logfile
v$recover_file

-----------控制文件序列号
控制文件序列号用于判断控制文件是否过时的因素“之一”,在控制文件被更新后就会增长。控制文件的更新包括检查点信息更新,表空间的增删操作等。
控制文件序列号也存在于数据文件和日志文件,只不过它们是在自身的文件头被更新时从当时的控制文件复制而来。
控制文件的更新次数总是比数据文件和日志文件多,因为每当数据文件和日志文件头被更新时,控制文件都会复制其部分内容,同时控制文件
的某些操作比如增量检查点只会更新控制文件而不会更新日志文件盒数据文件。

查看 v$database 和 v$kcvfh 可以查看当前控制文件记录的控制文件序列号和各个数据文件头部所记录的控制文件序列号。

SQL> select CONTROLFILE_SEQUENCE# from v$database;

CONTROLFILE_SEQUENCE#
---------------------
                 1160
                 
SQL> select hxfil as file#, fhcsq from x$kcvfh;

     FILE#      FHCSQ
---------- ----------
         1       1128
         2       1128
         3       1128
         4       1128
         
       
-----------控制文件检查点 SCN
控制文件检查点 SCN 也是判断控制文件是否过时的要素之一。检查点分为完全检查点和增量检查点,完全检查点会把 SCN 更新至数据文件头和控制文件中,
而增量检查点只会将SCN更新至控制文件。无论哪种检查点,其SCN在控制文件中都称为控制文件检查点SCN(有别于数据库检查点SCN)

 select CONTROLFILE_CHANGE# from v$database;

CONTROLFILE_CHANGE#
-------------------
             464297
             
每当控制文件发生变化(增删文件、日志切换、完全或增量检查点),控制文件检查点SCN的值都会上升。该SCN的值一定大于或等于 current redo log 的低位 SCN
同时,控制文件检查点 SCN 的值一定大于所有数据文件头部的检查点SCN号,否则该控制文件就会被认为过时,实例无法启动。

  select controlfile_change# from v$database
  union all
  select first_change# from v$log where status = 'CURRENT';

CONTROLFILE_CHANGE#
-------------------
             466258
             465700

------------数据库检查点 SCN
控制文件中保存的数据库检查点SCN实际上市所有数据文件头中最小的检查点SCN。Oracle 根据该值与每个 redo 日志的高低为SCN一一比较,确定恢复数据文件时
所需的第一个 redo 或归档日志
v$database 中的 checkpoint_change# 和 v$datafile_header 中的 checkpoint_change# 应该一致

SQL> select checkpoint_change# from v$database
  2  union all
  3  select checkpoint_change# from v$datafile_header;

CHECKPOINT_CHANGE#
------------------
            465700
            465700
            465700
            465700
            465700
            
------------online redo 的高低水位 SCN
SQL> select GROUP#,FIRST_CHANGE#,NEXT_CHANGE#,status from v$log;

    GROUP# FIRST_CHANGE# NEXT_CHANGE# STATUS
---------- ------------- ------------ ----------------
         1        459088       465700 INACTIVE
         2        465700   2.8147E+14 CURRENT
         3             0            0 UNUSED
         
FIRST_CHANGE#:低位SCN redo log 中的第一个 redo entry
NEXT_CHANGE#:高位SCN下一个日志文件中的第一个 redo entry


------------RMAN 信息库
RMAN 配置、闪回日志路径、重做日志历史、归档路径及属性、RMAN 备份集信息、RMAN image copy 信息、RMAN 备份集和RMAN IMAGE COPY 中损坏的数据块
数据文件坏块信息等

------------还原点信息
还原点主要通过 create restore point 命令创建,是SCN的别名,主要用于 flashback 技术

------------resetlog SCN

使用resetlog选项open数据块时的SCN值,也存在于数据文件和日志文件头部。每次打开数据库时都会检查他们是否一致


<p><span></span></p><p><span><span>作者:xiangsir</span></span></p><p><span></span></p><p><span><span>QQ:444367417</span></span></p><p><span><span>MSN:xiangsir@hotmail.com</span></span></p>
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

oracle打不开怎么办 oracle打不开怎么办 Apr 11, 2025 pm 10:06 PM

Oracle 打不开的解决办法包括:1. 启动数据库服务;2. 启动监听器;3. 检查端口冲突;4. 正确设置环境变量;5. 确保防火墙或防病毒软件未阻止连接;6. 检查服务器是否已关闭;7. 使用 RMAN 恢复损坏的文件;8. 检查 TNS 服务名称是否正确;9. 检查网络连接;10. 重新安装 Oracle 软件。

oracle游标关闭怎么解决 oracle游标关闭怎么解决 Apr 11, 2025 pm 10:18 PM

解决 Oracle 游标关闭问题的方法包括:使用 CLOSE 语句显式关闭游标。在 FOR UPDATE 子句中声明游标,使其在作用域结束后自动关闭。在 USING 子句中声明游标,使其在关联的 PL/SQL 变量关闭时自动关闭。使用异常处理确保在任何异常情况下关闭游标。使用连接池自动关闭游标。禁用自动提交,延迟游标关闭。

oracle数据库如何分页 oracle数据库如何分页 Apr 11, 2025 pm 08:42 PM

Oracle 数据库分页利用 ROWNUM 伪列或 FETCH 语句实现:ROWNUM 伪列用于通过行号过滤结果,适用于复杂查询。FETCH 语句用于获取指定数量的第一行,适用于简单查询。

oracle怎么循环创建游标 oracle怎么循环创建游标 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循环可动态创建游标, 步骤为:1. 定义游标类型;2. 创建循环;3. 动态创建游标;4. 执行游标;5. 关闭游标。示例:可循环创建游标,显示前 10 名员工姓名和工资。

oracle数据库怎么停止 oracle数据库怎么停止 Apr 12, 2025 am 06:12 AM

要停止 Oracle 数据库,请执行以下步骤:1. 连接到数据库;2. 优雅关机数据库(shutdown immediate);3. 完全关机数据库(shutdown abort)。

HDFS配置CentOS需要哪些步骤 HDFS配置CentOS需要哪些步骤 Apr 14, 2025 pm 06:42 PM

在CentOS系统上搭建Hadoop分布式文件系统(HDFS)需要多个步骤,本文提供一个简要的配置指南。一、前期准备安装JDK:在所有节点上安装JavaDevelopmentKit(JDK),版本需与Hadoop兼容。可从Oracle官网下载安装包。环境变量配置:编辑/etc/profile文件,设置Java和Hadoop的环境变量,使系统能够找到JDK和Hadoop的安装路径。二、安全配置:SSH免密登录生成SSH密钥:在每个节点上使用ssh-keygen命令

oracle动态sql怎么创建 oracle动态sql怎么创建 Apr 12, 2025 am 06:06 AM

可以通过使用 Oracle 的动态 SQL 来根据运行时输入创建和执行 SQL 语句。步骤包括:准备一个空字符串变量来存储动态生成的 SQL 语句。使用 EXECUTE IMMEDIATE 或 PREPARE 语句编译和执行动态 SQL 语句。使用 bind 变量传递用户输入或其他动态值给动态 SQL。使用 EXECUTE IMMEDIATE 或 EXECUTE 执行动态 SQL 语句。

oracle怎么打开数据库 oracle怎么打开数据库 Apr 11, 2025 pm 10:51 PM

打开 Oracle 数据库的步骤如下:打开 Oracle 数据库客户端连接到数据库服务器:connect username/password@servername使用 SQLPLUS 命令打开数据库:SQLPLUS

See all articles