2、控制文件和日志文件

[color=red][b]一、控制文件[/b] [/color]
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;

[color=red][b]二、日志文件[/b][/color]
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;
数据库已更改。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值