当我们磁盘空间有限,归档日志开启的时候,会产生大量日志信息,磁盘耗尽,导致数据库故障,这时候我们tab路径/文件都不能使用,这时候我们可以清理就近的日志文件
find 命令可以完成这一需求,比如删除3天前的所有以“.log”结尾的文件:

find /文件路径 -name “*.log” -mtime +2 -exec rm {} ;
说明:

  1. 文件路径是目标文件所在路径;
  2. -name 设定目标文件名,建议采用,否则可能误删其他文件;
  3. -ctime 文件最后一次修改时间,后面只能用整数,单位为天,同时,还有atime,mtime,amin,cmin,mmin等时间参数可选,具体请查看帮助;
  4. 时间说明如下图(随手画的,大概是这个意思),所以删除三天前的文件要用+2
  5. -exec 表示需要执行的命令,{}代表find找到的内容,";“是固定写法表示结束-exec,
    所以例子的”-exec rm {} ;" 就表示对find找到的符合条件的文件执行删除操作

1、清理trc和trm文件

linux按指定时间删除

find /orc/app/oracle/diag/rdbms/orcl/orcl/trace -name "*.trm" -mtime +2 -exec rm {} \;
cd /**/app/oracle/diag/rdbms/orcl/orcl/alert
 rm log_*.xml

以上操作虽然可以删除,但是实际查看磁盘空间,依然没有变化,主要原因是采用了物理删除,应该使用逻辑删除,使用rman工具删除,

使用rman删除Archivelog

步骤如下,以下为全部删除,谨慎操作

1、进入RMAN (rman target sys/***@orcl)
2、crosscheck archivelog all;
3、delete expried archivelog all;

2、RMAN工具

先备份,再删除

这是一种最为稳妥的方法了,使用RMAN备份archivelog,备份后全部删除
backup format ‘/u01/arch_%T_%s_%U’ archivelog all delete input;
或者 backup database plus archivelog;
更多参考:Oracle RMAN 清除归档日志

小结

a、归档日志清除的方法最好是在RMAN方式下完成,这样子是最彻底的清除方式
b、对于生产环境应考虑在RMAN备份的时候清除归档日志,如backup archivelog all时使用delete input与delete all input清除归档日志
c、如果备份期间不清除归档日志则arch会很大,造成归档磁盘满而导致归档失败。建议还是删除或考虑存放到闪回区
d、如果清除大部分又想保留最近的,则使用delete noprompt archivelog all completed before 'sysdate - n’方式
e、详细的清除归档日志语法:
更多参考:归档日志语法

查看归档

日志占用空间

SELECT space_limit/1024/1024/1024 AS "Quota_G",space_used/1024/1024 AS "Used_M",space_used/space_limit*100 "Used_%",space_reclaimable AS reclaimable,number_of_files AS files FROM v$recovery_file_dest ;

查看当前归档模式

SQL>archive log list;

开启/关闭archivelog

SQL>shutdown immediate 
SQL>startup mount 
SQL>alter database archivelog;  //(alter database noarchivelog;) 
SQL>alter database open;

清理resin日志 清理日志文件命令_hive


清理resin日志 清理日志文件命令_清理resin日志_02


清理resin日志 清理日志文件命令_hive_03

表空间

1、查询当前用户所有表名及其所属表空间

select table_name 表名 ,tablespace_name 所使用表空间 from user_tables;

2、查看每个表空间的大小

select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name

3、查看剩余表空间大小

SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name;

4、 所有表空间的使用情况:

SELECT F.TABLESPACE_NAME,
       (T.TOTAL_SPACE - F.FREE_SPACE) / 1024 "USED (GB)",
       F.FREE_SPACE / 1024 "FREE (GB)",
       T.TOTAL_SPACE / 1024 "TOTAL(GB)",
       (ROUND((F.FREE_SPACE / T.TOTAL_SPACE) * 100)) || '% ' PER_FREE
  FROM (SELECT TABLESPACE_NAME,
               ROUND(SUM(BLOCKS *
                         (SELECT VALUE / 1024
                            FROM V$PARAMETER
                           WHERE NAME = 'db_block_size') / 1024)) FREE_SPACE
          FROM CDB_FREE_SPACE
         GROUP BY TABLESPACE_NAME) F,
       (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES / 1048576)) TOTAL_SPACE
          FROM CDB_DATA_FILES
         GROUP BY TABLESPACE_NAME) T
 WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME;

5、 筛选条件查看指定表空间(USERS)的使用情况

SELECT --B.file_name "文件名",
       A.TABLESPACE_NAME "表空间名",
       TOTAL "表空间大小",
       FREE "表空间剩余大小",
       (TOTAL - FREE) "表空间使用大小",
       TOTAL / (1024 * 1024 * 1024) "表空间大小(G)",
       FREE / (1024 * 1024 * 1024) "表空间剩余大小(G)",
       (TOTAL - FREE) / (1024 * 1024 * 1024) "表空间使用大小(G)",
       ROUND((TOTAL - FREE) / TOTAL, 4) * 100 "使用率 %"
FROM   (SELECT TABLESPACE_NAME,
               SUM(BYTES) FREE
        FROM   DBA_FREE_SPACE
        GROUP  BY TABLESPACE_NAME) A,
       (SELECT TABLESPACE_NAME,
             --  file_name,
               SUM(BYTES) TOTAL
        FROM   DBA_DATA_FILES
        GROUP  BY TABLESPACE_NAME/*,file_name*/) B
WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME AND B. TABLESPACE_NAME LIKE 'USERS' ;

清理resin日志 清理日志文件命令_hive_04

安装注意

用户名密码过期

创建用户时缺省密码过期限制是180天(即6个月), 如果超过180天用户密码未做修改则该用户无法登录。 提示ORA-28001: 口令已经失效

sqlplus / as sysdba
alter user c##xjcx identified by xjcx account unlock;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;