忠告:- 在下述操作前进行数据库完全备份
- 在下述操作后进行控制文件(control file)的备份
查询logfile相关信息: SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER---------- ------- ------- -------------------------------------------------- 3 ONLINE /u01/app/Oracle/oradata/knitter/redo03.log 2 ONLINE /u01/app/oracle/oradata/knitter/redo02.log 1 ONLINE /u01/app/oracle/oradata/knitter/redo01.log 4 ONLINE /u01/app/oracle/oradata/knitter/redo04.rdo 4 INVALID ONLINE /u01/app/oracle/oradata/knitter/redo04_02.rdo SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; GROUP# ARC STATUS---------- --- ---------------- 1 NO CURRENT 2 YES INACTIVE 3 YES INACTIVE 4 YES INACTIVE SQL> select * from V$LOG_HISTORY; RECID STAMP THREAD# SEQUENCE# FIRST_CHANGE# FIRST_TIM NEXT_CHANGE#---------- ---------- ---------- ---------- ------------- --------- ------------ 1 716304893 1 1 158900 01-APR-10 260498 2 716317218 1 2 260498 14-APR-10 296893 3 716317260 1 3 296893 14-APR-10 296990 4 716319163 1 4 296990 14-APR-10 303247 5 716319176 1 5 303247 14-APR-10 303252 6 716384800 1 6 303252 14-APR-10 332583 7 716384854 1 7 332583 15-APR-10 332775 8 716384882 1 8 332775 15-APR-10 332881 9 716384892 1 9 332881 15-APR-10 332889 ============================================================================================ - 增加组(同时指定logfile):
ALTER DATABASE
ADD LOGFILE ("/oracle/dbs/log1c.rdo", "/oracle/dbs/log2c.rdo") SIZE 500K;ALTER DATABASE
ADD LOGFILE GROUP 10 ("/oracle/dbs/log1c.rdo", "/oracle/dbs/log2c.rdo")
SIZE 500K;- 增加组成员
ALTER DATABASE ADD LOGFILE MEMBER"/oracle/dbs/log2b.rdo"TO GROUP 2; ALTER DATABASE ADD LOGFILE MEMBER"/u01/app/oracle/oradata/knitter/redo05_3.rdo","/u01/app/oracle/oradata/knitter/redo05_4.rdo" TO GROUP 5; ALTER DATABASE ADD LOGFILE MEMBER "/oracle/dbs/log2c.rdo"
TO ("/oracle/dbs/log2a.rdo", "/oracle/dbs/log2b.rdo"); 说明: 在增加组成员的时候, 不能指定logfile文件大小,因为同一组(logGroup)中所有member文件是完全一样的(大小、内容),Oracle将自动根据已有组员确定其大小。如果指定了大小,将会出错,如:SQL> alter database add logfile member "/oracle/dbs/log1f.rdo" size 100k to group 5;alter database add logfile member "/oracle/dbs/log1f.rdo" size 100k to group 5 *ERROR at line 1:ORA-00946: missing TO keyword - 删除组成员
前提条件: - 无法删除组中的最后一个成员
- 所在组状态不能为 active 或 current, 否则必须先进行日志切换(log switch)
- 如果数据库处于归档模式,必须(通过强制日志切换)先确保待删除组成员中的信息已经被归档
ALTER SYSTEM SWITCH LOGFILE;然后通过如下语句查询,确保待操作组不为active或current状态:SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; ALTER DATABASE DROP LOGFILE MEMBER "/oracle/dbs/log3c.rdo"; 说明:- 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件 - 删除组
前提条件: - 最起码要有两个组
- 所在组状态不能为 active 或 current, 否则必须先进行日志切换(log switch)
- 如果数据库处于归档模式,必须(通过强制日志切换)先确保待删除组成员中的信息已经被归档
ALTER SYSTEM SWITCH LOGFILE;然后通过如下语句查询,确保待操作组不为active或current状态:SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; ALTER DATABASE DROP LOGFILE GROUP 3; 说明:- 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件 说明:- 上述操作完成后,只是删除了Oracle中的相关记录信息,
还应该使用操作系统删除指令,删除硬盘上相应的日志文件 - 移动与重命名
增加一个新的日志组成员,删除原有组成员, 以达到移动和重命名的效果 - 关闭数据库:
SQL> shutdown;- 使用操作系统指令,移动待处理的日志文件到目标位置
- 启动数据库到 MOUNT 状态
SQL> startup mount;- 执行如下指令重命名日志文件:
ALTER DATABASE
RENAME FILE "/diska/logs/log1a.rdo", "/diska/logs/log2a.rdo"
TO "/diskc/logs/log1c.rdo", "/diskc/logs/log2c.rdo"; - 开启数据库:
SQL> alter database open; - 清空日志文件
忠告: 在清空未归档日志文件前,进行数据库完全备份 使用场景:日志文件无法Drop, 常见有如下情况- 只有两组日志文件(不允许Drop)
- 待处理日志文件处于current状态组
指令:ALTER DATABASE CLEAR LOGFILE GROUP 3;- 如果待清空日志文件数据已经损坏,同时数据库处于归档模式。此时,为了避免该损坏日志文件被归档,可使用如下指令:
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;Oracle EM 启动出错解决Linux下Oracle导入(imp)导出(exp)出现“failed to open ...for reader/wirte” 错误相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (0)