首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

二、控制文件和日志文件

2012-07-04 
2、控制文件和日志文件一、控制文件 1.查看控制文件信息SQL select * from v$controlfileSTATUSNAME------

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.CTLSQL> select name ,value from v$parameter  where name ='control_files';NAME                  VALUEcontrol_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 bytesFixed Size                   453492 bytesVariable Size             109051904 bytesDatabase Buffers           25165824 bytesRedo 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 --最大历史日志文件个数499logfilegroup 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) 控制实例恢复所需要的时间按量,在执行一个检查点时,CKPT更新数据文件的头部和控制文件,以便记录上个系统更改号(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;数据库已更改。

热点排行