where old table will be static and new table will be partitioned, and
select will be a union of the 2 tables as required
This is really easy to do in an instant without copying anything or requiring any additional space, and you do not need to use UNION or rewrite anything at all, because you can do this with 1 table.
Let's say your table is this:
create table t1 (col1 date, col2 number);
Then you create the partitioned version of this table with 1 partition where you can store all your existing data:
create table t1_exch (col1 date, col2 number)
partition by range (col1)
interval (numtodsinterval(1, 'day'))
(
partition p1 values less than (date'2017-03-11')
);
Then you exchange your table with the partition:
alter table t1_exch exchange partition p1 with table t1;
Finally drop the old table, and rename the new table to use the name of the old table:
drop table t1 purge;
alter table t1_exch rename to t1;
Data inserted after '2017-03-11' will be automatically partitioned and you can leave your old data as it is, or split into partitions if you want.
Partitioning data is easy, the cumbersome part may be dealing with the constraints and indexes that need to be global. You may need to change your PK and Unique constraints (and indexes), as you can not have such indexes locally partitioned without the partitioning key included in them. Also because of dropping the old table and having a new one in its place, you need to sort out the FK constraints pointing to this table.