#Linux Logging
/var/log/messages
/var/log/syslog
/var/log/kernlog
for num in `seq 1 1 10`; do free -m; sleep 10; done
free -m
##################################################################################
total used free shared buffers cached
Mem: 28203 20010 8193 683 156 3850
-/+ buffers/cache: 16002 12200
Swap: 8159 156 8003
##################################################################################
# buffers" and "cached" - amount of memory that the kernel is using for filesystem buffers
# - freed/released by kernel if required
# "-/+ buffers/cache - the most important line - (=free+buffers+cache from Mem line)
# - free on second line is the most important number
# and look at used swap to see if system is swapping
# some ed stuff that may be useful sometime
# using the old ed because can't create temp file on /etc (sed wants to create a temp file)
# sed -i '/^ORCL/s/:N/:Y/' /etc/oratab # would have been nice but can't create temporary file in /etc
# printf "%s\n" '/^ORCL/s/:N/:Y/' wq | ed -s /etc/oratab
# who is logged in
w # Show who is logged on and what they are doing.
w|sort -k3b # show show is logged in and sort on 3rd column
# disk usage
# print line if first column is greater than 500000
du|awk '$1>500000 {print $0}'
du -k -x ./ | sort -rn|more -- disk usage - size in K
du -m -x ./ | sort -rn|more -- disk usage - size in M
du -h / | grep '[0-9]G'
du -h / | grep '[0-9]G' - look for big files
df /opt - find out what mount point/file system it is on
du -sh /opt -- monitor the size of /opt
df $PWD - df current directory
du -sh .
du -sm * | sort -n
#--------------------------------------------
#Processes and memory:
mpstat -P ALL
ps auxww |grep tnslsnr
ps -ef |grep tnslsnr
cat /proc/meminfo
egrep --color 'Mem|Cache|Swap' /proc/meminfo
# cpu available
top -bn1 | grep "Cpu(s)" |sed "s/.*, *\([0-9.]*\)%* id.*/\1/" |awk '{print 100 - $1"%"}'
# Displays a line containing the totals memory in MB
free -t -m
# run vmstat outputting MB (m) (note, this assumes 1000K = 1M (not 1024K = 1M)
vmstat -S m 5
# run vmstat outputting MB (M) (note, 1024K = 1M)
vmstat -S M 5
# Output
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 48 212 222 1253 0 0 1 32 0 1 1 0 99 0 0
0 0 48 212 222 1253 0 0 0 22 112 201 0 0 100 0 0
0 0 48 212 222 1253 0 0 0 13 126 212 0 0 100 0 0
# memory section has meaning same as free -m below
# Memory usage free -m
oracle@vmlinux1: free -m
total used free shared buffers cached
Mem: 3949 3737 211 0 222 1253
-/+ buffers/cache: 2261 1687
Swap: 8191 48 8143
Most important Used figure is buffers/cache used - this is how much RAM apps are using - must be less than total Mem
(Out of a total 3949 megabytes of memory (RAM), the system is using 3737 megabytes, and has 211 megabytes free - this
is not actually correct because Linux uses spare memory to cache disk blocks) - so "Used Mem" usually nearly equals "total Mem"
Simply adding memory by increasing SGA_TARGET gives Linux the possibility to use this memory - unless HugePages are used
so that the memory is really allocated to Oracle SGA, Linux will steal the memory to use for caching
Check difference between HugePages and Transaparent HugePages
My understanding at present is that the SGA gets locked into HugePages, essentially caching at Linux level, the SGA
So it seems logical that Huge Pages must at least equal the SGA.
Note pages and AMM are NOT compatible (but ASMM OK)
Should also put minima on Oracle buffer cache and shared pool
#Huge Pages
----------
Huge pages are locked in physical memory
memlock (ulimit parameter) - how much memory oracle user can lock into address space -
memlock should match memory size of the number of Huge pages (Hugepagesize*nr_hugepages --> cat /proc/sys/vm/nr_hugepages)
grep HugePages /proc/meminfo to check Huge Page measures
# huge pages checks
/proc/meminfo |grep -i huge
cat /proc/sys/vm/nr_hugepages
------------------------------------------------------------------------------
[root@vmlinux~]# free -m
total used free shared buffers cached
Mem: 12011 9825 2186 0 243 5829
-/+ buffers/cache: 3752 8259
Swap: 16378 313 16065
Add buffers and cache together, you get: 6072.
If you subtract 6072 from used you get 3752 used
If you add it to free you get 8259 free
Used1 - (buffers + cached) = used2
9825 - (243 + 5829) = 3753 (3752 on second row)
free1 + (buffers + cache) = free2
2186 + (243 + 5829) = 8285 (8259 on second row)
compare to:
vmstat -s -S M | grep mem
free -glt (show mem in GB, and show totals)
#update every 5 seconds
free -glt -s 5
# Huge pages
#(AMM must be disabled, memory_target=0)
ipcs -ma
cat /etc/sysctl.conf| grep -i huge
grep ^Huge /proc/meminfo
example HugePages
[oracle@vmlinux1 ~]$ grep ^Huge /proc/meminfo
HugePages_Total: 7684
HugePages_Free: 2672
HugePages_Rsvd: 2669
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total * Hugepagesize = size of HugePage memeory
-----------------------------------------------------------------------------
#-------------------------------------------------------------
#---- user stuff
#-- cut the id string at first bracket, then at second bracket
#-- e.g uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
#-- extracts root from above string
id |cut -d"(" -f2 | cut -d ")" -f1
# list of all users on the system
cat /etc/passwd |cut -d: -f1
# list users having /home as home directories
cat /etc/passwd |grep "/home" |cut -d: -f1
# determine current user
echo $LOGNAME
echo $USER
id
id -u -n # username
id -u # userid
#!/bin/bash
_user="$(id -u -n)"
_uid="$(id -u)"
echo "User name : $_user"
echo "User name ID (UID) : $_uid"
# make sure only root can execute the script
#!/bin/bash
## get UID
uid=$(id -u)
## Check for it
[ $uid -ne 0 ] && { echo "Only root may enable the nginx-chroot environment to the system."; exit 1; }
# grep
# grep OR (Mem or Active or Swap)
cat /proc/meminfo|grep 'Mem\|Active\|Swap'
cat /proc/meminfo|grep -E 'Mem|Active'
cat /proc/meminfo|egrep 'Mem|Active'
cat /proc/meminfo|grep -e Mem -e Active -e Swap
#----------------------------------------------------------------
#mounting and unmounting
# for the problem of stale NFS handle: df: /opt/NetApp/smo/mnt/-oracle-ORCL: Stale NFS file handle
umount /opt/NetApp/smo/mnt/-oracle-ORCL
#-----------------------------------------------------------------
#sed and environment variables
REPOS=/foxrepos/software/Oracle
# globally replace XXX in file ${REPOS}/scripts/.bash_profile with ORCL, YYY with ORCL2, output to file "tmpprofile"
sed -e "s:XXX:ORCL:g" -e "s:YYY:ORCL2:g" < ${REPOS}/scripts/.bash_profile > ./tmpprofile
# copying files around
scp oracle@vmlinux1:/oracle/tmp/export1.DMP oracle@vmlinux2:/oracle/tmp/export1.DMP
#copy a file with a timestamp appended
cp grub.conf grub.conf.$(date +"%Y%m%d%H%M%S")
#------------------------------------------------------------
# delete hidden files - be careful!
find . -iname ".*" -exec rm {} \;
-- generate a list of files and grep through each of them
ls -ltr alert*| awk '{print $9}'|xargs grep cdmp -A1
grep 'cdmp' $(ls -ltr alert*)
ls -ltr alert* -exec grep 'cdmp' {} \;
# top
# when executing top, type Z at the command line and the colour of the elements can be changed. For example
# type S, 4, [RET] and the Summary data headings turn green
# see crontab of all users:
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done
awk -F: '{print $1}' /etc/passwd | xargs -l1 crontab -lu 2>/dev/null
# df and sort by the 4th column (%Used)
df -h|grep "\/oracle\/" | ( sort -rn -k 4)
df -h |grep ORCL|sort -k5
----------------------------------------------------------------------------
grep -i "dictionary objn" *.trc|awk '{print $5}' | sort|uniq
----------------------------------------------------------------------------
# deleting files older than 30 days example.
find . -name "*.trc" -mtime +30 -exec rm -rf {} \;
find . -name "*.aud" -mtime +35 -exec rm -rf {} \;
---------------------------------------------------------------------------
# execute command and see output differences
watch -d=cumulative free -m