Can you specify in a bit more detail how you "load" the data? For example, if you are using SQL, then you should be able to monitor the SQL statement with SQL*Monitor. Depending on the cost of the statement it will be either shown automatically or you can enforce it with the MONITOR hint). That will tell you exactly where in the row source tree the operation is.
If you are using a loading tool then the tool should offer you some insight into the progress of the load; I recall that we have means for that with the Oracle tools, but I do not know what other tools have. And last but not least, irrespective of what tool you are using, you will have some kind of SQL statement/cursor showing up in the database, so you should be able to get insight on the lowest level: the executing cursor, using views like V$SQL ...
Hope that helps as s starting point.
You can check row/table level locks during data load. You can check segment size whether it is getting increased.