DBMentors is a solution oriented group, started by a team of qualified and committed professionals with vast experience in IT industry. The team has in-depth technical and design expertise with highest standards of programming quality.

Pages

Search This Blog

Note: All the posts are based on practical approach avoiding lengthy theory. All have been tested on some development servers. Please don’t test any post on production servers until you are sure.

Monday, November 18, 2013

Exadata: Tracing Oracle I/O Requests on Exadata DB Nodes

With Oracle Exadata, database IO is handled exclusively by the cellsrv process on storage servers. The database nodes bundle IO requests into iDB messages and transmit these over the infiniband network grid to storage server. To confirm where physical database IO is performed on Oracle Exadata, we can use strace to trace system calls from an Oracle instance process. strace is a tool for tracing system calls and signals . It intercepts and records the system calls made by a running process. strace can print a record of each system call, its arguments, and its return value.

The DBWR process used the sendmsg system call to package an IO request, which ships the iDB message over the infiniband network in the case of Exadata and a recvmsg call to receive the data from the storage server.

3- To further drill down you could use the strace without -c option but using -o option to have the output in a trace file.

[root@exadb ~]# strace -o straceout.txt -p 3368

Process 3368 attached - interrupt to quit

^CProcess 3368 detached

[root@exadb ~]#

In the output (straceout.txt) file examine for the sendmsg and recvmsg calls. You will see like below, observe the IP addresses for the storage servers.