# Creating and preparing the database for read-only use

To create databases for use on read-only media, perform these steps.

1. Create and populate the database on read-write media.
2. Commit all transactions and shut down Derby in the prescribed manner. If you do not shut down Derby in the prescribed manner, Derby will need to perform recovery the next time the system boots. Derby cannot perform recovery on read-only media.
3. Delete the tmp directory if one was created within your database directory. If you include this directory, Derby will attempt to delete it and will return errors when attempting to boot a database on read-only media.
4. For the read-only database, set the property derby.storage.tempDirectory to a writable location. Derby needs to write to temporary files for large sorts required by such SQL statements as ORDER BY, UNION, DISTINCT, and GROUP BY. For more information about this property, see Tuning Java DB.

       derby.storage.tempDirectory=c:/temp/mytemp

5. Configure the database to send error messages to a writable file or to an output stream. For information, see Tuning Java DB.

       derby.stream.error.file=c:/temp/mylog.LOG

Be sure to set these properties so that they are deployed with the database.
Parent topic: Creating Derby databases for read-only use
Related concepts
Accessing a read-only database in a zip/jar file
Databases on read-only media and DatabaseMetaData
Embedded systems and properties
Related tasks
Deploying the database on the read-only media
Transferring read-only databases to archive (jar or zip) files
Shutting down Derby or an individual database