1、sqlplus 链接数据库
查看归档日志 select * from v$recovery_file_dest;
2、show parameter db_recovery
3、quit;
如下:
C:\WINDOWS\system32>sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on 星期日 8 月 14 22:30:16 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
请输入用户名: ppz
输入口令:
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> show parameter db_recover;
NAME TYPE VALUE
db_recovery_file_dest string D:\app\panzhengpeng\flash_reco
very_area
db_recovery_file_dest_size big integer 3912M
4.指定数据库实例 C:\WINDOWS\system32>set ORACLE_SID=ORCL
5、rman target sys/ppz2323;
6、list archivelog all;看到归档日志路径后也可以手工到磁盘目录下删除
7、crosscheck archivelog all;查看已经失效的归档日志
8、delete expired archivelog all;删除已经失效的日志文件或无法删除可强制删除 delete force expired archivelog all;或删除 7 天前的归档日志 delete archivelog all completed before 'sysdate-7';
9、exit;
其实只需要几步 4、5、6、8、9
当 ORACLE 归档日志满了后,将无法正常登入 ORACLE,需要删除一部分归档日志才能正常登入 ORACLE。
一、首先删除归档日志物理文件,归档日志一般都是位于 archive 目录下,AIX 系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。
二、把归档日志的物理文件删除后,我们就可以正常登入 ORACLE 了,但是还没完全把归档日志删除干净,ORACLE 的 controlfile 中仍然记录着这些 archivelog 的信息,在 oracle 的 OEM 管理器中有可视化的日志展现出,当我们手工清除 archive 目录下的文件后,这些记录并没有被我们从 controlfile 中清除掉,接下去我们要做的就是这个工作。
我们利用 RMAN 进行删除操作,操作步骤如下:(window 客户端系统为例)
1.指定数据库实例
C:\WINDOWS\system32>set ORACLE_SID=ORCL
2.连接数据库
C:\WINDOWS\system32>rman target sys/ppz2323
恢复管理器: Release 11.2.0.1.0 - Production on 星期日 8 月 14 22:23:43 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
连接到目标数据库: ORCL (DBID=1447659244)
3.查看归档日志的状态
RMAN> list archivelog all;
4.手工删除归档日志文件
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
说明:
SYSDATA-7,表明当前的系统时间 7 天前,before 关键字表示在 7 天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。
同样道理,也可以删除从 7 天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库
DELETE ARCHIVELOG from TIME 'SYSDATE-7'; 删除从 7 天前到现在的全部日志,慎用
UNIX/LINUX 下也可以通过 FIND 找到 7 天前的归档数据,使用 EXEC 子操作删除
find /oraarchive -xdev -mtime +7 -name "*.dbf" -exec rm -f {} ;
这样做仍然会在 RMAN 里留下未管理的归档文件
仍需要在 RMAN 里执行下面 2 条命令
crosscheck archivelog all;
delete expired archivelog all;
所以还不如上面的方法好用,不过用 FIND 的好处就是,可以在条件上,和 EXEC 子项上做很多操作,实现更复杂的功能
5.退出 rman
RMAN> exit
附带说明:RMAN 是 Oracle 数据库软件自带的备份恢复工具,一种是类似于 DOS,通过键盘操作的 命令行方式。
通过 RMAN 连接本地数据库非常简单,以 W indows 平台为例,进入到命令提示符界面:
C:/Documents and Settings/junsansi> SET ORACLE_SID =jssbook
C:/Documents and Settings/junsansi> RMAN TARGET /
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:17 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: JSSBOOK (DBID=1415261003)
RMAN>
如上所示,使用 RMAN 连接本地数据库之前必须首先设置操作系统环境变量:ORACLE_SID,并指定该值等于目标数据库的实例名。如果本地库只有一个实例并已经设置了 ORACLE_SID 环境变量,则不需要再指定 ORACLE_SID。RMAN 会自动连接到默认实例。
当然,你也可以先启动 RMAN,然后再通过 CONNECT 命令来连接目标数据库,如下所示:
C:/Documents and Settings/junsansi> RMAN
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 21:12:36 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target /或 RMAN> connect target sys/ppz2323
connected to target database: JSSBOOK (DBID=1415261003)
本地连接允许使用操作系统验证,因此上述示例都不需要输入用户名和密码,不过如果本地没有启用操作系统身份验证的话,就必须指定具有相应权限的用户名和密码。
需要注意,Linux/UNIX 环境下设置操作系统环境变量应使用 export 命令,另外 ORACLE_SID 必须为大写。例如:
[oracle@yans1 ~ ]$ export ORACLE_SID=test08
[oracle@yans1 ~ ]$ rman target /
Recovery Manager: Release 10.2.0.3.0 - Production on Tue Mar 17 16:08:32 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: TEST08 (DBID=3812548755)
RMAN>
连接远程数据库
如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名(Net Service Name),本地的 tnsname.ora 文件中必须已经建立了该网络服务名的正确配置。连接示例如下:
C:/Documents and Settings/junsansi> RMAN TARGET SYS/CHANGE_ON_INSTALL@TESTDB
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Mar 17 16:12:32 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
connected to target database: TESTDB (DBID=2220262593)
RMAN>
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于