How to rollback database change in production after few hours or days
In your scenario, the best OPTION is to use FLASHBACK DATABASE. It is as simple as it gets:
1.Create a restore point flashback database guarantee
create restore point my_save_point guarantee flashback database;

2.You apply your changes in Production, DDLs and DMLs. After some QA tests you realise something went wrong and you want to go to the save point
flashback datatabase to my_save_point ;

That last command will rewind the database to that moment in time, making a rollback of all the changes done from the moment you create the restore point.
I used a lot restore points for roll-outs to Production when they contain substantial changes that are very difficult to rollback using scripts.