Think backwards. Leave 8i up as production and progress your changes to the 10g database, using 10g as parallel. Once you are assured that all transactions work, then convert finally to 10g and archive the old 8i database. Do not be too fast to make 10g production.
Second question – best practices. Create a test environment to parallel production, upgrade test to 10g and parallel enter all (or representative) transactions in test. Once satisfied with test, upgrade production. Keep two environments forever, using test for development and enhancement, and then progress approved changes after testing into production.