I am trying to plan my storage needs for a database. If I expect to have about 30 bytes per row (My rows will be a timestamp(7 bytes + 1 for length), a number (approx 6 or 7 bytes) and a varchar2 (approx 15 bytes), do I need to consider any other overhead (i.e rowid is not stored in the table, but do I need to consider it for space requirements?)
I will also have to consider indexing requirements right?

If a row is 30 bytes, and i will be writing about 5 million rows per day i get
30 bytes * 5 million = 150 million bytes div by 1024 and 1000 = 146 MB per day

However, when I actually try to implement this scenario in oracle, I end up using about 30% more storage
I analyzed my row to make sure each was 30 bytes (using the analyze table command and the dba_tab_columns table-avg row len).

Any suggestions appreciated.