Oracle 删除重做日志
解决Oracle删除重复数据只留一条的方法详解
![解决Oracle删除重复数据只留一条的方法详解](https://img.taocdn.com/s3/m/5267f406876fb84ae45c3b3567ec102de2bddf72.png)
解决Oracle删除重复数据只留⼀条的⽅法详解查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最⼩的记录DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECTMIN(ROWID) FROM 表 GROUP BY id HAVING COUNT(*) > 1);3、查找表中多余的重复记录(多个字段)select * from 表 awhere (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)4、删除表中多余的重复记录(多个字段),只留有rowid最⼩的记录delete from 表 awhere (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)5、查找表中多余的重复记录(多个字段),不包含rowid最⼩的记录select * from 表 awhere (a.Id,a.seq) in (select Id,seq from 表 group by Id,seq having count(*) > 1)and rowid not in (select min(rowid) from 表 group by Id,seq having count(*)>1)(⼆)⽐⽅说在A表中存在⼀个字段“name”,⽽且不同记录之间的“name”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;Select Name,Count(*) From A Group By Name Having Count(*) > 1如果还查性别也相同⼤则如下:Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1(三)⽅法⼀复制代码代码如下:declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0 ⽅法⼆"重复记录"有两个意义上的重复记录,⼀是完全重复的记录,也即所有字段均重复的记录,⼆是部分关键字段重复的记录,⽐如Name字段重复,⽽其他字段不⼀定重复或都重复可以忽略。
oracle清理30天归档日志 -回复
![oracle清理30天归档日志 -回复](https://img.taocdn.com/s3/m/42edec33f56527d3240c844769eae009581ba219.png)
oracle清理30天归档日志-回复Oracle数据库是一种非常强大且广泛使用的关系型数据库管理系统。
随着时间的推移,数据库中的日志文件会逐渐增加,占用大量的存储空间。
为了确保系统正常运行并节约存储资源,定期清理归档日志文件变得至关重要。
本文将逐步介绍如何清理Oracle数据库中30天前的归档日志文件。
步骤一:确认数据库归档模式和归档日志保存期限在执行清理归档日志的操作之前,我们需要确认数据库当前的归档模式以及归档日志的保存期限。
归档模式主要有两种:归档模式(ARCHIVELOG)和非归档模式(NOARCHIVELOG)。
归档模式下,Oracle 会将已经使用的日志文件以及在线日志文件归档并保存为归档日志文件。
非归档模式下,Oracle只保留正在使用的日志文件,不会进行归档保存。
要确认数据库的归档模式,可以执行以下SQL语句:SELECT log_mode FROM vdatabase;该查询结果将显示数据库当前的归档模式。
另外,我们还需要确认数据库的归档日志保存期限。
Oracle会根据数据库的配置自动删除30天以前的归档日志文件。
如果需要更改归档日志保存期限,可以执行以下SQL语句:ALTER SYSTEM SET LOG_ARCHIVE_RETENTION_TARGET=30;该语句将设置归档日志保存期限为30天。
请注意,更改归档日志保存期限可能会有一定的风险,请谨慎操作。
步骤二:确认数据库归档日志文件的位置在执行清理归档日志的操作之前,我们还需要确认数据库归档日志文件的位置。
可以执行以下SQL语句来获取归档日志文件的存储位置:SELECT name FROM VARCHIVE_DEST WHERE status='VALID';该查询结果将显示归档日志文件存储的位置。
步骤三:清理30天前的归档日志一旦确认了数据库的归档模式、归档日志保存期限以及归档日志文件的位置,我们就可以开始清理30天前的归档日志文件了。
oralce归档日志的手动删除
![oralce归档日志的手动删除](https://img.taocdn.com/s3/m/b616080a876fb84ae45c3b3567ec102de2bddfd0.png)
oralce归档日志的手动删除
当oracle 数据库开启归档模式后,会在归档模式下生成归档文件,如果不及时清理归档日志最终将会导致数据库无法访问,下面说一下如何正确的手动清理归档日志。
1、找到归档日志所在目录。
不确定归档日志的目录?没关系,查询一下就OK了
进入到sqlplus 下:执行archive log list 命令就可以看到存档终点 E:\arc2
2、删除要删除的归档日志
3、清除控制文件中的记录
虽然人为的把物理文件给删了,但是oracle 的控制文件里面是有存在归档文件的记录的,接下来就是清除记录的步骤。
3.1进入ORACLE数据备份工具(RMAN)
CMD--->RAMN
3.2以ORACLE用户身份登录到数据库服务器主机或通过网络连接
connect target / (此处就不讲解ramn 命令了,target / 表示只有一个实例且设置了环境变量,执行这个命令会自动进入数据库)
3.3crosscheck archivelog all;
3.4delete expired archivelog all;
OK 搞定! 有不明白的地方*****************。
oracle清理30天归档日志
![oracle清理30天归档日志](https://img.taocdn.com/s3/m/d7917a7530126edb6f1aff00bed5b9f3f90f72b1.png)
标题:Oracle数据库清理30天归档日志的最佳实践一、概述Oracle数据库在运行过程中会生成大量的归档日志,这些归档日志对于数据库的正常运行至关重要。
但是随着时间的推移,归档日志会逐渐堆积,影响数据库的性能和稳定性。
定期清理归档日志成为了数据库管理员必须要做的工作之一。
本文将就Oracle数据库清理30天归档日志的最佳实践进行详细介绍。
二、归档日志的作用1. 归档日志是数据库备份和恢复的重要组成部分,能够保证数据库发生故障时能够及时恢复到指定的时间点。
2. 归档日志还可以用于数据库的数据复制和迁移,保证数据的一致性和完整性。
3. 归档日志也是检测数据库性能问题和故障的重要依据,有助于数据库的运行监控和故障排查。
三、清理30天归档日志的必要性1. 避免归档日志文件过多导致空间不足的问题。
2. 提高数据库的性能和稳定性,减少I/O压力。
3. 降低数据库维护成本和工作量,在归档日志过多的情况下备份、恢复和数据导入导出都会受到影响。
四、清理30天归档日志的步骤1. 确认数据库当前的归档日志文件所在的位置和数量,可以使用以下SQL查询:SELECT * FROM V$LOG;SELECT * FROM V$LOGFILE;2. 确认需要保留的归档日志时间范围,一般推荐保留30天的归档日志。
3. 使用RMAN命令来清理归档日志,可以通过以下命令来实现:RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-30';4. 确认归档日志文件是否成功清理,可以通过以下SQL查询来验证: SELECT * FROM V$LOG;SELECT * FROM V$LOGFILE;五、清理策略的注意事项1. 确保在清理归档日志之前已经完成了相关的备份工作,以避免数据丢失的风险。
2. 定期监控数据库的归档日志文件数量和大小,及时调整清理策略以保证数据库的正常运行。
3. 在清理归档日志的过程中,要避免影响数据库的正常运行,可以选择在低峰期进行清理操作。
oracle归档操作步骤
![oracle归档操作步骤](https://img.taocdn.com/s3/m/9f42c7d36aec0975f46527d3240c844769eaa016.png)
oracle归档操作步骤
Oracle的归档操作主要包括开启归档模式、修改归档日志路径以及删除归档日志等步骤。
1.查看归档模式是否开启以及重做日志存放路径。
可以通过执行SQL
命令archive log list来查看归档日志的状态,以及SELECT * FROM v$logfile ORDER BY group#;来查看重做日志的存放路径。
2.开启归档模式。
首先关闭数据库实例,然后启动到mount状态,接着
修改数据库为归档模式,最后打开数据库。
3.修改归档日志路径。
如果需要修改归档日志的路径,可以通过修改初
始化参数log_archive_dest_1的值来实现。
注意新路径必须已经存在,且每个目录都必须存在。
4.实验是否成功将路径做了修改。
可以通过切换重做日志的活跃状态来
触发日志备份,生成新的归档日志,并检查新的归档日志是否保存在设置的目录下。
5.删除归档日志。
首先通过执行crosscheck archivelog all;命令
来检查归档日志文件,然后通过执行delete expired archivelog all;命令来删除校验失败的记录。
5重做日志文件
![5重做日志文件](https://img.taocdn.com/s3/m/b9c23b03cd7931b765ce0508763231126edb779c.png)
5重做⽇志⽂件重做⽇志⽂件时为了数据库恢复的物理⽂件,其中保存了数据库的变更操作信息。
通过重做⽇志⽂件通常是通过重做(REDO)或者是回退(UNDO)实现的。
重做(REDO)就是有些原因到导致事务对数据库的操作的修改在写⼊数据⽂件之前丢失了,此时就可以利⽤重做⽇志⽂件做该事务对数据库的变更。
回退(UNDO)如果⽤户在事务提交之前想回滚事务,那么可以利⽤重做⽇志⽂件撤销事务对数据库所做的变更。
重做⽇志⽂件的⼯作原理:每个数据库⾄少有两个重做⽇志⽂件,采⽤循环邪写的⽅式进⾏⼯作。
这样就能保证当⼀个重做⽇志⽂件在进⾏归档时,还有另⼀个重做⽇志⽂件可⽤。
当⼀个重做⽇志⽂件被写满后,后台进⾏就开始写下⼀个重做⽇志⽂件。
当所有的重做⽇志⽂件都写满后,LGWR进程再重新开始写⼊第⼀个重做⽇志⽂件,开始新的循环。
通常LGWR进程再开始下⼀个重做⽇志之前要确定:该重做⽇志⽂件中的所有重做记录所对应的变更操作结果必须全部写⼊数据⽂件中。
如果数据库处于“归档模式”,要确定对该重做⽇志⽂件进⾏了归档。
重做⽇志⽂件切换与⽇志序列号重做⽇志⽂件切换是指LGWR对⼀个重做⽇志⽂件停⽌写⼊,开始对另⼀个重做⽇志⽂件写⼊的过程。
⽇志序列号:当每次发⽣重做⽇志切换时,数据库赋予重做⽇志⽂件⼀个⽇志序列号(log sequence number),LGWR进程将该序列号写⼊相应的重做⽇志⽂件。
重做⽇志⽂件组的概念:每个重做⽇志⽂件的拷贝称为重做⽇志⽂件组的成员(MEMBER)。
重做⽇志⽂件组使⽤数字标号,如group 1、group 2等。
重做⽇志⽂件故障响应:当重做⽇志⽂件组中某个成员⽂件不可⽤时,LGWR进程⽆法对该重做⽇志⽂件进⾏写⼊操作,数据库将表⽰该重做⽇志⽂件的状态为INVALID,将错误信息写⼊LGWR进程跟增⽂件中,同时,还会将该重做⽇志⽂件不可⽤的原因写⼊报警⽂件中。
重做⽇志⽂件规划(1)重做⽇志⽂件组的数量:在oracle数据库中,重做⽇志⽂件采⽤循环写的⽅式⼯作,因此⾄少需要两个可⽤的重做⽇志⽂件组。
oracle8管理控制文件和重做日日志文件
![oracle8管理控制文件和重做日日志文件](https://img.taocdn.com/s3/m/97ac5e17bb4cf7ec4bfed076.png)
2021/2/17
oracle8管理控制文件和重做日日志文件
移动重做日志文件
Open状态下移动redo文件 • 确保处于inactive状态 • Host copy • 执行alter database rename file A to B语句 • 备份控制文件或数据库
学习改变命运,知 识创造未来
2021/2/17
oracle8管理控制文件和重做日日志文件
重做日志文件管理
• 重做日志文件的作用
• 数据库恢复中起到非常重要的作用 • 例程恢复、介质恢复以及事务的撤销
• 重做日志文件组\成员
• Redo01.log\redo02_1.log\redo02_2.log • Maxlogfiles:重做日志文件组的最大数量 • Maxlogmembers:每个组成员的最大数量
• Alter tablespace temp add tempfile ‘%oracle_home%\oradata\orcl\temp01.dbf’
如何清理oracle安装目录里的一些日志
![如何清理oracle安装目录里的一些日志](https://img.taocdn.com/s3/m/dcaeb1a2d1f34693daef3e4d.png)
如何清理oracle安装目录里的一些日志
这个问题的起因是我这两天发现我们的一个开发环境oracle所在的安装目录容量增长的很迅速,我想找到增长的原因。
如下是我处理该问题的步骤:
1、先查看一下上述环境oracle安装目录(/u01)下一天之内改过的且大小在10M以上的文件:
find /u01 -ctime 1 -size +20000 –print
2、从1中的结果可以看到listener.log和http-web-access.log非常大。
3、先处理listener.log,步骤如下:
1)lsnrctl set log_status off
2)rm listener.log
3)lsnrctl set log_status on
4、再处理http-web-access.log,步骤如下:
1)更改dbconsole的配置文件
($ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_HOST__<hostname>_<SID>/config下的文件http-web-site.xml),将其中的<access-log path="../log/http-web-access.log" />更改为<access-log path="../log/http-web-access.log" split="day"/>
2)重启dbconsole
3) rm http-web-access.log。
oracle通过rman实现自动化清理归档日志详细过程
![oracle通过rman实现自动化清理归档日志详细过程](https://img.taocdn.com/s3/m/23d78e00866fb84ae45c8dbc.png)
业务增长发展迅猛,归档日志增长太快,磁盘承受不了,所以准备做个定时清理归档日志的定时任务。
1、RM方式清理归档日志清理归档日志,可以人为的删除已经归档好的日志文件,然后再调用rman里面RMAN> crosscheck archivelog all;来去数据库里面删除归档记录;也可以通过ram调用delete命令来删除归档日志。
2、使用rman清理归档日志RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息。
可以基于不同的条件来清除归档日志,如基于SCN,基于SEQUENCE,基于TIME等方式。
对于上述的三种方式又可以配合from, until, between .. and .. 等等子句来限定范围,方式灵活多变。
下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的:DELETE NOPROMPT ARCHIVELOG UNTIL TIME "TO_DATE('XXXX-XX-XX','YYYY-MM-DD')";delete noprompt archivelog until time "to_date('2016-09-14 18:00:00','YYYY-MM-DD ')"crosscheck archivelog all; --->校验日志的可用性list expired archivelog all; --->列出所有失效的归档日志delete archivelog until sequence 16; --->删除log sequence为16及16之前的所有归档日志delete archivelog all completed before 'sysdate-7'; --->删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志delete archivelog all completed before 'sysdate - 1'; --->同上,1天以前的delete archivelog from time 'sysdate-1'; --->注意这个命令,删除系统时间1天以内到现在的归档日志delete noprompt archivelog all completed before 'sysdate'; --->该命令清除当前所有的归档日志delete noprompt archivelog all completed before 'sysdate-0'; --->该命令清除当前所有的归档日志delete noprompt archivelog all; --->同上一命令3、实现清理一个小时前的归档日志执行命令:delete force archivelog all completed before 'sysdate-1/24';4、自动化脚本定时任务实现清理一个小时前的归档日志。
Oracle归档模式及归档日志的操作
![Oracle归档模式及归档日志的操作](https://img.taocdn.com/s3/m/db70f20ff111f18582d05a07.png)
Oracle归档模式及归档日志的操作1归档模式及归档日志基本概念:1.1为什么要给Oracle做归档操作:Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,比如插入,删除,更新数据等,对这些操作都会记录在联机重做日志里。
当ORACLE数据库运行在ARCHIVELOG(归档模式)模式时,所有的事务重做日志都将保存.这意味着对数据库进行的所有事务都留有一个备份,尽管重做日志以循环方式工作,但在一个重做日志被覆盖前均将为其建立一个副本.在重做日志文件复制完成之前,ORACLE数据库将停止一切新的操作,在旧的事务记录完成之前ORACLE不对其进行覆盖.有了所有事务的副本,数据库就可以从所有类型的失败中恢复,包括用户错误或磁盘崩溃.这是一种最安全的数据库工作方式。
在实际开发中,归档模式是符合开发的,归档模式可以提高Oracle数据库的可恢复性,生产数据库都应该运行在此模式下,数据库使用归档方式运行时才可以进行灾难性恢复。
1.2归档模式和非归档模式的区别:非归档模式只能做冷备份,并且恢复时只能做完全备份.最近一次完全备份到系统出错期间的数据不能恢复.归档模式可以做热备份,并且可以做增量备份,可以做部分恢复.1.3什么是归档日志:归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档日志中.当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。
2Linux系统开启归档模式:使用ssh登录到Linux系统:2.1切换到oracle用户,然后使用sqlplus /nolog登录到oracle数据上:su -oraclesqlplus /nolog2.2使用oracle系统管理员sysdba登录到数据库:conn /as sysdba2.3查看当前oracle的模式:select log_mode from v$database;如果当前模式为NOARCHIVELOG,就说明没有开启归档模式2.4关闭数据库,启动到mount状态:shutdown immediate;startup mount;2.5修改数据库为归档模式alter database archivelog; (此处的分号不可以省略)(如果是归档模式改为非归档,则执行:alter database noarchivelog;)2.6启动数据库:alter database open;2.7再次验证:执行select log_mode from v$database;可查看到oracle已经修改为归档模式了3Windows开启归档模式:3.1打开sqlplus工具:sqlplus工具路径:F:\Oracle\product\11.2.0\dbhome_1\BIN中的sqlplus.exe双击打开即可。
oracle 删除归档日记
![oracle 删除归档日记](https://img.taocdn.com/s3/m/4579ceff8ad63186bceb19e8b8f67c1cfad6eea6.png)
oracle 删除归档日记要删除归档日志,可以使用以下步骤:1. 首先,确认数据库实例处于归档模式。
可以使用以下命令:```ARCHIVE LOG LIST;```如果显示当前归档模式为“Enabled”,则可以继续进行下一步。
2. 确认要删除的归档日志的起始和结束时间。
可以使用以下命令:```SELECT SEQUENCE#, FIRST_TIME, NEXT_TIMEFROM V$ARCHIVED_LOGWHERE FIRST_TIME >= TO_DATE('开始时间', 'YYYY-MM-DD HH24:MI:SS')AND NEXT_TIME <= TO_DATE('结束时间', 'YYYY-MM-DD HH24:MI:SS');```替换上述命令中的“开始时间”和“结束时间”为实际的起始和结束时间。
3. 使用 RMAN(Recovery Manager)工具删除归档日志。
可以使用以下命令:```RMAN TARGET /DELETE ARCHIVELOG ALL COMPLETED BEFORE '开始时间';```替换上述命令中的“开始时间”为实际的起始时间。
4. 在删除完成后,可以再次确认归档日志是否已被删除。
使用以下命令:```SELECT SEQUENCE#, FIRST_TIME, NEXT_TIMEFROM V$ARCHIVED_LOGWHERE FIRST_TIME >= TO_DATE('开始时间', 'YYYY-MM-DD HH24:MI:SS')AND NEXT_TIME <= TO_DATE('结束时间', 'YYYY-MM-DD HH24:MI:SS');```确保不再显示要删除的归档日志。
请注意,在执行这些操作之前,请务必备份数据库以防意外情况发生。
Oracle10归档日志删除后的记录清理
![Oracle10归档日志删除后的记录清理](https://img.taocdn.com/s3/m/d5eda51edc36a32d7375a417866fb84ae45cc3c0.png)
Oracle10归档日志删除后的记录清理Oracle10归档日志删除后的记录清理Oracle10G在归档模式下运行时,如果未定期进行备份及归档日志的清除,将会导致归档日志空间不足而引起数据库不能正常打开。
由于归档日志空间由Oracle自动管理,其记录存储在控制文件中,所以采用强制从操作系统删除归档日志的方式并不能释放空间,并且在控制文件中的记录依然存在。
同时,强制删除日志文件而未清理控制文件中记录后,将导致后续的在线备份不能完成。
不管是有意还是无意删除了归档日志,都可使用RMAN进行控制文件中日志记录的清理:$oracle>rmanRman>connect target;Rman>crosscheck archivelog all;Rman>delete expired archivelog all;Rman>exit;当发生归档日志空间已满而数据库不能打开时,可采取上述方式,按下述步骤进行处理:●强制删除(或部分删除)归档日志记录(缺省安装时位于/oracle/flash_recovery_area目录中);●将数据库启动到mount状态(startup mount)●通过RMAN清理掉日志记录,实现空间的释放;另外,如果操作系统空间资源充足,也可以通过sqlplus采用扩充归档日志空间的方式先进行处理,使数据库能正常打开,再进行全库备份(备份策略应包含归档日志备份、删除已备份归档日志),实现释放归档日志空间的目的:$oracle>sqlplus / as sysdbaSql>startup mountSql>show parameter db_recovery_file_dest_sizeSql>alter system set db_recovery_file_dest_size = 20GSql>alter database openSql>exit;$oracle>rmanRman>connect targetRman>backup databaseRman>exit;上述的RMAN备份与备份策略的设置有关,最好使用oracle的EM工具,通过图形化界面进行数据库的全库备份,并将备份设置为作业,定时执行,以最终解决归档日志空间的释放问题。
oracle delete nologging语句
![oracle delete nologging语句](https://img.taocdn.com/s3/m/adf6f860bc64783e0912a21614791711cc7979cf.png)
oracle delete nologging语句
在Oracle数据库中,`NOLOGGING`是一个选项,用于指示某些操作(如
索引创建、表创建或数据删除)不记录在重做日志中。
这可以提高这些操作的性能,但也可能增加数据丢失的风险,因为重做日志是数据库恢复的一个重要组成部分。
`DELETE NOLOGGING`语句用于指示Oracle数据库在删除数据时不记录
重做日志。
语法如下:
```sql
DELETE /+ NOLOGGING / FROM table_name WHERE condition;
```
其中,`table_name`是要删除数据的表名,`condition`是删除数据的条件。
使用`NOLOGGING`选项时需要注意以下几点:
1. 使用`NOLOGGING`可能会加速删除操作,但也增加了数据丢失的风险。
如果数据库发生故障,使用`NOLOGGING`的删除操作可能无法恢复。
2. 在执行`NOLOGGING`删除操作之前,需要确保数据库处于适当的模式(例如,非归档日志模式)。
可以使用以下语句将数据库设置为非归档日志模式:
```sql
ALTER DATABASE NOARCHIVELOG;
```
3. 执行`NOLOGGING`删除操作后,需要重新启用日志记录。
可以使用以下语句将数据库设置为归档日志模式:
```sql
ALTER DATABASE ARCHIVELOG;
```
4. 谨慎使用`NOLOGGING`选项。
仅在确定不会丢失重要数据的情况下才使用它,并且要了解相关的风险和限制。
Linux_oracle命令大全
![Linux_oracle命令大全](https://img.taocdn.com/s3/m/aa9790cc8bd63186bcebbc59.png)
Linux_oracle命令大全一,启动1.#su - oracle 切换到oracle用户且切换到它的环境2.$lsnrctl status 查看监听及数据库状态3.$lsnrctl start 启动监听4.$sqlplus / as sysdba 以DBA身份进入sqlplus5.SQL>startup 启动db二,停止1.#su - oracle 切换到oracle用户且切换到它的环境2.$lsnrctl stop 停止监听3.$sqlplus / as sysdba 以DBA身份进入sqlplus4.SQL>SHUTDOWN IMMEDIATE 关闭db其中startup和shutdowm还有其他一些可选参数,有兴趣可以另行查阅三,查看初始化参数及修改1.#su - oracle 切换到oracle用户且切换到它的环境2.$sqlplus / as sysdba 以DBA身份进入sqlplus3.SQL>show parameter session; 查看所接受的session数量###################################################### Oracle process与session2008年12月29日星期一15:47Connected to Oracle Database 10g Release 10.1.0.5.0Connected as ifsappSQL> show parameter sessionNAME TYPE V ALUE------------------------------------ ----------- ------------------------------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1session_cached_cursors integer 0session_max_open_files integer 10sessions integer 225shared_server_sessions integerSQL> show parameters processes;NAME TYPE V ALUE------------------------------------ ----------- ------------------------------aq_tm_processes integer 0db_writer_processes integer 1gcs_server_processes integer 0job_queue_processes integer 3log_archive_max_processes integer 2processes integer 200SQL> alter system set processes=600 scope=both;SQL>SQL> alter system set processes=600 scope=both;alter system set processes=600 scope=bothORA-02095: specified initialization parameter cannot be modified SQL> alter system set sessions=600 scope=both;alter system set sessions=600 scope=bothORA-02095: specified initialization parameter cannot be modified SQL>SQL> alter system set processes=600 scope=spfile;System alteredSQL> show parameters processes;NAME TYPE V ALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 0db_writer_processes integer 1gcs_server_processes integer 0job_queue_processes integer 3log_archive_max_processes integer 2processes integer 200SQL> alter system set processes=600 scope=memory;alter system set processes=600 scope=memoryORA-02095: specified initialization parameter cannot be modified重启数据库之后生效:SQL> show parameters processes;NAME TYPE V ALUE ------------------------------------ ----------- ------------------------------ aq_tm_processes integer 0db_writer_processes integer 1gcs_server_processes integer 0job_queue_processes integer 3log_archive_max_processes integer 2processes integer 600SQL> show parameter sessionNAME TYPE V ALUE------------------------------------ ----------- ------------------------------java_max_sessionspace_size integer 0java_soft_sessionspace_limit integer 0license_max_sessions integer 0license_sessions_warning integer 0logmnr_max_persistent_sessions integer 1session_cached_cursors integer 0session_max_open_files integer 10sessions integer 665shared_server_sessions integer修改Oracle process 和session 的方法先备份spfile1.通过SQLPlus修改Oracle的sessions和processes的关系是sessions=1.1*processes + 5使用sys,以sysdba权限登录:SQL> show parameter processes;NAME TYPE V ALUE------------------------------------ ----------- --------------------------------------- aq_tm_processes integer 1db_writer_processes integer 1job_queue_processes integer 10log_archive_max_processes integer 1processes integer 150SQL> alter system set processes=400 scope = spfile;系统已更改。
oracle重做日志文件和归档日志
![oracle重做日志文件和归档日志](https://img.taocdn.com/s3/m/d3b3a58c9fc3d5bbfd0a79563c1ec5da51e2d651.png)
数据库恢复的原理
当数据库发生故障时,可以利用重做 日志文件来进行恢复。Oracle会根据 重做日志文件中的记录,重新执行对 数据库所做的更改,从而将数据库恢 复到一致的状态。
04 Oracle重做日志文件和归 档日志的管理和维护
日志文件的备份与恢复
备份策略
制定定期备份和增量备份策略,确保重做日志文件和归档日志的安全。
恢复方法
在发生故障时,根据备份情况选择适当的恢复方法,如全量恢复或增量恢复。
日志文件的清理与维护
清理过期日志
定期清理过期或不再需要的日志文件 ,释放存储空间。
Oracle重做日志文件和归档日志
contents
目录
• Oracle重做日志文件 • 归档日志 • Oracle重做日志文件和归档日志的关系 • Oracle重做日志文件和归档日志的管理
和维护 • Oracle重做日志文件和归档日志的故障
处理
ቤተ መጻሕፍቲ ባይዱ
01 Oracle重做日志文件
重做日志文件的作用
数据恢复
THANKS FOR WATCHING
感谢您的观看
存储容量
需要合理规划存储空间,确保有足够的空间存储归档日志文件,避 免空间不足导致数据库故障。
归档日志的恢复
恢复方法
当数据库发生故障时,可以使用归档日志进行恢复。可以选择完全恢复或部分恢复,根据需要选择相应的归档日志文 件。
恢复过程
在恢复过程中,需要按照时间顺序应用归档日志文件,确保数据的一致性。可以使用RMAN(Oracle Recovery Manager)进行自动恢复或手动恢复。
oracle_重做日志文件--笔记
![oracle_重做日志文件--笔记](https://img.taocdn.com/s3/m/d4667dd48ad63186bceb19e8b8f67c1cfad6eee4.png)
oracle_重做⽇志⽂件--笔记重做⽇志⽂件(redo log file)⽬录重做⽇志⽂件相关。
重做⽇志⽂件简介。
查询重做⽇志⽂件的信息。
⽇志切换。
管理⽇志⽂件组增删⽇志⽂件组。
增删⽇志⽂件成员。
归档与⾮归档模式。
⼀.重做⽇志⽂件相关。
Oracle引⼊重做⽇志的⽬的:数据库的恢复。
Oracle相关进程:重做⽇志写进程(LGWR)。
重做⽇志性质:联机⽇志⽂件,oracle服务器运⾏时需要管理它们。
相关数据字典:v$log ; v$logfile。
操作者权限:具有sys⽤户或system⽤户权限。
1.1重做⽇志⽂件的规划。
(于⽹络上收集)联机⽇志⽂件的规划原则如下:1:分散放开,多路复⽤。
⼀般会将同⼀组的不同⽇志成员⽂件放到不同的磁盘或不同的裸设备上。
以提⾼安全性。
2:把重做⽇志放在速度最快的硬盘上(即:⽇志所在的磁盘应当具有较⾼的I/O),⼀般会将⽇志⽂件放在裸设备上。
3:把重做⽇志⽂件设为合理⼤⼩:例如,增⼤⽇志⽂件⼤⼩可以加快⼀些⼤型的INSERT、UPDATE、DELETE操作,也能降低⽇志⽂件切换频率。
减少⼀些⽇志等待事件。
⼀般根据具体业务情况有所不同。
⼀般⽇志组⼤⼩应满⾜⾃动切换间隔⾄少15-20分钟左右业务需求4:ORACLE推荐,同⼀个重做⽇值组下的所有重做⽇志⽂件⼤⼩、成员个数⼀致.⼆.重做⽇志⽂件简介。
2.1重做⽇志重做⽇志⽂件⼜叫联机⽇志⽂件,记录了对数据库修改的信息,包括⽤户对数据修改和数据库管理员对数据库结构的修改。
2.2重做⽇志的作⽤。
它主要⽤于在oracle发⽣故障的时候和数据库备份⽂件配合恢复数据库。
⼀般来说,数据库故障丢失数据,有两种情况。
⼀是,因为停电或死机,脏块未写⼊磁盘,造成该数据丢失。
⼆是,磁盘损坏,数据全完蛋。
对应第⼀种情况,oracle会使⽤实例恢复,使⽤重做⽇志⾃动恢复数据,不需要⽤户⼲预。
没错,实例恢复,它是⾃动的。
对应第⼆种情况,便需要DBA使⽤备份,重做⽇志,归档⽇志来恢复数据了。
oracle数据库清理各种日志
![oracle数据库清理各种日志](https://img.taocdn.com/s3/m/de307e46cfc789eb172dc898.png)
清理原则:在文件系统使用率较高的目录中,使用如下命令,找出大文件或文件夹。
根据文件类型选择清理策略。
查看磁盘及文件目录大小:df –hdu –sh ./*1. 清理adump目录清理参数audit_file_dest指定的目录,清理的文件为“*.aud”SQL> show parameter audit_file_dest查看aud文件[oracle@localhost orcl]$ find /home/app/oracle/admin/orcl/adump -mtime +7 -name "*.aud" |more删除七天前aud文件[oracle@localhost orcl]$ find /home/app/oracle/admin/orcl/adump -mtime +7 -name "*.aud" | xargs rm -f2. 清理trace文件清理参数background_dump_dest指定的目录,清理的文件为.trSQL> show parameter background_dump_dest查看trc、trm文件[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/trace -mtime +7 -name "*.trc" | more[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/trace -mtime +7 -name "*.trm" | more删除七天前的trc、trm文件[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/trace -mtime +7 -name "*.trc" | xargs rm –f[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/trace -mtime +7 -name "*.trm" | xargs rm -f3. 清理xml日志清理路径为:$ORACLE_BASE/diag/rdbms/$DB_UNIQUE_NAME/ORACLE_SID/alert,清理文件为log_*.xml查看xml日志文件:[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/alert -mtime +7 -name "log_*.xml" | more删除七天前的xml文件:[oracle@localhost orcl]$ find /home/app/oracle/diag/rdbms/orcl/orcl/alert -mtime +7 -name "log_*.xml" | xargs rm -f4. 清理监听日志清理路径为:$GRID_BASE/diag/tnslsnr/NODE_NAME/listener/alert,清理文件为log_*.xml[oracle@localhost trace]$ find /home/app/oracle/diag/tnslsnr/localhost/listener/alert -mtime +7 -name "log_*.xml" | more[oracle@localhost trace]$ find /home/app/oracle/diag/tnslsnr/localhost/listener/alert -mtime +7 -name "log_*.xml" | xargs rm -f。
清理oracle日志
![清理oracle日志](https://img.taocdn.com/s3/m/291cd93af342336c1eb91a37f111f18583d00c2c.png)
清理oracle日志
清理Oracle日志是数据库管理中的重要任务,可以通过以下几
种方式来进行清理:
1. 使用日志归档(Archive Log)功能,Oracle数据库可以配
置为使用归档日志模式,这样数据库日志会被自动归档到指定的位置,可以定期清理已经归档的日志文件,以释放磁盘空间。
归档日
志的清理可以通过RMAN(Recovery Manager)工具或者手动方式进行。
2. 使用日志切换(Log Switch),在Oracle数据库中,日志
文件会不断切换,当一个日志文件写满后,数据库会自动切换到下
一个日志文件。
可以通过手动触发日志切换来间接实现日志的清理,但这通常是在非常特殊的情况下使用,不建议经常性地手动切换日志。
3. 使用日志清理工具,Oracle数据库提供了一些工具和脚本
来帮助管理和清理日志文件,比如可以使用
DBMS_LOGMNR.CLEAN_LOG等存储过程来清理归档日志。
4. 定期备份和恢复,定期备份数据库是非常重要的,备份过程中可以清理不再需要的日志文件,同时在恢复过程中也可以进行日志的清理。
需要注意的是,在进行日志清理时,一定要确保不会影响数据库的正常运行和数据的完整性,建议在清理日志之前先做好备份工作,并且在清理过程中要小心谨慎,避免删除错误的日志文件。
另外,清理日志时要遵循数据库管理的最佳实践和安全规范。
Oracle 指定分析的日志文件
![Oracle 指定分析的日志文件](https://img.taocdn.com/s3/m/28ba3742852458fb770b567f.png)
Oracle 指定分析的日志文件在使用LogMiner进行日志分析之前,必须指定它将对哪些重做日志文件进行分析。
LogMiner可以一次对多个重做日志文件进行分析。
执行DBMS_LOGMNR.ADD_LOGFILE过程可以指定要分析的重做日志文件。
利用这个过程可以依次添加多个重做日志文件,或删除已经添加的重做日志文件。
下面是指定重做日志文件列表的具体操作步骤:(1)确保数据库实例已经启动(STARTUP)。
(2)创建重做日志文件列表。
通过指定DBMS_LOGMNR.ADD_LOGFILE过程的NEW选项来创建重做日志文件的列表。
例如,利用下面的语句建立一个重做日志文件列表,并向其中添加一个重做日志文件:SQL> executedbms_logmnr.add_logfile(logfilename=>'d:\app\user\oradata\orcl\redo01a.log',options=>dbms_logmnr.new);(3)根据需要,使用ADDFILE选项继续向列表中添加其他的重作日志文件。
比如,利用下面的语句向列表中添加重做日志文件:execute dbms_logmnr.add_logfile(logfilename=>'d:\app\user\oradata\orcl\redo02a.log',options=>dbms_logmnr.addfile);(4)如果需要,还可以通过指定DBMS_LOGMNR.ADD_LOGFILE过程的REMOVEFILE选项来删除重做日志文件。
例如,利用下面的语句可以将重做日志文件REDO02A.LOG从日志文件列表中删除:execute dbms_logmnr.add_logfile(logfilename=>'d:\app\user\oradata\orcl\redo02a.log',options=>dbms_logmnr.removefile);DBMS_LOGMNR.ADD_LOGFILE过程的OPTIONS各选项表示如下:●NEW 表示创建一个新的日志文件列表●ADDFILE 表示向列表中添加日志文件●REMOVEFILE 与ADDFILE相反,在列表中删除日志文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle 删除重做日志
当日志成员出现损坏或丢失时,后台进程LGWR不能将事务变化写入到该日志成员中,在这种情况下应该删除该日志成员;当日志组尺寸不合适时,需要重新建立新日志组,并删除原有的日志组。
删除重做日志是使用ALTER DATABASE语句来完成的,执行该语句要求数据库用户必须具有ALTER DATABASE系统权限。
1.删除日志成员
要删除一个成员日志文件,只需要使用带DROP LOGFILE MEMBER子句的ALTER DA TABASE语句。
例如,下面的语句将删除4号日志组的第2个成员:
SQL> alter database drop logfile member
2 'e:\oradata\orcl\redo04b.log';
数据库已更改。
上面语句只是在数据字典和控制文件中将重做日志成员的信息删除,并不会在操作系统中物理地删除相应的文件,这需要确认删除成功后手工在操作系统中删除文件。
2.删除日志组
由于已经存在日志组的尺寸不能改变,所以当日志组尺寸不合适时,就需要重新建立日志组并指定合适尺寸,然后删除不符合尺寸要求的日志组。
在删除一个日志组时,其中的成员文件也将全部被删除。
在删除日志组时,首先需要考虑如下几点:
●无论日志组中有多少个成员,一个数据库至少需要两个日志组。
●只能删除处于INACTIVE状态的日志组。
如果要删除CURRENT状态的重做日志
组,则必须执行一个手工切换日志,将它切换到INACTIVE状态。
●如果数据库处于归档模式下,在删除重做日志组之前必须确定它已经被归档。
因此,在删除重做日志组之前,可以查询V$LOG动态性能视图来获知各个重做日志组的状态以及它是否已经归档。
例如:
SQL> select group#,archived,status from v$log;
GROUP# ARC STATUS
---------- --- ----------------
1 NO CURRENT
2 NO INACTIVE
3 NO INACTIVE
4 YES UNUSED
要删除一个重做日志组,需要使用带有DROP LOGFILE子句的ALTER DATABASE语句。
例如,下面的语句可以删除4号重做日志组:
SQL> alter database drop logfile group 4;
同样,该语句只是在数据字典和控制文件中将重做日志组的记录信息删除,并不会物理地删除操作系统中相应的文件,这需要手工在操作系统中将相应的文件删除。
3.清空重做日志组
清空重做日志文件就是将重做日志文件中的内空全部初始化,这相当于删除该重做日志文件,然后再重新建立它。
即使数据库只拥有两个重做日志组,或者要清空的重做日志组正处理CURRENT状态,在这些状态下都可以成功执行清空操作。
要清空一个重做日志组,需要使用带有CLEAR LOGFILE 子句的ALTER DATABASE 语句。
例如,下面的语句将清空3号重做日志组:
SQL> alter database clear logfile group 3;
数据库已更改。
如果要清空的重做日志组尚未归档,则必须在ALTER DA TABASE 语句中指定UNARCHIVED 子句,例如:
SQL> alter database clear unarchived logfile group 3;
数据库已更改。
注 意
如果被清空的重做日志组没有被归档,则有可能造成数据丢失。