Sunday, August 7, 2022

Enable Active Dataguard In Physical Standby Database

 


#How To Enable Active Dataguard In Physical Standby Database


https://dbaclass.com/article/enable-active-dataguard-physical-standby-database/



# 1- Cancel the media recovery on physical standby.


SQL> alter database recover managed standby database cancel;


# 2- Open the database[PHYSICAL STANDBY]


SQL> alter database open;


Database altered


# 3- Start media recovery with real-time log apply[PHYSICAL STANDBY]


SQL> alter database recover managed standby database using current logfile disconnect from session;


Database altered.


#4- Check the database status:[PHYSICAL STANDBY]


SQL> select name,open_mode from v$database;


NAME OPEN_MODE

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

PRODDB READ ONLY WITH APPLY




SQL> select process,status,sequence# from v$managed_standby;


PROCESS STATUS SEQUENCE#

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

ARCH CONNECTED 0

ARCH CONNECTED 0

ARCH CONNECTED 0

ARCH CONNECTED 0

ARCH CONNECTED 0

RFS IDLE 0

RFS RECEIVING 510

RFS IDLE 0

RFS IDLE 4178

MRP0 APPLYING_LOG 510 --->>>> MRP PROCESS


Oracle Dataguard Monitor

 

# dataguard monitor 


#  DR notification 


SELECT  MAX(SEQUENCE#)  FROM V$ARCHIVED_LOG WHERE COMPLETION_TIME >= (SYSDATE - 1) GROUP BY THREAD# ORDER BY THREAD#;

SELECT  MAX(SEQUENCE#)  FROM V$ARCHIVED_LOG WHERE APPLIED='YES' and COMPLETION_TIME

>= (SYSDATE - 1) and DEST_ID=2  GROUP BY THREAD# ORDER BY THREAD#; 






#select database role

SELECT database_role, open_mode FROM v$database;


DATABASE_ROLE    OPEN_MODE

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

PHYSICAL STANDBY MOUNTED


#status of background processes in a standby database (on standby)

select process, client_process,thread#,sequence#,status from v$managed_standby;



#FIND THE ARCHIVE LAG BETWEEN PRIMARY AND STANDBY: monitor dataguard 


select LOG_ARCHIVED-LOG_APPLIED "LOG_GAP" from

(SELECT MAX(SEQUENCE#) LOG_ARCHIVED

FROM V$ARCHIVED_LOG WHERE DEST_ID=1 AND ARCHIVED='YES'),

(SELECT MAX(SEQUENCE#) LOG_APPLIED

FROM V$ARCHIVED_LOG WHERE DEST_ID=2 AND APPLIED='YES');


#example (Normal)

   LOG_GAP

----------

         1



#LAST SEQUENCE RECEIVED AND LAST SEQUENCE APPLIED:


SELECT al.thrd "Thread", almax "Last Seq Received", lhmax "Last Seq Applied" FROM

(select thread# thrd, MAX(sequence#) almax FROM v$archived_log WHERE resetlogs_change#=(SELECT resetlogs_change#

FROM v$database) GROUP BY thread#) al, (SELECT thread# thrd, MAX(sequence#) lhmax FROM v$log_history

WHERE resetlogs_change#=(SELECT resetlogs_change# FROM v$database) GROUP BY thread#) lh WHERE al.thrd = lh.thrd;  



#CHECK THE MESSAGES/ERRORS IN STNADBY DATABASE: ( Run on standby)

set pagesize 2000

set lines 2000

col MESSAGE for a90

select message,timestamp from V$DATAGUARD_STATUS where timestamp > sysdate - 1/6;





#check lag  ( on standby)

set lines 1000

select name,value from v$dataguard_stats;


#Example

NAME                             VALUE

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

transport lag                    +00 00:00:00

apply lag                        +00 00:00:00

apply finish time                +00 00:00:00.000

estimated startup time           8




#which archive sequence number comes from the Primary database lastly and which is last applied in Standby ( on standby)

SELECT ARCH.THREAD# "Thread", ARCH.SEQUENCE# "Last in Sequence", APPL.SEQUENCE# "Last Applied Sequence", (ARCH.SEQUENCE# - APPL.SEQUENCE#) "Difference"

FROM

(SELECT THREAD# ,SEQUENCE# FROM V$ARCHIVED_LOG WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$ARCHIVED_LOG GROUP BY THREAD#)) ARCH,

(SELECT THREAD# ,SEQUENCE# FROM V$LOG_HISTORY WHERE (THREAD#,FIRST_TIME ) IN (SELECT THREAD#,MAX(FIRST_TIME) FROM V$LOG_HISTORY GROUP BY THREAD#)) APPL

WHERE

ARCH.THREAD# = APPL.THREAD#

ORDER BY 1;


#Example

    Thread Last in Sequence Last Applied Sequence Difference

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

         1            19642                 19642          0


# archive gap in dataguard

SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;


#applied archivelogs in dataguard, 

select thread#,sequence#,first_time,next_time,applied from gv$archived_log where applied='YES';


# max sequence of dataguard

select thread#,max(sequence#) from gv$archived_log group by thread#;



#To see all parameters of Oracle dataguard, you can execute following query.

set linesize 500 pages 0

col value for a80

col name for a50


select name, value from v$parameter

where name in ('db_name','db_unique_name','log_archive_config',    

'log_archive_dest_1','log_archive_dest_2','log_archive_dest_3',

               'log_archive_dest_state_1','log_archive_dest_state_2','log_archive_dest_state_3', 'remote_login_passwordfile',

               'log_archive_format','log_archive_max_processes','fal_server','fal_client','db_file_name_convert',

              'log_file_name_convert', 'standby_file_management') order by 1;





 

##################################troubleshooting#############################################################################  



#stop dataguard


alter database recover managed standby database cancel;


#start dataguard 


ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;






#CHECK THE NUMBER OF ARCHIVES GETTING GENERATING ON HOURLY BASIS:


SELECT TO_CHAR(TRUNC(FIRST_TIME),'Mon DD') "DG Date",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'00',1,0)),'9999')      "12AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'01',1,0)),'9999')      "01AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'02',1,0)),'9999')      "02AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'03',1,0)),'9999')      "03AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'04',1,0)),'9999')      "04AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'05',1,0)),'9999')      "05AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'06',1,0)),'9999')      "06AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'07',1,0)),'9999')      "07AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'08',1,0)),'9999')      "08AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'09',1,0)),'9999')      "09AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'10',1,0)),'9999')      "10AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'11',1,0)),'9999')      "11AM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'12',1,0)),'9999')      "12PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'13',1,0)),'9999')      "1PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'14',1,0)),'9999')      "2PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'15',1,0)),'9999')      "3PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'16',1,0)),'9999')      "4PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'17',1,0)),'9999')      "5PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'18',1,0)),'9999')      "6PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'19',1,0)),'9999')      "7PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'20',1,0)),'9999')      "8PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'21',1,0)),'9999')      "9PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'22',1,0)),'9999')      "10PM",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'23',1,0)),'9999')      "11PM"

