Fun fact - if you haven't got Transparent Data Encryption enabled, you can open up data files and view data stored in your tables! So you can see for yourself what a row looks like.
For example:
create table find_this (
col_name1 varchar2(10), col_name2 int, col_name3 varchar2(10),
col_name4 int, col_name5 int
);
insert into find_this values ( 'Find me 1', null, 'and this 1', null, null );
insert into find_this values ( 'Find me 2', null, 'and this 2', null, null );
insert into find_this values ( 'Find me 3', null, 'and this 3', null, null );
commit;
alter system checkpoint;
Search the data file for the tablespace the table is in for "Find me" and you'll see something like:
,^A^C Find me 3<FF>
and this 3,^A^C Find me 2<FF>
and this 2,^A^C Find me 1<FF>
and this 1^A^F
Side note - this is why TDE is important; if someone gets hold of your unencrypted data files they can see the data by opening it up in any editor.So no, it's not repeating the column names for each row. There's no need to - these are fixed and stored in the data dictionary. Also notice that the last two null values are ignored.
The Concepts Guide has information on block and row structures if you want to know more:
https://docs.oracle.com/en/database/oracle/oracle-database/23/cncpt/logical-storage-structures.html#GUID-754ECC03-DD58-4B49-95D1-B98A23B508B2