"Let say,there is one table employee with millions of record and we want to increase the column size address_col(10) to address_col(20)"
Doing this command will take *no time*, because no data needs to change.
SQL> create table t ( address varchar2(10));
Table created.
SQL> insert /*+ APPEND */ into t
2 select rownum
3 from ( select 1 from dual connect by level <= 1000 ),
4 ( select 1 from dual connect by level <= 10000 )
5 /
10000000 rows created.
SQL> set timing on
SQL> alter table t modify address varchar2(50);
Table altered.
Elapsed: 00:00:00.05
but anyway. If you need to backup a column, you can take a copy of the primary key columns, and the column needed, eg
create table backup_my_table
as select pk_col1, pk_col2, my_column
from my_table;
You need the primary key columns so you could map the data back to the original table if you needed to.