In this blog post series, I'll be updating the post with random unix commands that might be of use to DBAs at regular intervals.
1. Trim Alert log contents
It becomes tedious job when we have to deal with a huge alert log and it gets worse if we have to dig a month old or a week old alert log contents for troubleshooting. So the below command can be used to trim the contents of alert log for a particular period of time.
# This is the format used sed -n '/From date pattern / , /To date pattern/p' < input_file > output_file # This is an example sed -n '/Jul 23 / , /Jul 26/p' < alter_ORACLESID.log > 4days_trimmed.txt
2. Details of CPU available
The details of memory information is available below
Memory Information of different OS platforms
The Details of CPU available can be found by using the commands below in Linux servers.
# -- gives number of CPU nproc # Details of CPU from /proc/cpuinfo in human readable format lscpu # Details from cpuinfo directly cat /proc/cpuinfo
For HP-UX the below commands can be used
# For details of procs ioscan -fnk|grep proc # For number of procs ioscan -k|grep processor|wc -l # For details of overall system topFor AIX use any of the below.
prtconf -s pmcycles -m lsdev -Cc processor bindprocessor -q
3. Create multiple directories under all directories
If we are required to create multiple directories inside all the available directories the below command can be used
For eg., lets take a directory where envmt has 4 directories dir1, dir2, dir3, dir4
Now we need to create control,bad,param,log directories under each of all the directories under envmt. Illustration is as follows
$ cd envmt $ ls -lrt total 16 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:07 dir4 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:07 dir3 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:07 dir2 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:07 dir1 $ ls -l dir1 total 0 $ ls -l dir2 total 0 $ for dir in */; do mkdir -- "$dir"/{control,bad,param,log}; done $ ls -l dir1 total 16 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 bad drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 control drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 log drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 param $ ls -l dir2 total 16 drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 bad drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 control drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 log drwxr-xr-x 2 oracle dba 4096 Jul 27 17:08 paramNow control,bad,param,log directories are created in dir1, dir2, dir3, dir4 directories. This saves a lot of time while doing any job.
4. Search and replace in all files
The following command can be used to search and replace a word in all the files inside a directory. This is useful when we have configuration files stored where all the files should be updated with same username or servername, etc.
# This is the format used grep -rl 'search_string' ./ | xargs sed -i 's/search_string/replace_with_string/g' # This is an example grep -rl 'STDBCS01' ./ | xargs sed -i 's/STDBCS01/DVDBCS01/g'If this find and replace is required for a single file, then it can be done by opening the file in vi editor
# open file vi file_name # Use below command to find and replace # g denotes global. Remove g if find and replace is required only for the particular line :%s/search_string/replace_with_string/g # save file and exit :wq
5. Email attachment from servers
Email attachments can be sent with uuencode and the command is as below.
Tested in AIX and Linux
uuencode file1 file1 |mailx -s "Subject" nagulan.selvakumar@my.company.comThe below command is used to send multiple attachments in a single email
uuencode r1.tar.gz r1.tar.gz > /tmp/out.mail uuencode r2.tar.gz r2.tar.gz >> /tmp/out.mail uuencode r3.tar.gz r3.tar.gz >> /tmp/out.mail echo "msg body" >> /tmp/out.mail mail -s "Reports" nagulan.selvakumar@my.company.com < /tmp/out.mailWe do have another package "mutt" to send emails which can be utilized as below.
Tested in Linux
echo "This is the message body" | mutt -a file_to_attach -s "subject of message" nagulan.selvakumar@my.company.com
Happy working!