Thursday, October 27, 2016

Disable Archivelog Mode Oracle 12c RAC Database

I was working on very basic DBA task to disable the archive log mode in oracle 12c RAC DATABASE, below  is the step by step procedure.

[oracle@Sajidserver1~]$srvctl status database -d SAJIDDB
Instance SAJIDDB1 is running on node Sajidserver1
Instance SAJIDDB2 is running on node Sajidserver2


[oracle@Sajidserver1 ~]$ sqlplus / as sysdba

SYS@SAJIDDB1>alter system set cluster_database=false scope=spfile sid='*';

System altered.

SYS@SAJIDDB1>exit

[oracle@Sajidserver1 ~]$ srvctl stop database -d SAJIDDB -o immediate

[oracle@Sajidserver1 ~]$ sqlplus / as sysdba

SYS@SAJIDDB1>startup mount;
ORACLE instance started.

Database mounted.

SYS@SAJIDDB1>archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            +FLASHDG
Oldest online log sequence     25
Next log sequence to archive   0
Current log sequence           26


SYS@SAJIDDB1>ALTER DATABASE NOARCHIVELOG;

Database altered.

SYS@SAJIDDB1>alter system set cluster_database=true scope=spfile sid='*';

System altered.

SYS@SAJIDDB1>shutdown immediate;
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.

SYS@SAJIDDB1>exit

[oracle@Sajidserver1 ~]$ srvctl start database -d SAJIDDB

[oracle@Sajidserver1 ~]$ sqlplus / as sysdba


SYS@SAJIDDB1>archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            +FLASHDG
Oldest online log sequence     26
Current log sequence           27

SYS@SAJIDDB1>exit


[oracle@Sajidserver1 ~]$ srvctl status database -d SAJIDDB
Instance SAJIDDB1 is running on node Sajidserver1
Instance SAJIDDB2 is running on node Sajidserver2

#########
Issues:
#########

1. You need to set cluster_database parameter from container database. If not you will see below error:

SYS@SAJIDDB1>alter session set container=sajid_pdb;
SYS@SAJIDDB1>alter system set cluster_database=false scope=spfile sid='*';
alter system set cluster_database=false scope=spfile sid='*'
*
ERROR at line 1:
ORA-65040: operation not allowed from within a pluggable database

2. Be prepared to drop any retore points to disable archive log.

SYS@SAJIDDB1>alter database noarchivelog;
alter database noarchivelog
*
ERROR at line 1:
ORA-38781: cannot disable media recovery - have guaranteed restore points

SYS@SAJIDDB1>SELECT name, guarantee_flashback_database, scn FROM v$restore_point;

SYS@SAJIDDB1>drop restore point <Restore_Point_Name>;

Restore point dropped.

SYS@SAJIDDB1>ALTER DATABASE FLASHBACK OFF;

Database altered.