Just a note regarding the size of Oracle  NUMBERS will always return 22 as their "size".
This seems to be an Oracle feature. The rest of the documentation is in bug5156.(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_field_size — Devuelve el tamaño de un campo Oracle
   Devuelve el tamaño del campo column Oracle.
  
statementUn identificador de consulta OCI válido.
columnPuede ser el índice del campo (la indexación comienza en 1) o el nombre del campo.
   Devuelve el tamaño del campo field en bytes, o false si ocurre un error
  
Ejemplo #1 Ejemplo con oci_field_size()
<?php
// Creación de la tabla con:
//   CREATE TABLE mytab (number_col NUMBER, varchar2_col varchar2(1),
//                       clob_col CLOB, date_col DATE);
$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}
$stid = oci_parse($conn, "SELECT * FROM mytab");
oci_execute($stid, OCI_DESCRIBE_ONLY); // Utilización de OCI_DESCRIBE_ONLY si ninguna fila es recuperada
echo "<table border=\"1\">\n";
echo "<tr>";
echo "<th>Name</th>";
echo "<th>Type</th>";
echo "<th>Length</th>";
echo "</tr>\n";
$ncols = oci_num_fields($stid);
for ($i = 1; $i <= $ncols; $i++) {
    $column_name  = oci_field_name($stid, $i);
    $column_type  = oci_field_type($stid, $i);
    $column_size  = oci_field_size($stid, $i);
    echo "<tr>";
    echo "<td>$column_name</td>";
    echo "<td>$column_type</td>";
    echo "<td>$column_size</td>";
    echo "</tr>\n";
}
echo "</table>\n";
// Muestra:
//    Name           Type       Length
//    NUMBER_COL    NUMBER        22
//    VARCHAR2_COL  VARCHAR2       1
//    CLOB_COL      CLOB        4000
//    DATE_COL      DATE           7
oci_free_statement($stid);
oci_close($conn);
?>
Just a note regarding the size of Oracle  NUMBERS will always return 22 as their "size".
This seems to be an Oracle feature. The rest of the documentation is in bug5156.