Problem using 'Regular expression' in order to split characters of a column when there is no delimiter between them
1- Because with multiple rows, multiple paths exist to reach a level in the hierarchy
select lvl, count(*) from (
SELECT col_id, REGEXP_SUBSTR(col_name, '[a-z]{1}', 1, LEVEL) AS VAL, level lvl
  FROM tbl_test
CONNECT BY REGEXP_SUBSTR(col_name, '[a-z]{1}', 1, LEVEL) is not null
) group by rollup(lvl)
order by 1;

       LVL   COUNT(*)
---------- ----------
         1          3
         2          9
         3         27
         4         81
         5        243
         6        486
                  849

2- I am not saying it is the best, it is just one possible way to do it (add delimiters and use other tricks):
drop table tbl_test;
create table tbl_test
(
  col_id   number,
  col_name varchar2(500)
);

insert into tbl_test values (1, 'aetnap');
insert into tbl_test values (2, 'elppa');
insert into tbl_test values (3, 'ananab');
commit;

select 
  col_id, trim(column_value) val
from tbl_test,
  xmltable(trim(trailing ',' from regexp_replace(col_name, '(.)', '&quot;\1&quot;,')));

COL_ID VAL
------ ---
     1 a  
     1 e  
     1 t  
     1 n  
     1 a  
     1 p  
     2 e  
     2 l  
     2 p  
     2 p  
     2 a  
     3 a  
     3 n  
     3 a  
     3 n  
     3 a  
     3 b 

Here you can find multiple methods for tokenizing strings:
https://lalitkumarb.wordpress.com/2015/03/04/split-comma-delimited-strings-in-a-table-in-oracle/