FROM V$LOG_HISTORY

GROUP BY TRUNC(FIRST_TIME)

ORDER BY TRUNC(FIRST_TIME) DESC

/

 

#Register Data Guard standby redo log file tips( this will register all arch logs in this path )



http://www.dba-oracle.com/t_register_standby_redo_log_files.htm


LOCALERP   - Primary database

Error: ORA-16724: cannot resolve gap for one or more members

LOCALERPST - Physical standby database 

Warning: ORA-16809: multiple warnings detected for the member


alter database register logfile '/oradata/proddata19/LOCALERP/archive/1_40863_1077804461.arc';

alter database register logfile '/oradata/proddata19/LOCALERP/archive/1_40864_1077804461.arc';

alter database register logfile '/oradata/proddata19/LOCALERP/archive/1_40865_1077804461.arc';

alter database register logfile '/oradata/proddata19/LOCALERP/archive/1_40866_1077804461.arc';


alter database register logfile '/oradata/proddata19/LOCALERP/archive/1_62960_1077804461.arc';

1_62960_1077804461.arc

rman> catalog start with '/oradata/proddata19/LOCALERP/archive';

catalog start with '/oradata/proddata19/LOCALERP/archive/';



10 16 * * * /bin/sh /home/oraprod/del_arch.sh > /home/oraprod/1

How to recover standby database from a missing archive log gap

 02-08-2022

#how to recover standby database from a missing archive log gap


#Hossam Note

#if there is a Gap on DG there is 2 scenarios

#1- missing archivelogs on standby but it exist on prod this can be fixed by using rsync and catalog start with 

#2-missing archivelogs on standby but its NOT exist on prod this can be fixed by below 



https://techgoeasy.com/recovering-standby-database-fro/


#On the standby database check the current SCN

SQL>  col current_SCN for 99999999999999999999;

SQL> select current_scn from v$database;


          CURRENT_SCN

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

      111050674405375



#On the primary database create the needed incremental backup from the above SCN

rman target /

RMAN> 

{

allocate channel c1 type disk;

BACKUP INCREMENTAL FROM SCN 111050674405375 DATABASE FORMAT '/tmp/inc_standby_%U';

}



#Cancel managed recovery at the standby database


SQL> alter database recover managed standby database cancel;


Database altered


#scp the backup files to standby server to /tmp folder.


scp -rp oraprod@


#Apply the Incremental Backup to the Standby Database


rman target /

RMAN>RECOVER DATABASE NOREDO;


#Put the standby database back to managed recovery mode.


qlplus "/ as sysdba"

SQL>recover managed standby database disconnect;

Media recovery complete.


#On the primary create new standby controlfile


alter database create standby controlfile as '/tmp/standby01.ctl';


#Copy the standby control file to the standby site. Shutdown the standby database and replace the standby control files and restart the standby database in the managed recovery mode using the below command


RMAN> SHUTDOWN IMMEDIATE ;

RMAN> STARTUP NOMOUNT;

RMAN> RESTORE STANDBY CONTROLFILE FROM '/tmp/standby01.ctl';



#Mount the standby


