--- Find mgr process $ ps -ef|grep ./mgr ggs 11823 1 0 2017 ? 00:29:13 ./mgr PARAMFILE /u01/app/ggs/dirprm/mgr.prm REPORTFILE /u01/app/ggs/dirrpt/MGR.rpt PROCESSID MGR ggs 45054 30127 0 14:15 pts/0 00:00:00 grep --color=auto ./mgr --- Find extract process $ ps -ef|grep ./extract ggs 17604 30127 0 14:15 pts/0 00:00:00 grep --color=auto ./extract ggs 44306 11823 0 03:33 ? 00:01:28 /u01/app/ggs/extract PARAMFILE /u01/app/ggs/dirprm/e_hawk.prm REPORTFILE /u01/app/ggs/dirrpt/e_hawk.rpt PROCESSID e_hawk ggs 44354 11823 0 03:33 ? 00:00:48 /u01/app/ggs/extract PARAMFILE /u01/app/ggs/dirprm/p_hawk.prm REPORTFILE /u01/app/ggs/dirrpt/p_hawk.rpt PROCESSID p_hawk --- Find mgr port $ lsof -i -P |grep 11823 mgr 11823 ggs 6u IPv4 3492119103 0t0 TCP *:7809 (LISTEN) --- Find extract port $ lsof -i -P |grep 44306 extract 44306 ggs 6u IPv4 2827659844 0t0 TCP *:7840 (LISTEN) $ lsof -i -P |grep 44354 extract 44354 ggs 6u IPv4 2827649786 0t0 TCP *:7841 (LISTEN) extract 44354 ggs 10u IPv4 2827610899 0t0 TCP hawk.local:21252->eagle.local:7822 (ESTABLISHED) --- Use Goldengate to find the same info. However, it does only provides local port. $ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.3.0.1.0 OGGCORE_12.3.0.1.0_PLATFORMS_170721.0154_FBO Linux, x64, 64bit (optimized), Oracle 12c on Jul 21 2017 23:31:13 Operating system character set identified as UTF-8. Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved. GGSCI> send manager childstatus debug Sending CHILDSTATUS request to MANAGER ... Child Process Status - 2 Entries ID Group Process Retry Retry Time Start Time Port ---- -------- --------- ----- ------------------- ------------------- ---- 0 e_hawk 44306 0 None 2017/11/20 19:49:14 7840 1 p_hawk 44354 0 None 2017/11/20 19:55:43 7841 GGSCI>
January 31, 2018
Goldengate Tracing Network Ports
January 21, 2018
Be Friend With awk/sed | ASM Mapping
I had request to add disks to ASM Disk Group without any further details for what new disks were added.
Need to figure out which disks are on ASM now, which disks should be used as new ones.
Got lazy and created scripts for this for future use.
[root@racnode-dc1-1 ~]# /etc/init.d/oracleasm scandisks
Scanning the system for Oracle ASMLib disks: [ OK ]
[root@racnode-dc1-1 ~]#
[oracle@racnode-dc1-1 ~]$ /etc/init.d/oracleasm listdisks
CRS01
DATA01
FRA01
--- [8,49] is major,minor for device
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01
Disk "DATA01" is a valid ASM disk on device [8,49]
--- Extract major,minor for devide
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01|awk '{print $NF}'
[8,49]
--- Remove [] brackets
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01|awk '{print $NF}'|sed s'/.$//'
[8,49
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01|awk '{print $NF}'|sed s'/.$//'|sed '1s/^.//'
8,49
--- Alternative option to remove []
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01|awk '{print $NF}'|sed 's/[][]//g'
8,49
--- Create patterns for grep
[oracle@racnode-dc1-1 ~]$ oracleasm querydisk -d DATA01|awk '{print $NF}'|sed s'/.$//'|sed '1s/^.//'|awk -F, '{print $1 ",.*" $2}'
8,.*49
--- Test grep using pattern
[oracle@racnode-dc1-1 ~]$ ls -l /dev/* | grep -E '8,.*49'
brw-rw---- 1 root disk 8, 49 Jan 21 16:42 /dev/sdd1
[oracle@racnode-dc1-1 ~]$
--- Test grep with command line syntax
[oracle@racnode-dc1-1 ~]$ ls -l /dev/*|grep -E `oracleasm querydisk -d DATA01|awk '{print $NF}'|sed s'/.$//'|sed '1s/^.//'|awk -F, '{print $1 ",.*" $2}'`
brw-rw---- 1 root disk 8, 49 Jan 21 16:42 /dev/sdd1
[oracle@racnode-dc1-1 ~]$
--- Run script
[oracle@racnode-dc1-1 ~]$ /sf_working/scripts/asm_mapping.sh
Disk "CRS01" is a valid ASM disk on device [8,33]
brw-rw---- 1 root disk 8, 33 Jan 21 21:42 /dev/sdc1
Disk "DATA01" is a valid ASM disk on device [8,49]
brw-rw---- 1 root disk 8, 49 Jan 21 21:42 /dev/sdd1
Disk "FRA01" is a valid ASM disk on device [8,65]
brw-rw---- 1 root disk 8, 65 Jan 21 21:42 /dev/sde1
[oracle@racnode-dc1-1 ~]$
--- ASM Lib version
[oracle@racnode-dc1-1 ~]$ rpm -qa|grep asm
oracleasmlib-2.0.4-1.el6.x86_64
oracleasm-support-2.1.8-3.1.el7.x86_64
kmod-oracleasm-2.0.8-19.0.1.el7.x86_64
[oracle@racnode-dc1-1 ~]$
--- Script
[oracle@racnode-dc1-1 ~]$ cat /sf_working/scripts/asm_mapping.sh
#!/bin/sh -e
for disk in `/etc/init.d/oracleasm listdisks`
do
oracleasm querydisk -d $disk
#ls -l /dev/*|grep -E `oracleasm querydisk -d $disk|awk '{print $NF}'|sed s'/.$//'|sed '1s/^.//'|awk -F, '{print $1 ",.*" $2}'`
# Alternate option to remove []
ls -l /dev/*|grep -E `oracleasm querydisk -d $disk|awk '{print $NF}'|sed 's/[][]//g'|awk -F, '{print $1 ",.*" $2}'`
echo
done
[root@racnode-dc1-1 ~]# fdisk -l /dev/sdd1 Disk /dev/sdd1: 8587 MB, 8587837440 bytes, 16773120 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes [root@racnode-dc1-1 ~]#
January 5, 2018
More Fun With sed
Objective is to convert what looks to be Samba share from Windows to Linux current directory path.
Basically, the core of the code using sed.
sed -i.bak -e 's|C\:\\\\scripts|'"$PWD"'|g' -e 's|\\\\|\/|g' "$f"
[vagrant@db-asm-1 ~]$ pwd
/home/vagrant
[vagrant@db-asm-1 ~]$
[vagrant@db-asm-1 ~]$ ll
total 8
-rw-rw-r-- 1 vagrant vagrant 56 Jan 5 03:22 t.1
-rw-rw-r-- 1 vagrant vagrant 55 Jan 5 03:22 t.2
drwxrwxr-x 3 vagrant vagrant 18 Jan 5 03:21 working
[vagrant@db-asm-1 ~]$ cat t.1
set file_path "C:\\scripts"
source "$file_path\\t1.sql"
[vagrant@db-asm-1 ~]$ cat t.2
set file_path "C:\\scripts"
source "$file_path\\t2.sql
[vagrant@db-asm-1 ~]$ cat ~/working/dinh/test.sh
#!/bin/bash -ex
# Make sure you always put $f in double quotes to avoid any nasty surprises i.e. "$f"
for f in t.*
do
echo "Processing $f file..."
sed -i.bak -e 's|C\:\\\\scripts|'"$PWD"'|g' -e 's|\\\\|\/|g' "$f"
done
[vagrant@db-asm-1 ~]$ ~/working/dinh/test.sh
+ for f in 't.*'
+ echo 'Processing t.1 file...'
Processing t.1 file...
+ sed -i.bak -e 's|C\:\\\\scripts|/home/vagrant|g' -e 's|\\\\|\/|g' t.1
+ for f in 't.*'
+ echo 'Processing t.2 file...'
Processing t.2 file...
+ sed -i.bak -e 's|C\:\\\\scripts|/home/vagrant|g' -e 's|\\\\|\/|g' t.2
[vagrant@db-asm-1 ~]$ cat t.1
set file_path "/home/vagrant"
source "$file_path/t1.sql"
[vagrant@db-asm-1 ~]$ cat t.1.bak
set file_path "C:\\scripts"
source "$file_path\\t1.sql"
[vagrant@db-asm-1 ~]$ cat t.2
set file_path "/home/vagrant"
source "$file_path/t2.sql
[vagrant@db-asm-1 ~]$ cat t.2.bak
set file_path "C:\\scripts"
source "$file_path\\t2.sql
[vagrant@db-asm-1 ~]$ ll
total 16
-rw-rw-r-- 1 vagrant vagrant 57 Jan 5 03:26 t.1
-rw-rw-r-- 1 vagrant vagrant 56 Jan 5 03:22 t.1.bak
-rw-rw-r-- 1 vagrant vagrant 56 Jan 5 03:26 t.2
-rw-rw-r-- 1 vagrant vagrant 55 Jan 5 03:22 t.2.bak
drwxrwxr-x 3 vagrant vagrant 18 Jan 5 03:21 working
[vagrant@db-asm-1 ~]$