Aquí tienes:
select length('123-345-566') - length(replace('123-345-566','-',null))
from dual;
Técnicamente, si la cadena que desea verificar contiene solo el carácter que desea contar, la consulta anterior devolverá NULL; la siguiente consulta dará la respuesta correcta en todos los casos:
select coalesce(length('123-345-566') - length(replace('123-345-566','-',null)), length('123-345-566'), 0)
from dual;
El 0 final en coalesce
detecta el caso en el que está contando en una cadena vacía (es decir, NULL, porque length(NULL) =NULL en ORACLE).