because /*+ APPEND */ only works with insert SELECT, never with values - fortunately!!!!
If you understand what append does, you would know why using it with a single row insert would be "not smart" (it never reuses existing allocate space, you would allocate new space above the high water mark and put one row per block!!!!!!! it would be about as wasteful as you can get)
ops$tkyte%ORA10GR2> drop table t;
Table dropped.
ops$tkyte%ORA10GR2> create table t ( x int );
Table created.
ops$tkyte%ORA10GR2> begin
2 for i in 1 .. 1000
3 loop
4 insert /*+ append */ into t select 1 from dual;
5 commit;
6 end loop;
7 end;
8 /
PL/SQL procedure successfully completed.
ops$tkyte%ORA10GR2>
ops$tkyte%ORA10GR2> exec show_space( 'T' )
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 0
Full Blocks ..................... 1,000<b>
Total Blocks............................ 1,024</b>
Total Bytes............................. 8,388,608
Total MBytes............................ 8
Unused Blocks........................... 0
Unused Bytes............................ 0
Last Used Ext FileId.................... 4
Last Used Ext BlockId................... 22,025
Last Used Block......................... 128
PL/SQL procedure successfully completed.
ops$tkyte%ORA10GR2>
ops$tkyte%ORA10GR2> drop table t;
Table dropped.
ops$tkyte%ORA10GR2> create table t ( x int );
Table created.
ops$tkyte%ORA10GR2> begin
2 for i in 1 .. 1000
3 loop
4 insert /*+ append */ into t values ( 1 );
5 commit;
6 end loop;
7 end;
8 /
PL/SQL procedure successfully completed.
ops$tkyte%ORA10GR2>
ops$tkyte%ORA10GR2> exec show_space( 'T' )
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 4
Full Blocks ..................... 1<b>
Total Blocks............................ 8</b>
Total Bytes............................. 65,536
Total MBytes............................ 0
Unused Blocks........................... 0
Unused Bytes............................ 0
Last Used Ext FileId.................... 4
Last Used Ext BlockId................... 16,169
Last Used Block......................... 8
PL/SQL procedure successfully completed.