闪回区满的处置方法

1、alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;

1.关闭数据库
SQL> shutdown immediate;
2.启动数据库为mount模式
SQL> startup mount
3.显示和修改归档模式
SQL> archive log list
SQL> alter database archivelog;
SQL> alter database open
4.设置归档日志的格式
SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile;
5.设置归档日志的存放路径
SQL>alter system set log_archive_dest='+data/arcl' scope=spfile;
SQL>shutdown immediate
SQL>startup
6.强制切换归档日至
SQL>alter system switch logfile;
7.取消归档
SQL>alter database noarchivelog;
 
参数
1.格式参数
%s 日志序列号
%S 日志序列号(带前导的0)
%t 重做线程编号
%a 活动的ID号
%d 数据库ID号
%r RESELOGS的iD值

SQL> archive log list;
Database log mode                           Archive Mode


1.将归档设置到其他目录,修改alter system set log_archive_dest = 其他路径

2.转移或者删除闪回恢复区里的归档日志。

3.增大闪回恢复区。ALTER SYSTEM SET db_recovery_file_dest_size=3g

4.另外,如果要撤销闪回恢复区,把初始化参数 DB_RECOVERY_FILE_DEST 的值清空即可

先做准备工作,首先备份初始化文件:
create pfile='d:\initmhk.ora' from spfile;
然后将数据库文件通过拷贝至另外一个目录。
然后开始进行修改。

因为那边是生产环境,在确保环境不发生意外的情况下,选择暂时增加闪回区,那边闪回区目前是64g,改为65g

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> shutdown immediate;
ORA-01012: not logged on
SQL> create pfile='initmhk.ora' from spfile;

文件已创建。

SQL> create pfile='d:\initmhk.ora' from spfile;

文件已创建。

SQL> show parameter recov
ORA-01034: ORACLE not available


SQL> startup;
ORACLE 例程已经启动。

Total System Global Area   171966464 bytes
Fixed Size                                     787988 bytes
Variable Size                         145488364 bytes
Database Buffers                     25165824 bytes
Redo Buffers                                 524288 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter recov

NAME                                                                 TYPE               VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                               string           D:\oracle\product\10.1.0\flash
                                                                                                 _recovery_area
db_recovery_file_dest_size                     big integer 3G
recovery_parallelism                                 integer         0
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area   171966464 bytes
Fixed Size                                     787988 bytes
Variable Size                         145488364 bytes
Database Buffers                     25165824 bytes
Redo Buffers                                 524288 bytes
数据库装载完毕。
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=65g;

系统已更改。
SQL> alter database open;

数据库已更改。

SQL> select reason,object_type,suggested_action from dba_outstanding_alerts;

未选定行

SQL>
Automatic archival                         Enabled
Archive destination                       USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence         156
Next log sequence to archive     158
Current log sequence                     158

然后,启动数据库到mount状态
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup mount
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size                                   1218992 bytes
Variable Size                           75499088 bytes
Database Buffers                   205520896 bytes
Redo Buffers                               2973696 bytes
Database mounted.

SQL>alter database flashback on;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL>selectFLASHBACK_ONfrom v$database;
FLASHBACK_ON
------------------------------------
YES

3.取消闪回恢复区
将db_recovery_file_dest参数设置为空,可以停用闪回恢复区。
如果已经启用flashback database,则不能取消闪回恢复区。
SQL> alter system set db_recovery_file_dest='';
alter system set db_recovery_file_dest=''
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-38775: 无法禁用快速恢复区 - 闪回数据库已启用

所以,必须先禁用flashback database,才能取消闪回恢复区

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

SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 142606336 bytes
Fixed Size 1247732 bytes
Variable Size 83887628 bytes
Database Buffers 50331648 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。

SQL>alter database flashback off;
数据库已更改。

SQL> alter database open;
数据库已更改。

SQL> alter system set db_recovery_file_dest='';
系统已更改。

4.闪回恢复区的内容
所有和恢复相关的文件都可以存放到闪回恢复区
SQL>select file_type from v$flash_recovery_area_usage;
FILE_TYPE
------------------------
CONTROLFILE
ONLINELOG
ARCHIVELOG
BACKUPPIECE
IMAGECOPY
FLASHBACKLOG
已选择6行。

上面的视图中可以看出,包括controfile,online redo logfile,archive logfile,rman backup
piece,rman image copy, flashback log等,都可以利用闪回恢复区来存放、管理。

5.闪回恢复区的一些限制
如果设置了闪回恢复区,则log_archive_dest和log_archive_duplex_dest将不可用

alter system set log_archive_dest='e:/'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用

