It doesn't fire every 33 milliseconds. First, you missed setting the CSn1 bit necessary for a 1024 prescaler; second, It looks like you want CTC mode (where the timer resets at OCRnA) but you didn't set the WGM21 bit necessary for that mode. After that your problem is that timer2 is an 8 bit timer and so OCR2A cannot store 515, but you math is correct.
You can get the period you want on a 16-bit timer; on the arduino mega thats timers 1,3,4, and 5.
Anyway here is a simple sketch for finding the average interval between interrupts. It just keeps track of the total time elapsed and the number of times the interrupt fired; the ratio of these two is the average time per interrupt.
In this case, with a prescaler of 1024, OCRA = 0xFF, and CTC mode, it runs at an interrupt every 16.384 ms.
volatile uint16_t interruptCount;
volatile uint32_t start;
TCCR2A = _BV(WGM21);
TCCR2B = _BV(CS22) | _BV(CS21) | _BV(CS20); // prescale by 1024
OCR2A = 0xFF;
TIMSK2 = _BV(OCIE2A);
// start the timer
interruptCount = 0;
start = micros();
// read interrupt count into a local variable atomically
uint16_t localCount = interruptCount;
uint32_t time = micros() - start;
// time elapsed
// number of times the interrupt handler fired
// average number of microseconds per interrupt
Serial.print(time / localCount);