<p>Newish to Oracle programming (from Sybase and MS SQL Server).  What is the "Oracle way" to avoid filling the trans log with large updates?</p>

<p>In my specific case, I'm doing an update of potentially a very large number of rows.  Here's my approach:</p>

<pre><code>UPDATE my_table
SET a_col = null
WHERE my_table_id IN 
(SELECT my_table_id FROM my_table WHERE some_col &lt; some_val and rownum &lt; 1000)
</code></pre>

<p>...where I execute this inside a loop until the updated row count is zero,</p>

<p>Is this the best approach?</p>

<p>Thanks,</p>

Any UPDATE is going to generate redo.  Realistically, a single UPDATE that updates all the rows is going to generate the smallest total amount of redo and run for the shortest period of time.
Assuming you are updating the vast majority of the rows in the table, if there are any indexes that use A_COL, you may be better off disabling those indexes before the update and then doing a rebuild of those indexes with NOLOGGING specified after the massive UPDATE statement.  In addition, if there are any triggers or foreign keys that would need to be fired/ validated as a result of the update, getting rid of those temporarily might be helpful.