SQL> alter system set log_archive_duplex_dest='e:/';
alter system set log_archive_duplex_dest='e:/'
*
第 1 行出现错误:
ORA-02097: 无法修改参数, 因为指定的值无效
ORA-16018: 无法将 LOG_ARCHIVE_DUPLEX_DEST 与 LOG_ARCHIVE_DEST_n 或
DB_RECOVERY_FILE_DEST 一起使用

设置闪回恢复区后,如果没有设置过log_archive_dest_n参数,则归档日志默认是保存到该区域的

SQL> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列 245
下一个存档日志序列 247
当前日志序列 247

实际上,oracle是通过隐式的设置log_archive_dest_10='location= USE_DB_RECOVERY_FILE_DEST'来实现的。所以,如果之后你修改过log_archive_dest_n将归档日志保存到其他位置,也可以修改该参数继续使用闪回恢复区。

多个数据库的闪回恢复区可以指定到同一个位置,但是db_name不能一样,或者db_unique_name不一样。

RAC的闪回恢复区必须位于共享磁盘上,能被所有实例访问。

6.闪回恢复区的空间管理
当闪回恢复区空间不足(使用超过85%)时,alert中会有警告记录
Tue Dec 19 10:45:41 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_rvwr_31968.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 87.29%, 尚有6665216 字节可用。

同时,oracle在alert中还会给出解决该问题的建议
Tue Dec 19 10:45:41 2006
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************

如果闪回恢复区空间耗尽,且归档路径设置到了闪回恢复区中,则由于日志无法归档,数据库会hang住。

Tue Dec 19 10:45:57 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 52428800 字节) 已使用 100.00%, 尚有 0 字节可用。

Tue Dec 19 10:45:57 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 6836224 字节磁盘空间 (从 52428800 限制中)

ARC0: Error 19809 Creating archive log file to
'E:/ORACLE/ORA10/FLASH_RECOVERY_AREA/NING/ARCHIVELOG/2006_12_19/O1_MF_1_250_U_.ARC'
ARC0: Failed to archive thread 1 sequence 250 (19809)
ARCH: Archival stopped, error occurred. Will continue retrying
Tue Dec 19 10:45:58 2006
Errors in file e:/oracle/ora10/admin/ning/bdump/ning_arc0_32372.trc:
ORA-16038: 日志 1 序列号 250 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 1 线程 1: 'E:/ORACLE/ORA10/ORADATA/NING/REDO01.LOG'

所以,对于生产库,如果将归档放到闪回恢复区中,需要密切关注闪回恢复区的空间使用情况,否则一旦闪回恢复区的空间用尽,将导致数据库无法提供服务。

通过查询视图v$flash_recovery_area_usage,可以获得当前闪回恢复区的空间使用情况,并且可以知道
是哪些文件占中了空间,据此可以做出相应的处理,或者加大闪回恢复区,或者移走相应的文件。
PHP code:--------------------------------------------------------------------------------
SQL> select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------------------ ------------------ ------------------------- ---------------
CONTROLFILE                               0                                               0                           0
ONLINELOG                                       0                                               0                             0
ARCHIVELOG                               91                                               0                         16
BACKUPPIECE                             0                                                 0                           0
IMAGECOPY                                     0                                                 0                             0
FLASHBACKLOG                         8                                               4                           2
已选择6行。
----------------------------------------------------------------------------------
另外,v$recovery_file_dest视图也提供了闪回恢复区的概要信息。
SQL> select * from v$recovery_file_dest;
NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------------------------------- ----------- ---------- ----------------- ---------------
Eracleora10flash_recovery_area 104857600 101835264 0 17

原文地址:http://www.ixdba.net/hbcms/article/2b/188.html

            

数据库现在用的是spfile参数,并且归档格式为:
SQL> show parameter log_archive

NAME                                                                 TYPE               value
------------------------------------ ----------- ------------------------------
log_archive_dest                                         string           /opt/oracle/product/9.2.0/dbs/arch

现在想修改归档路径为多路径模式,也就是要使用log_archive_dest_n,那么该怎么操作?

解释如下:

1:首先查看oracle的版本,oracle标准版不支持standby database,如果设了log_archive_dest_n,就意味着有可能使用standby database,所以前提是你的数据库要是企业版本。
IXDBA.NET社区论坛

2:     oracle中log_archive_dest_n和log_archive_dest不能共存,也就是只能使用其一,
如果同时使用,会报错如下信息:

ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

     log_archive_dest_n可以设置10个归档路径,也就是n可以是1-10,接下来要作的是去除db现在的log_archive_dest参数设置,可以执行如下命令清除:
    
     SQL> alter system reset log_archive_dest scope=spfile sid='*';

     也可以这样操作:

     SQL> alter system set log_archive_dest='' scope=spfile;

     然后重新启动数据库。

  3: 执行命令:

  SQL> alter system set log_archive_dest_n="location=F:\oracle\product\10.2.0\db_1
           \database\arch" scope=spfile;

     n可以是1-10,最多可以设置10个归档路径。

  4:重新启动数据库,使设置生效。
       查看设置信息:

