Using the same sequence twice in a PL/SQL statement
This is the expected behaviour of nextval as documented:


  Within a single SQL statement containing a reference to NEXTVAL, Oracle increments the sequence once:
  
  
  For each row returned by the outer query block of a SELECT statement
  
  
  [...] If any of these locations contains more than one reference to NEXTVAL, then Oracle increments the sequence once and returns the same value for all occurrences of NEXTVAL.


This means that you won't be able to use plain SQL to overcome this limitation: you will need some PL/SQL. Either a trigger that populates both fields or a function that wraps the sequence call. Here's an example with such a function with 11g:

SQL&gt; create sequence table_seq;

Sequence created.

SQL&gt; create table test (sort_nr number, text_id number, unit_id number);

Table created.

SQL&gt; create or replace function getid return number is begin return table_seq.nextval; end;
  2  /

Function created.

SQL&gt; insert into test values (1, getid, getid);

1 row created.

SQL&gt; select * from test;

   SORT_NR    TEXT_ID    UNIT_ID
---------- ---------- ----------
         1          1          2