zoukankan      html  css  js  c++  java
  • Oracle清理回收站的方法

    原文链接:http://blog.itpub.net/18841027/viewspace-1057765/

    purge DBA_RECYCLEBIN用于删除Oracle数据库回收站的所有数据,需要sys登录执行。

    [@more@]

    -bash-3.00# su - oracle

    [oracle@rpt]$ sqlplus / as sysdba

    SQL*Plus: Release 10.2.0.1.0 - Production on Thu Mar 29 12:00:25 2012

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    Connected to:

    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

    With the Partitioning, OLAP and Data Mining options

    sys@rpt> SELECT count(*) FROM dba_recyclebin;

    COUNT(*)

    ----------

    13545

    sys@rpt> purge DBA_RECYCLEBIN;

    DBA Recyclebin purged.

    sys@rpt>


    ****************************************华丽的分隔线******************************************

    Oracle 11g 回收站(recyclebin)的使用

    原文链接:http://www.linuxidc.com/Linux/2011-09/43916.htm


    Flashback是以undo segment中的内容为基础的,因此受限于undo_retenton参数,要使用flashback的特征,必须启动自动撤销表空间。

    Oracle11g中,出现了一个新的特征,oracle flashback data archive(FDA),通过将变化的数据另外存储到创建的一个闪回归档去(flashback archive),以和undo区别开,这样可以单独设置存储策略,使其可以山回到指定时间之前的旧数据而不影响undo策略。  在Oracle 11g中,recyclebin参数发生了微小的变化.

    This supported parameter was introduced in Oracle 10.2.0

    Version

    Parameter Name

    Data Type

    Session Modifiable

    System Modifiable

    10.2.0

    recyclebin

    String

    TRUE

    IMMEDIATE

    11.1.0

    recyclebin

    String

    TRUE

    DEFERRED

    从文档上我们可以看到这个变化说明,到了11g中,这个参数在session依然可以立即修改并影响当前的session,但如果是在系统一级修改的话,那么就要加deferred参数,对当前已经连接的sesion没有影响,但新连接的session将受到影响

    Flashback不支持sys用户,system表空间下面的对象,也不能从回收站里拿到。故使用sys或是system用户登录时,show recyclebin为空。

    启动闪回数据库的步骤:

    1,  开启归档模式:alter database archivelog;

    2,  配置闪回区:alter system set db_recovery_file_dest=’/../’

    3,  配置闪回保留时间,默认是1440minutes:alter system set db_flashback_retention_target=’2880’;

    4,  启动闪回数据库:shutdown immediate;startup mount

    Alter database flashback on/off;

    5,  执行闪回操作:shutdown immediate;startup mount;

    Flashback database to timestamp to_date(‘2001-02-03’,’yyyy-mm-dd hh24:mi:ss’);

    或是:flashback database to scn 2323534;

    Alter database open ready only;检查闪回时刻是否是所需的数据,如果不是,可以继续修改。

    检查完毕之后:shutdown immediate;startup mount; alter database open resetlogs;resetlogs是将control file中的scn#与数据文件中的scn#同步,消除时间间隔。

    V$flashback_database_log视图,可以查看闪回日志所占的空间,最早能闪回到的scn,最早能闪回到的时间点

    7,查看回收站:show recyclebin; 或是select * from sys.recyclebin$查       所有的回收站。

    8,恢复被删除的表:flashback table t_name to before drop;如果闪回的表名与当前的表名相同,需要重命名才可以闪回

    Flashback table t_name to before drop rename to t_new;

    9,闪回指定的表

    查看表结构:desc “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;

    查看表的记录:select count(*) from “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0”;

    安装表名称恢复:flashback table “BIN$qrjyuHuVotHgQAB/AQAQ3w==$0” to before drop;

    越过回收站直接删除:drop table t purge;drop user cascade; drop tablespace users including contents;

    清空回收站:purge index idx_1; purge user_recyclebin; purge dba_recyclebin;

    当设置db_recovery_file_dest为空的时候,也可以取消闪回区,如果已经启用flashback database;则这个方法不能取消。

    查看当前的scn:select current_scn from v$database;

     查看哪些对象可以利用闪回恢复区来存放:   

    SQL> select file_type from v$flash_recovery_area_usage;

     

    FILE_TYPE

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

    CONTROL FILE

    REDO LOG

    ARCHIVED LOG

    BACKUP PIECE

    IMAGE COPY

    FLASHBACK LOG

    FOREIGN ARCHIVED LOG

     

    7 rows selected.

     

    查看闪回恢复区空间的使用情况:

    SQL> select * from v$flash_recovery_area_usage;

     

    FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

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

    NUMBER_OF_FILES

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

    CONTROL FILE                          0                         0

                  0

     

    REDO LOG                              0                         0

                  0

     

    ARCHIVED LOG                          0                         0

                  0

     

     

    FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

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

    NUMBER_OF_FILES

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

    BACKUP PIECE                          0                         0

                  0

     

    IMAGE COPY                            0                         0

                  0

     

    FLASHBACK LOG                         0                         0

                  0

     

     

    FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

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

    NUMBER_OF_FILES

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

    FOREIGN ARCHIVED LOG                  0                         0

                  0

     

     

    7 rows selected.

    计算flash recovery area已经占用的空间:

     

    SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

     

    SUM(PERCENT_SPACE_USED)*3/100

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

                                0

    如果flash recovery area空间不足导致db不能打开或是hang住的处理方法

    Alter system set db_recovery_file_dest_size=3G scope=spfiel;



  • 相关阅读:
    NC学习笔记
    NC开发笔记指导
    进度条Demo
    指点
    NC二次开发常用的方法
    java PDF2JPG
    IO笔记
    java Utils
    Lambda 笔记
    gradle记录
  • 原文地址:https://www.cnblogs.com/wenlong/p/4753346.html
Copyright © 2011-2022 走看看