Используйте опцию 1. НОМЕР - это НОМЕР внутри Oracle, независимо от точности и масштаба.
Вариант 2 кажется ужасным кошмаром обслуживания с самого начала, и что вы будете делать, если решите изменить точность одного из ваших значений?
РЕДАКТИРОВАТЬ: для иллюстрации рассмотрим:
SQL> CREATE TABLE testing (n1 NUMBER(38,12), n2 NUMBER(5));
Table created
SQL> INSERT INTO testing VALUES (1, 1);
1 row inserted
SQL> INSERT INTO testing VALUES (990, 9900);
1 row inserted
SQL> INSERT INTO testing VALUES (1999999.999999, 1);
1 row inserted
SQL> SELECT n1, DUMP(n1) n1d, n2, DUMP(n2) n2d FROM testing;
N1 N1D N2 N2D
--------------------- ------------------------------ ------ --------------------
1.000000000000 Typ=2 Len=2: 193,2 1 Typ=2 Len=2: 193,2
990.000000000000 Typ=2 Len=3: 194,10,91 9900 Typ=2 Len=2: 194,100
1999999.999999000000 Typ=2 Len=8: 196,2,100,100,100 1 Typ=2 Len=2: 193,2
,100,100,100
SQL>
Нет разницы в хранении. Сохраненная длина зависит от данных, а не от точности / масштаба определения столбца.
Эта ссылка дает довольно хорошее объяснение того, как хранится тип NUMBER. Это не так просто, как сравнение значений, чтобы получить представление о том, сколько памяти потребуется для данного числа. Например, для хранения числа 990 требуется 3 байта, а для хранения 9900 - только 2 байта.