Dropping a column from a large table is rarely worth it. It has to recreate 100% of the data blocks, creating massive redo and single block read, and it's done serially, not taking advantage of parallel processing.
Instead, simply set the column unused ( alter table mytable set unused (mycol) ) and forget about it. It essentially disappears and is as good as gone, except that it is still using space (it still exists in the data blocks). But who cares? Most of the time that's just fine.
If you need the space savings right away, after setting the column unused simply physically reorg the table with an ALTER TABLE MOVE which can be done with parallelism:
alter table mytable move parallel (degree 16) update indexes
That will remove the unused column from the data blocks without having to do gymnastics to recreate the table. At this point the column is both logically removed and physically removed, but for some reason Oracle keeps its memory of it around in user_tab_cols. I honestly can't imagine for what purpose.
The only downside to having an unused column sitting out there is you have a hidden column (visible in user_tab_cols but not in user_tab_columns) that can cause an issue with partition exchanges, which require that the standalone table you are swapping with a partition have precisely the same structure in the dictionary - it'd need to have the same hidden/unused column in the same physical position, which can be a bit tricky to recreate. Fortunately Oracle has provided the create table... for exchange with table... syntax to automatically reproduce the precise structure needed, including those pesky unused columns. So, not really a problem. I'd just set it unused and call it a day.
If you do end up needing to get it out of there entirely, you'll need to perform the actual column drop (which after the reorg/move may be faster by bypassing redo, though it will still scan the whole table) or recreate the table. If it comes to that, at some convenient later time, maybe coinciding with other maintenance (compression, archiving, etc..), use the CTAS/table replace method already recommended by others to completely remove the column from the blocks. You can also use the PL/SQL package dbms_redefinition which does this for you, though I've never found a need to use it so don't know how it performs or what limitations it has.
But whatever method you use, the point is that it doesn't need to be done now, or perhaps ever.