All about control file in Oracle Database
--数据库实例启动的三个阶段: 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>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracleテーブルの作成には、次の手順が含まれます。作成テーブルの構文を使用して、テーブル名、列名、データ型、制約、およびデフォルト値を指定します。テーブル名は簡潔で説明的である必要があり、30文字を超えてはなりません。列名は説明的でなければならず、データ型は列に保存されているデータ型を指定します。 NOT NULL制約により、列でnull値が許可されていないことが保証され、デフォルト句は列のデフォルト値を指定します。テーブルの一意の記録を識別する主要なキーの制約。外部キーの制約は、表の列が別のテーブルの主キーを指していることを指定します。主要なキー、一意の制約、デフォルト値を含むサンプルテーブル学生の作成を参照してください。

Oracleのソリューションを開くことはできません。1。データベースサービスを開始します。 2。リスナーを開始します。 3.ポートの競合を確認します。 4.環境変数を正しく設定します。 5.ファイアウォールまたはウイルス対策ソフトウェアが接続をブロックしないことを確認してください。 6.サーバーが閉じているかどうかを確認します。 7. RMANを使用して破損したファイルを回復します。 8。TNSサービス名が正しいかどうかを確認します。 9.ネットワーク接続を確認します。 10。Oracleソフトウェアを再インストールします。

Oracle Garbledの問題は、データベース文字セットをチェックしてデータと一致するようにすることで解決できます。データベースに一致するようにクライアント文字を設定します。データを変換するか、列文字セットを変更してデータベース文字セットに一致させます。 Unicode文字セットを使用して、マルチバイト文字セットを避けます。データベースとクライアントの言語設定が正しいことを確認してください。

ALTER TABLEステートメントを使用して、特定の構文は次のとおりです。ALTERTABLE TABLE_NAME add column_name data_type [constraint-clause]。 WHERE:table_nameはテーブル名、column_nameはフィールド名、data_typeはデータ型、制約条項はオプションの制約です。例:テーブルの従業員を変更すると、電子メールvarchar2(100)は、従業員テーブルに電子メールフィールドを追加します。

Oracleは複数の重複排除クエリメソッドを提供します。個別のキーワードは、各列の一意の値を返します。 Group by Clauseは、結果をグループ化し、各グループの非繰り返し値を返します。一意のキーワードは、一意の行のみを含むインデックスを作成するために使用され、インデックスをクエリすると自動的に重複排除が行われます。 row_number()関数は、一意の数値を割り当て、行1のみを含む結果をフィルタリングします。min()またはmax()関数は、数値列の非繰り返し値を返します。交差する演算子は、2つの結果セットの共通値を返します(複製なし)。

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。
