AI智能
改变未来

Oracle关闭开启删除归档日志

运维打来电话说准生产环境的/u01磁盘空间占用达到100%,经排查是/u01/arch1和/u01/arch2目录下的数据量过大,这个目录下都是以.arc结尾的文件,这些文件是oracle的归档文件。想到最近oracle用来入库数据比较频繁,并且归档日志是开启的状态,所以才会出现这样的情况。随后我在准生产环境将oracle归档日志删除并关闭,下面整理了有关删除、开启\\关闭oracle归档日志的详细步骤供大家参考,有什么问题欢迎指正,谢谢!

删除归档日志

因归档日志占用大量的磁盘空间,所以我们要对归档日志进行清理,直接rm- rf 删除的话肯定会引起各种意想不到的问题,所以我们千万不要直接删除,一定要使用正确步骤去删除,否则空间显示不会被释放。

1.使用oracle用户登录服务器或su oracle 并确保能使用sqlplus 、 rman :

# ssh oracle@ip

2.登录成功后,使用cd 进入根目录,输入 ”rman“ 命令,如下:

# cd 

# rman

3.以target连接oracle ,输入 “connect  target sys/” ,并输入密码,如下:

# RMAN> connect tartget sys/ 

4.检查一些无用的archivelog,输入“crosscheck archivelog all;”,如下:

# RMAN> crosscheck archivelog all;

5.1删除过期的归档日志数据,输入“delete expired archivelog all;”,如下:

# RMAN> delete expired archivelog all;

5.2删除一周以前的归档日志数据,输入\”delete archivelog all completed before \’sysdate-7\’;\”,以此类推,可以删除n天之前的数据,如下:

# RMAN> delete archivelog all completed before \’sysdate-7\’;

5.3删除截止到前一天的所有归档日志数据,输入“delete archivelog until time \’sysdate-1\’;”,以此类推,可以删除n天/n小时之前的数据,如下是删除1小时以前的数据:

# RMAN> delete archivelog until time \’sysdate-1/24\’;

6.查询flash recovery area 的使用情况,可以看见archivelog使用情况,输入命令\”select * from V$flash_recovery_area_usage;\”,如下:

# RMAN> select * from V$flash_recovery_area_usage;

开启、关闭归档日志

1.使用oracle用户登录服务器或su oracle 并确保能使用sqlplus :

# ssh oracle@ip

2.停止数据库监听(在命令行直接输入不必进入sqlplus),输入“lsnrctl stop”,此处如果被忽略可能会造成数据库停止时无法全部正常停止,如下:

# lsnrctl stop

3.以管理员身份连接oracle,输入“sqlplus / as sysdba”,如下:

# sqlplus / as sysdba

4.查看当前归档模式,是开启还是关闭状态,输入\”archive log list;\”,Automatic archival = Disabled 是关闭状态,Automatic archival = Enabled是开启状态,如下:

# SQL> archive log list;

5.关闭数据库,输入\”shutdomn immediate;\”(注意这里停止会很慢,可能会卡住,如果卡住会导致后续操作时出现“ORA-01012 not logged”错误),如下是正常关闭后出现的提示:

# SQL> shutdomn immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

6.启动数据库到mount状态,输入“ startup mount; ”(如果出现ORA-01012 not logged on错误,请参考下面的解决办法)如下:

# SQL> startup mount;

ORACLE instance started.

7.1启动归档模式,输入“ alter database archivelog; ”,如下:

# SQL> alter database archivelog;

Database altered.

7.2关闭归档模式,输入“ alter database noarchivelog; ”,如下:

# SQL> alter database noarchivelog;

Database altered.

8.再次查看当前归档模式,是开启还是关闭状态,输入\”archive log list;\”,Automatic archival = Disabled 是关闭状态,Automatic archival = Enabled是开启状态,如下:

# SQL> archive log list;

9.启动数据库,输入\” alter database open; \”,如下:

# SQL> alter database open;

Database altered.

\”ORA-01012 not logged on\” 错误解决看这里

因为我们在 shutdown immediate时,未完全关闭数据库导致ORA-01012:not logged on

1.在启动oracle mount服务时,会报以下错误:

# SQL> startup mount

ORA-01012: not logged on

2.解决办法,kill掉相关的oracle进程,如下查找相关的进程PID(一般的是 ora_dbw0_xxx):

# ps -ef |grep ora_dbw0

oracle 5235 1 0 11:02 ? 00:00:00 ora_dbw0_edb

3.我这里kill -9 5235,在上一步得到ora_dbw0_edb 的pid是5235:

# kill -9 5235

4.最后在使用dba登录,此处kill掉后,必须重启登录开可以生效,直接在原来的报错的命令行中输入是无效的,如下:

# sqlplus / as sysdba

# SQL> startup mount ;

 

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Oracle关闭开启删除归档日志