We have a v10.0.1 database that has had a lot of data removed, and has now been rebuilt. There are a few rather vague indications that the statistics may be out of date and causing some odd plans. We don't know this is the case but it seems something worth eliminating.

My question is whether it is safe to run CREATE STATISTICS when there is any other activity in the database or should we take it off line (to other users) while this is done. Obviously we would chose a quite time, but that isn't the same as no other activity.

The docs only say "The process of running CREATE STATISTICS performs a complete scan of the table. For this reason, careful consideration should be made before issuing a CREATE STATISTICS statement."

Did the rebuild include LOAD STATISTICS statements? (check the reload.sql file if you have it)

FWIW the V10 Help topic Updating column statistics says this: "You can set whether to update column statistics using database options. The update_statistics database option controls whether to update column statistics during execution of queries, while the collect_statistics_on_dml_updates database option controls whether to update the statistics during the execution of data-altering DML statements such as LOAD, INSERT, DELETE, and UPDATE."

I am unaware of issues related to running CREATE STATISTICS during production operation.

That said, however, I would think twice about running the statement(s) during peak production, especially on a larger database file. Executing the statement will alter the cache contents and consequently can have negative affects on production queries. It will also (naturally) cause considerable sequential I/O to the disk.