Alter table force fully
As the error message states, you can't just modify the number column to reduce its precision and scale.

Here is one of the workarounds I would use for this situation.

Here is my table. 

SQL&gt; desc t1_num;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(30)


Add another column with the number data type with specified precision. 

SQL&gt; alter table t1_num add id2 number(10);

Table altered.


Update the new column with the data from the old column. 

SQL&gt; update t1_num set id2=id;

1 row updated.

SQL&gt; commit;

Commit complete.


Set the old column to null to change its specification. 

SQL&gt; update t1_num set id=null;

1 row updated.


Modify the column

SQL&gt; alter table t1_num modify id number(10);

Table altered.


Update the column with the original data. 

SQL&gt; update t1_num set id=id2;

1 row updated.

SQL&gt; commit;

Commit complete.


Drop the temp column

SQL&gt; alter table  t1_num drop column id2;

Table altered.

SQL&gt; desc t1_num;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(10)