Application programming was never my real task, Although I started porting a relational database (Unify if somebody has heard about this DB from the 1980's) using them was not my first demand. Out of that all the logical errors like truncating a table or deleting a row are not really in my focus.
But this is the third big restore theme within a database environment. Oracle has created under the flash recovery umbrella a set of functionalities that keep undo information on logical data within the database. This can help with most of these flaws.
If the flash recovery functionality is not the right choice (for whatever reason) logical restores start to be the last way. RMAN support for a direct table restore was added with 12c. With older versions it is a very work intensive way to restore a table: Restoring the last good version of the database, mount the DB, roll-forward to the last transaction prior to the issue, open the DB and an export of the logical elements. To be provided on a second host with installed Oracle Binaries. Or on the Production host with a rename of the data files and a rename of the DB. Some of these steps can be supported with certain RMAN features as well.
Not only work intensive, also very time consuming. Restoring to a recent point can be a very time consuming action, especially with differential and incremental backups. And then is the space consumption for the second copy of the database. Done wrong there is now a second ORACLE_SID, just on another host.
Why mentioning all of these? The basic operations that I outlined here are the same to clone a database. And this is a very valuable operation.