2、制御ファイルとログファイル


一、制御ファイル
1.制御ファイル情報の表示
SQL> select * from v$controlfile;
STATUS  NAME
------- --------------------------------------------------
        D:\ORACLE\ORADATA\C_DB\CONTROL01.CTL
        D:\ORACLE\ORADATA\C_DB\CONTROL02.CTL
        D:\ORACLE\ORADATA\C_DB\CONTROL03.CTL

SQL> select name ,value from v$parameter  where name ='control_files';
NAME                  VALUE
control_files         D:\ORACLE\oradata\C_DB\CONTROL01.CTL,D:\ORACLE\oradata\C_DB\CONTROL02.CTL,D:\ORACLE\oradata\C_DB\CONTROL03.CTL 
          
多重レプリケーションの使用:
<!-- init.ora     -->
control_files=("D:\ORACLE\oradata\C_DB\CONTROL01.CTL", "D:\ORACLE\oradata\C_DB\CONTROL02.CTL", "D:\ORACLE\oradata\C_DB\CONTROL03.CTL")
<!--  SQL  -->
<!--1.           SPFILE-->
SQL> ALERT SYSTEM SET CONTROL_FILES='D:\ORACLE\oradata\C_DB\CONTROL01.CTL','D:\ORACLE\oradata\C_DB\CONTROL02.CTL','D:\ORACLE\oradata\C_DB\CONTROL03.CTL','D:\ORACLE\oradata\C_DB\CONTROL04.CTL' SCOPE=SPFILE;
<!-- :     ,SPFILE     ,              -->
<!--2.     -->
SQL> SHUTDOWN IMMEDIATE;
<!--3.               -->
 $cp  D:\ORACLE\oradata\C_DB\CONTROL03.CTL D:\ORACLE\oradata\C_DB\CONTROL04.CTL
<!--4.      -->
SQL> STARTUP;

2.制御ファイルの作成
制御ファイルには、データファイル、ログファイルのパス、ファイル名が含まれている必要があります.だから

1.  
SQL> select member from v$logfile;
SQL> select name from v$datafile;
SQL> select value from v$parameter where name='control_files';
2.     
SQL> connect as sysdba;
SQL> shutdown immediate;
       。
       。
ORACLE       。
3.                (                      )
4.  NOMOUNT     
SQL> startup nomount;
ORACLE       。
Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
   ,  nomount       ,oracle        ,              。
5.create controlfile  
create control file 
reuse database "mydb_name"  --      
noresetlogs noarchivelog    --   ,   
maxlogfiles 32    --      32 
maxlogmembers 2   --        2 
maxdatafiles 32   --    32 
maxinstance 1     --   1 
maxloghistory 499 --          499
logfile
group 1 '/OS_path/oracle/c_db/t_log1.f' size 500k,
group 2 '/OS_path/oracle/c_db/t_log2.f' size 500k
# STANDBY LOGFILE DATAFILE
'/OS_path/oracle/c_db/t_db1.f',
'/OS_path/oracle/dbu9i.dbf'
....................
[color=red]         ,                      ,    resetlog  ,       ,             ,   resetlogs  ,     noresetlogs  。  [/color]
6.       ,   control_files            。
SQL> ALERT SYSTEM SET CONTROL_FILES='D:\ORACLE\oradata\C_DB\CONTROL01.CTL','D:\ORACLE\oradata\C_DB\CONTROL02.CTL','D:\ORACLE\oradata\C_DB\CONTROL03.CTL','D:\ORACLE\oradata\C_DB\CONTROL04.CTL' SCOPE=SPFILE;
7.     
SQL> alter database open 
     resetlogs  
SQL> alter database open resetlogs;

二、ログファイル
1.チェックポイント
CKPT(ckeckpoint background process)は、インスタンスのリカバリに要する時間を制御し、チェックポイントを実行すると、前のシステム変更番号(system change number SCN)を記録して前の成功したことを反映するために、データファイルのヘッダと制御ファイルを更新する.
SCNはoracleがデータベース内の各事物に順番に割り当てた番号です.
2.操作ログファイル

      
SQL> set linesize 180;
SQL> col member for a50;
SQL> col is_recovery_dest_file for a20;
SQL> select * from v$logfile;
    GROUP# STATUS  TYPE    MEMBER
         3         ONLINE  D:\ORACLE\ORADATA\C_DB\REDO03.LOG
         2 STALE   ONLINE  D:\ORACLE\ORADATA\C_DB\REDO02.LOG
         1 STALE   ONLINE  D:\ORACLE\ORADATA\C_DB\REDO01.LOG
    ,  ,  
SQL> select group#,bytes/1024/1024 as M ,status,members from v$log;
    GROUP#          M STATUS              MEMBERS
---------- ---------- ---------------- ----------
         1        100 INACTIVE                  1
         2        100 INACTIVE                  1
         3        100 CURRENT                   1
  :
SQL> alter database add logfile group 4 ('D:\ORACLE\ORADATA\C_DB\REDO04a.LOg','D
:\ORACLE\ORADATA\C_DB\REDO04b.LOg') size 10m;
       
SQL> alter database add logfile member 'D:\ORACLE\ORADATA\C_DB\REDO04c.LOg' to group 2;
  :
SQL> alter database drop logfile group 4;
      。