Substitution rules are designed to replace data in a table column with realistic looking but random non-meaningful data. The choice of the replacement data is configurable by associating a Data Set with the rule. A variety of Data Sets are available to provide a wide range of realistic looking data.
For example, a column containing customer last names could be "Masked" by implementing a Substitution rule on it using the Random Last Names Data Set. When the Substitution rule is executed as part of the run of the Masking Set, random last names would be generated and substituted in for each real customer last name. Thus the true last name of the customer would be hidden (preserving privacy and security) but the remaining data would still be referentially relevant and usable as a test system.
Once the rule has begun to execute, the substitution continues until all rows in the table (or a subset if a WHERE clause option was specified) are updated with the new data. Commits happen at user configurable intervals (every 5000 rows is the default).
There can be any number of Substitution rules on any columns in any table in a schema. If you apply a Substitution Rule to a column that is used in a primary key or unique index then the index will have to be dropped while the Substitution rule is executing. The uniqueness of the substituted data is highly dependent on the type of Data Set chosen for substitution. Some Data Sets have options to guarantee uniqueness and some do not.
In general, it is not appropriate to apply Substitution rules to columns involved in foreign key relationships (either as the parent or child) since this will invalidate the foreign key and make it impossible to enable.
Substitution rules do use options. Options are associated with the rule when it is created using the New Substitution Rule dialog box and can be adjusted at any time using the Options panel on the Set Rules tab.

The available options for Substitution rules are discussed in detail in the following help files.