SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

可以参考:http://www.2cto.com/database/201206/136574.html

SQL> select name,log_mode from v$database;

NAME LOG_MODE
--------- ------------
JSCE NOARCHIVELOG

SQL> archive log list
数据库日志模式 非存档模式
自动存档 禁用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 117
当前日志序列 119

SQL> select group#,status, FIRST_CHANGE#,NEXT_CHANGE# from v$log;

GROUP# STATUS FIRST_CHANGE# NEXT_CHANGE#
---------- ---------------- ------------- ------------
1 INACTIVE 1888087 1911357
2 CURRENT 1911357 2.8147E+14
3 INACTIVE 1861561 1888087

SQL> alter system switch logfile;

系统已更改。

SQL> select current_scn from v$database;

CURRENT_SCN
-----------
1917945

SQL> alter system checkpoint;--做检查点

系统已更改。

SQL> select group#,status, FIRST_CHANGE#,NEXT_CHANGE# from v$log;

GROUP# STATUS FIRST_CHANGE# NEXT_CHANGE#
---------- ---------------- ------------- ------------
1 INACTIVE 1888087 1911357
2 INACTIVE 1911357 1917909
3 CURRENT 1917909 2.8147E+14

OMF oracle管理文件

SQL> show parameter db_create;

NAME TYPE VALUE
------------------------------------ ----------- -------
db_create_file_dest string
db_create_online_log_dest_1 string
db_create_online_log_dest_2 string
db_create_online_log_dest_3 string
db_create_online_log_dest_4 string
db_create_online_log_dest_5 string

SQL> select group#,member from v$logfile;

GROUP#
----------
MEMBER
---------------------------------------------------

3
E:\APP\XS\ORADATA\JSCE\REDO03.LOG

2
E:\APP\XS\ORADATA\JSCE\REDO02.LOG

1
E:\APP\XS\ORADATA\JSCE\REDO01.LOG


GROUP#
----------
MEMBER
---------------------------------------------------

4
E:\APP\XS\FLASH_RECOVERY_AREA\JSCE\ONLINELOG\O1_MF_

归档模式-mount下操作

SQL> alter database archivelog;
alter database archivelog
*
第 1 行出现错误:
ORA-01126: 数据库必须已装载到此实例并且不在任何实例中打开


SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 226492880 bytes
Database Buffers 301989888 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。

SQL> alter database archivelog;

数据库已更改。

SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_
最早的联机日志序列 118
下一个存档日志序列 120
当前日志序列 120
 SQL> alter database archivelog;

SQL> show parameter log;--归档日志多个地址

 

mount下打开database

SQL> alter database open;

数据库已更改。

SQL> alter system archive log list;
alter system archive log list
*
第 1 行出现错误:
ORA-01974: 非法的归档选项


SQL> alter system archive log current;
alter system archive log current
*
第 1 行出现错误:
ORA-00258: NOARCHIVELOG 模式下的手动归档必须标识日志


 

SQL> select name from v$archived_log;--查看归档

 

 

日志

要做的实验

1 将数据库日志模式由非归档改为归档模式(archive log list)
2 查看v$log和v$logfile


3 增加一个日志文件组4,组中放入一个成员(REDO04.LOG)

SYS@ncbeta>alter database add logfile group 4 ('C:\app\dell\oradata\ncbeta\red00
4.lgo') size 10M;

数据库已更改。
注意这里()里面需要加上单引号

4 向日志文件组4再增加一个成员(REDO04a.LOG)

SYS@ncbeta>alter database add logfile member 'C:\app\dell\oradata\ncbeta\red004a
.log' to group 4;

注意:alter 语句中不可设定redo04a.log的大小。

Alter语句运行之后,生成的redo04a.log的大小与red004.lgo的大小一致。路径可以选择与默认路径不一致。


5 将REDO01.LOG移动到一个新地方
( 日志文件的移动或重命名:
1. 关闭数据库
2. 使用操作系统的命令拷贝、移动或重命名重做日志文件
3. 启动

 

需要退出之后重新进入,并且starup mount


4. 使用ALTER DATABASE RENAME FILE 'original name' TO 'new name'命令更新控制文件
5. 打开数据库)

6 删除日志成员和日志文件组(current、active)
alter system switch logfile
alter system checkpoint

检查一下对应的物理文件是否被删除
7 OMF
检查一下对应的物理文件是否被删除

8 设置归档目的地并测试归档

9 日志文件的修复

(1) SQL>alter database clear logfile group n;
(2) SQL>alter database clear unarchived logfile group n;

(3) SQL>recover database until cancel;
SQL>alter database open resetlogs;
SQL>archive log list;

_allow_resetlogs_corruption

 

附加:

改变当前联机日志文件的大小

系统环境:
  1、操作系统:Windows 2000
  2、数据库: Oracle 8i (8.1.7) for NT 企业版
  3、安装路径:D:\ORACLE
  
  实现方法:
  方法:加入新的大的日志文件,然后删掉旧的小的日志文件
  
  假设现有三个日志组,每个组内有一个成员,每个成员的大小为1MB,现在想把此三个日志组的成员大小都改为10MB
  
  1、创建2个新的日志组
  alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k;
  alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 1024k;
  
  2、切换当前日志到新的日志组
  alter system switch logfile;
  alter system switch logfile;

alter system archive log current

alter system checkpoint;

 

注意:alter system switch logfile 和alter system archive log current这两个切换的区别。

 

alter system switch logfile 是不等待归档完成就switch logfile。如果database尚未开启archive log mode。那用这个切换是毋庸置疑了。另外,也是对单实例database和RAC模式下当前实例执行日志切换。

 

而alter system archive log current则需要等待归档完成才switch logfile。会对中所有实例执行日志切换。

 

整体上说来,在自动归档的库里,两个命令的所产生的结果几乎一样。有区别的是alter system archive log current所用的时间会比alter system switch logfile 的长。

 

两个执行之后,可以将联机日志触发DBWR,写入数据文件,变成inactive删除,否则有可能在drop的时候提示


  
  3、删除旧的日志组

原则:删除前必须遵守如下原则,每个实例必须至少有两个日志组;当一个组处于ACTIVE或者CURRENT的状态时不可删除;删除日志组的操作只对数据库进行更改,操作系统的文件尚未删除;当删除时适用DROP LOGFILE GROUP N语句时,此时GROUP N内的所有成员都将被删除。
ALTER DATABASE DROP LOGFILE GROUP N;
删除日志成员的原则:当你删除一个是该组中最后一个成员的时候,你不能删除此成员;当组的转台处于current的状态时,不能删除组成员;在归档模式下,必须得归档之后才能删除;删除日志组成员的操作只对数据库进行更改,操作系统的文件尚未删除
ALTER DATABASE DROP LOGFILE MEMBER '/LOCATION_DUST/REDO0N_N.LOG';
 


  alter database drop logfile group 1;
  alter database drop logfile group 2;
  alter database drop logfile group 3;
  
  4、操作系统下删除原日志组1、2、3中的文件
  
  5、重建日志组1、2、3
  alter database add logfile group 1 ('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 10M;
  alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 10M;
  alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 10M;
  
  6、切换日志组
  alter system switch logfile;
  alter system switch logfile;
  alter system switch logfile;
  
  7、删除中间过渡用的日志组4、5
  alter database drop logfile group 4;
  alter database drop logfile group 5;
  
  8、到操作系统下删除原日志组4、5中的文件
  
  9、备份当前的最新的控制文件
  SQL> connect internal
  SQL> alter database backup controlfile to trace resetlogs

posted on 2012-12-20 20:55  sumsen  阅读(715)  评论(0编辑  收藏  举报