My thoughts were different - to me, it seemed that the question was (in my words) "select COLUMN NAME (of 10 columns) which contains the largest value of all". Therefore, not to select actual VALUE, but COLUMN NAME.
If we modify your query a little bit:
SELECT MAX(GREATEST(col1, col2, col3, ...)) FROM table_name;
we will select the largest number value in all columns involved in the query.
But, is it possible to select COLUMN NAME that contains the value we got using the above query? Using 'user_tab_columns' or something?
with v as
( select 'COL1' as name, col1 as value from mytable
select 'COL2' as name, col2 as value from mytable
select 'COL10' as name, col10 as value from mytable
select name, value from v
where value = (select max(value) from v);