We have very large production databases, and small test databases. When our development team runs some queries in the small test database, it runs with a normal performance. But when we run the query in our production environment, the performance often very poor. Is there a solution to emulate the large database to do a test with a database that has less volume?
The DBMS_STATS package gives you the ability to export statistics from a database and import them into another database. You can therefore copy table and index statistics from your production database to your test database. The test database optimizer will then create execution plans based on your production database statistics, and you can evaluate the plans (and compare them with the plans produced with your actual test database statistics). Of course, you want to be sure that your production database statistics are up to date in any event!
You should also compare the initialization parameters of the two databases -- often, a single parameter can make the difference between unacceptable and acceptable performance.