How expensive is it to rename column name on a big table?
Yes, it is just a metadata update.

SQL&gt; create table t1 as 
     with g as (select * from dual connect by level &lt;= 1000)
     select 'HELLO' as c1 from g,g,g where rownum &lt;= 1e7;

Table created.

SQL&gt; select bytes/1024/1024 from user_segments where segment_name = 'T1';

BYTES/1024/1024
---------------
            128

SQL&gt; select
       s.value/1024/1024 
     from v$mystat s 
     natural join v$statname sn 
     where sn.name = 'redo size';

S.VALUE/1024/1024
-----------------
       131.848621

SQL&gt; alter table t1 rename column c1 to c2;

Table altered.

SQL&gt; select
       s.value/1024/1024 
     from v$mystat s 
     natural join v$statname sn 
     where sn.name = 'redo size';

S.VALUE/1024/1024
-----------------
       131.851715


Above statement produced just a tiny amount of redo.

But there are other aspects: the required locks and invalidation of related PL/SQL objects.