SQL> show parameter log_archive

NAME                                                                 TYPE               value
------------------------------------ ----------- ------------------------------
log_archive_config                                     string
log_archive_dest                                         string
log_archive_dest_1                                     string           location=F:\oracle\product\10.
                                                                                                 2.0\db_1\database\archive

log_archive_dest_10                                   string
log_archive_dest_2                                     string           location=F:\oracle\product\10.
                                                                                                 2.0\db_1\database\arch

看到设置已经生效了。

 


原文地址:http://space.itpub.net/13804621/viewspace-351808


〖环境(Environment)〗

OS:LINUX

DB:ORACLE10G

 

以普通用户登录数据库时,报告错误:ORA-00257 : archiver error. Connect internal only, until freed。

用ALTER SYSTEM ARCHIVE LOG CURRENT执行手工归档也不行。

〖原理(Cause)     〗

Step01:用ps -ef|grep oracle查看归档进程,归档进程运行正常。

oracle   524       1 1 15:50:30               0:14 ora_arc0_nbo

oracle   518       1 0 15:50:23               0:01 ora_arc1_nbo

。。。

 

Step02:查看归档路径。

SQL> show parameter LOG_ARCHIVE_DEST_

 

NAME                                                               TYPE             VALUE

------------------------------------ ----------- ----------------

log_archive_dest_1                                   string

log_archive_dest_10                                 string

log_archive_dest_2                                   string

log_archive_dest_3                                   string

log_archive_dest_4                                   string

log_archive_dest_5                                   string

log_archive_dest_6                                   string

log_archive_dest_7                                   string

log_archive_dest_8                                   string

log_archive_dest_9                                   string

log_archive_dest_state_1                       string         enable

。。。

从数据可以看出,归档路径LOG_ARCHIVE_DEST_n为空,没有设置归档路径。如果没有设置归档路径的时候,ORALCE默认会把归档文件(archived logs)放到闪回区(Flash Recovery Area)。

 

Step03:得到闪回区(flash recovery area)的路径。

SQL> show parameter DB_RECOVERY_FILE_DEST

 

NAME                                                       TYPE             VALUE

------------------------------------ ----------- --------------------------

db_recovery_file_dest                             string         /wxxrdata/flash_recovery_area

闪回区(flash recovery area)的路径是/wxxrdata/flash_recovery_area。

 

Step04:查看闪回区(Flash Recovery Area)的使用情况。

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

 

FILE_TYPE     PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

------------ ------------------ ------------------------- ---------------

CONTROLFILE                                   0                                               0                           0

ONLINELOG                                       0                                               0                           0

ARCHIVELOG                               74.05                                             0                         31

BACKUPPIECE                             10.95                                             0                           8

IMAGECOPY                                   15                                             0                         66

FLASHBACKLOG                                 0                                               0                           0

 

从查询结果可以看出,在闪回区中,归档日志(ARCHIVELOG)占用74.05%的空间,备份(BACKUPPIECE)占用10.95%的空间,文件拷贝(IMAGECOPY)占用15%的空间。闪回区中已经没有空余的磁盘空间。

 

〖方法(Action)     〗

         方法一:重新指定归档路径。

●如果使用SPFILE启动数据库,则可以动态改变归档路径。

SQL>alter system set log_archive_dest_1='location=/proddata' scope=both;

这里指定一个新的归档路径。

 

●如果使用PFILE启动数据库,则需要执行下面的过程。

Step01:进入初始化参数文件所在的目录

$ cd $ORACLE_HOME/dbs(这是默认路径)

本例中的PFILE是initnbo.ora。

 

Step02:编辑初始化参数文件

$vi initnbo.ora

添加参数:

log_archive_dest_1='location=/proddata'。

这里指定一个新的归档路径,这个路径要有足够的空间。

 

Step03:关闭数据库

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

Step04:重启数据库。

SQL> startup PFILE='/oracle/app/oracle/product/10.1.0/Db_1/dbs/initnbo.ora';

ORACLE instance started.

Total System Global Area 289406976 bytes

Fixed Size                                 1248600 bytes

Variable Size                       100663976 bytes

Database Buffers                 184549376 bytes

Redo Buffers                             2945024 bytes

Database mounted.

Database opened.

从此以后,数据库的归档日志将被写到/proddata下。

 

         方法二:增加闪回区(Flash Recovery Area)的大小。

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE =20GSCOPE=BOTH SID='*';

System altered.

闪回区的大小被提到20G。

 

         方法三:删除闪回区(Flash Recovery Area)中多余的归档日志文件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29012354/viewspace-765651/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29012354/viewspace-765651/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值