oracle如何重做日志组

摘要:
删除前查询SQL˃selectgroup#,statusfromv$log;GROUP#STATUS1CURRENT2INACTIVE3INACTIVE4UNUSED8UNUSED类似于组2和组3可以删除,而组1当前正在使用,除非切换日志组,否则无法删除。删除之前,记录文件位置,以便于手动执行操作系统rm删除命令alterdatabasedroplogfilegroup2;5.要删除日志成员,您应该注意,日志组中必须至少保留一个成员,并且只能删除状态不是ONLINE或CURRENT的日志成员。

1、查询数据库中的重做日志组

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME

1 1 64 52428800 512 1 NO CURRENT 1522229 17-MAY-19 2.8147E+14

2 1 62 52428800 512 1 NO INACTIVE 1502072 16-MAY-19 1515210 17-MAY-19

3 1 63 52428800 512 1 NO INACTIVE 1515210 17-MAY-19 1522229 17-MAY-19

2、具体查看日志文件详情(位置)

SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE

3 ONLINE /u01/app/oraData/orcl/redo03.log NO

2 ONLINE /u01/app/oraData/orcl/redo02.log NO

1 ONLINE /u01/app/oraData/orcl/redo01.log NO

3、创建重做日志组

SQL> alter database add logfile ('/u01/app/oraData/orcl/hbk01.rdo','/u01/app/oraData/orcl/hbk02.rdo') size 5M;

Database altered.

SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE

3 ONLINE /u01/app/oraData/orcl/redo03.log NO

2 ONLINE /u01/app/oraData/orcl/redo02.log NO

1 ONLINE /u01/app/oraData/orcl/redo01.log NO

4 ONLINE /u01/app/oraData/orcl/hbk01.rdo NO

4 ONLINE /u01/app/oraData/orcl/hbk02.rdo NO

可以看到多了两个重做日志文件hbk01.rdo,hbk02.rdo,组的编号为4,查询v$log可以知道4号组的status为UNUSED,表示新建状态,未使用。

SQL> select * from v$log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME

1 1 64 52428800 512 1 NO CURRENT 1522229 17-MAY-19 2.8147E+14

2 1 62 52428800 512 1 NO INACTIVE 1502072 16-MAY-19 1515210 17-MAY-19

3 1 63 52428800 512 1 NO INACTIVE 1515210 17-MAY-19 1522229 17-MAY-19

4 1 0 5242880 512 2 YES UNUSED 0 0

可以看出我们创建重做日志组的编号默认系统产生

我们也可以知道组编号

SQL> alter database add logfile group 8 ('/u01/app/oraData/orcl/hbk10.rdo') size 5M;

Database altered.

SQL> select * from v$logfile;

GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE

4、删除重做日志组

删除重做日志组只是更新了控制文件,被删除的组所拥有的重做日志文件并没有从操作系统中删除,需要手工删除,而且只能删除状态是INAVTIVE的重做日志组,如果想删除当前(CURRENT)的重做日志组,必须手工切换,可以使用alter system switch logfile,而且每个数据库至少需要有两组重做日志组,因为要循环使用。

删除之前先查询下

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

GROUP# STATUS

1 CURRENT

2 INACTIVE

3 INACTIVE

4 UNUSED

8 UNUSED

像组2和组3都可以删,而组1为当前使用,不能删,除非切换使用日志组。删除之前先记下文件位置,方便手动执行操作系统rm删除命令

alter database drop logfile group 2;

5、删除日志成员

需要注意的是,一个日志组中至少需要保留一个成员,而且只能删除状态不是ONLINE或CURRENT的日志成员。

SQL> select * from v$logfile;无锡正规妇科 http://www.xasgyy.net/

GROUP# STATUS TYPE MEMBER IS_RECOVERY_DEST_FILE

SQL> alter database drop logfile member '/u01/app/oraData/orcl/hbk10.rdo';

alter database drop logfile member '/u01/app/oraData/orcl/hbk10.rdo'

ERROR at line 1:

ORA-00362: member is required to form a valid logfile in group 8

ORA-01517: log member: '/u01/app/oraData/orcl/hbk10.rdo'

SQL> alter database drop logfile member '/u01/app/oraData/orcl/hbk8.rdo';

Database altered.

7、查看重做日志是否归档

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

GROUP# STATUS ARC

1 INACTIVE NO

2 INACTIVE NO

3 INACTIVE NO

4 INACTIVE NO

8 CURRENT NO

NO表示未归档,YES表示已归档。

因为我的没有开启归档模式,所以都显示NO

SQL> select name,log_mode from v$database;

NAME LOG_MODE

ORCL NOARCHIVELOG

免责声明:文章转载自《oracle如何重做日志组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇全链路压测(1):认识全链路压测钉钉小程序中canvas绘图模糊(环形进度条 )下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ORACLE 锁机制

Refer to:http://blog.csdn.net/tianlesoftware/article/details/4696896 万能解决之道,就是从系统级kill掉lock的process  在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事...

ArcGis连接oracle、oracle配置

服务器:Oracle11g(我是默认路径安装,自定义路径没成功,不知道为什么) 客户端:arcgis desktop 10.2、oracle 11g 32位客户端 客户端:arcgis server 10.2、oracle 11g 64位客户端 1、服务器上安装oracle 11g,客户端安装arcgis desktop 10.2对应oracle 11g...

Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令

Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。 执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行, DOS中可以执行时...

SQL优化(转)

1. 负向条件查询不能使用索引     select * from order where status!=0 and stauts!=1     not in/not exists都不是好习惯     可以优化为in查询:     select * from order where status in(2,3)  2. 前导模糊查询不能使用索引    ...

Oracle和SQL server查询数据库中表的创建和最后修改时间

有时候我们需要查看下数据数据库中表的创建时间和最后修改时间,可以通过以下语句实现; Oracle数据库 -- 查看当前用户下的表 SELECT * FROM USER_TABLES -- 查看数据库中所有的表 SELECT * FROM DBA_TABLES -- 查看所有表的创建和最后修改时间 SELECT OBJECT_NAME, CREATED,...

oracle缩小表空间

数据库用久了难免会出现没有回收的空间,如果空间太大可使用以下方法进行回收。 查询用个表所占用的空间: SELECT tablespace_name, 100*(sum_max-sum_alloc+nvl(sum_free,0))/sum_max AS capa_per, (sum_max-sum_alloc+nvl(sum_free,0))/1024/1...