RMAN> ALTER DATABASE MOUNT;


#On STANDBY database, clear all standby redo log groups:




select GROUP# from v$logfile where TYPE='STANDBY' group by GROUP#;

    GROUP#

----------

        10

        11

        12

        13

ALTER DATABASE CLEAR LOGFILE GROUP 10;

ALTER DATABASE CLEAR LOGFILE GROUP 11;

ALTER DATABASE CLEAR LOGFILE GROUP 12;

ALTER DATABASE CLEAR LOGFILE GROUP 13;


#if dont clear restart standby db


#Now you can start the MRP


SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;


#if needed 

cd /oradata/proddata19/LOCALERP/archive/ 

rsync -avzhe ssh --progress oraprod@10.143.250.164:/oradata/proddata19/LOCALERP/archive/ .


rman> catalog start with '/oradata/proddata19/LOCALERP/archive';

Sunday, January 20, 2019

install react native problem using npm


install React Native 



fist install Node.js

https://nodejs.org/en/download/



2- install react native using npm

https://facebook.github.io/react-native/docs/getting-started



 problem :

H:\>npm install -g expo-cli
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm ERR! errno SELF_SIGNED_CERT_IN_CHAIN
npm ERR! request to https://registry.npmjs.org/expo-cli failed, reason: self signed certificate in certificate chain

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\username\AppData\Roaming\npm-cache\_logs\2019-01-20T11_00_33_490Z-debug.log



fix :


H:\>npm config set prefix "D:\Program Files\nodejs\cash\AppData\Local\npm"

H:\>npm config set cache "D:\Program Files\nodejs\cash\AppData\Local\npm"

H:\>npm config set strict-ssl false

H:\>npm install -g expo-cli




Saturday, November 10, 2018

linux ubuntu slow internet fix

sudo nano /etc/gai.conf

#unhach this line

precedence ::ffff:0:0/96  100

                                                                                                                                                              

Wednesday, October 17, 2018

Oracle® Fusion Middleware System Requirements and Specifications Red Hat Linux 7




#Oracle® Fusion Middleware  System Requirements and Specifications

https://docs.oracle.com/en/middleware/lifecycle/12.2.1.3/sysrs/unix-operating-system-requirements.html#GUID-880D655D-F9FB-439B-8001-10AA78D0FC57

#1- Viewing the Number of Currently Open Files
/usr/sbin/lsof | wc -l

#2- Setting the Operating System Open File and Processes Limit

vi /etc/security/limits.conf

Add the following lines to the limits.conf file.
* soft  nofile  4096
* hard  nofile  65536
* soft  nproc   2047
* hard  nproc   16384


Reboot the host computer.

# 3- Minimum Requirements for the Linux Operating System

# Oracle Linux 7 (UL0+) and Red Hat Linux 7 (UL0+)

Oracle Linux 7 (UL0+) and Red Hat Linux 7 (UL0+)

binutils-2.23.52.0.1
compat-libcap1-1.10
compat-libstdc++-33-3.2.3.x86_64
compat-libstdc++-33-3.2.3.i686
gcc-4.8.2
gcc-c++-4.8.2
glibc-2.17.x86_64
glibc-2.17.i686
glibc-devel-2.17.x86_64
libaio-0.3.109.x86_64
libaio-devel-0.3.109.x86_64
libgcc-4.8.2.x86_64
libgcc-4.8.2.i686
libstdc++-4.8.2.x86_64
libstdc++-4.8.2.i686
libstdc++-devel-4.8.2.x86_64
ksh
make-3.82
sysstat-10.1.5
numactl-2.0.9 for x86_641
numactl-devel-2.0.9 for x86_642
motif-2.3.4-7 for x86_643
motif-devel-2.3.4-7 for x86_644
redhat-lsb-4.1-27.0.1.el7 for x86_64
redhat-lsb-core-4.1-27.0.1.el7 for x86_64

-- you cand add yum install ocfs2-tools -y   fot another oracle document


Installing Oracle 11g on RHEL 7



#Quick Installation Guide DB 11g Release 2 (11.2) for Linux x86-64 Red Hat Enterprise Linux 7

https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#CIHFICFD



# following or later version of packages for Oracle Linux 7, and Red Hat Enterprise Linux 7 must be installed:

binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64

#Oracle ODBC Drivers

download from http://www.unixodbc.org

unixODBC-2.3.1-6.el7.x86_64 or later

unixODBC-2.3.1-6.el7.i686 or later

unixODBC-devel-2.3.1-6.el7.x86_64 or later

unixODBC-devel-2.3.1-6.el7.i686 or later

#create the oinstall and dba group

/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba

#If the oracle user does not exist

/usr/sbin/useradd -g oinstall -G dba oracle

#Configuring Kernel Parameters and Resource Limits

 /etc/sysctl.conf
 /sbin/sysctl -p
 Enter the command /sbin/sysctl -a to confirm that the values are set correctly.

 #Check Resource Limits for the Oracle Software Installation Users

 limits.conf

mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R 775 /u01/app/

#Enterprise Manager
http://host.domain:1158/em/