How to update foreign keys in a large fact table using FORALL?
I think this will do the trick, unless I have missed something. It has the benefit of less and more maintainable code, and performance wise it will likely outperform PL/SQL versions.

MERGE INTO tbl_big_table big
USING (
  SELECT 
    per_c_period_orig, 
    per_c_period
  FROM tbl_catalog
  ORDER BY per_c_period
) small
ON (big.per_c_period_orig = small.per_c_period_orig)
WHEN MATCHED THEN 
  UPDATE SET big.per_c_period = small.per_c_period;

COMMIT;