Installing Oracle Database Sample Schemas using Data Pump
June 23, 2010
Having a re-usable dump file for installing Oracle Database Sample Schemas is much more convenient than the current method. Would you rather download a compressed file containing one (or several) dump files, including a parameter file suitable for use during an import session or job or use the Oracle Universal Installer?
I wrote an introductory article a few years ago (actually more like six) about the new Oracle Database Sample Schemas you can have installed within a database. The installation method via Oracle Universal Installer has changed a little bit since then. Where and when you install a companion CD probably dissuaded users from even trying to install the schemas in the first place. In fact, if you didn't install the sample schemas in a newly created database (via DBCA) session, the work it would take to undo that decision (that is, do the install later) would be well, let's just say it is almost infinitely harder than it needs to be.
First and foremost, the official documentation for installing after the fact is outright wrong. The documentation references non-existent files and directories, and to make things worse, OTN contributes to the problem by providing watered down versions of (at least) the HR and OE schemas in some of the Oracle by Example modules. On some after-the-fact installations, a spatial data type within one table causes problems during the CREATE TABLE statement (error message about how the database does not support spatial datatypes).
Why not make the sample schemas one of two things (or even both); first, how about a complete zip file in and of itself, containing nothing more than all of the DDL and insert statements? This would be similar to what Microsoft does (or used to do, but another site maintains the files now) in terms of having you download a Windows MSI installer file for a particular database (AdventureWorks and its variations, to name one series of ready-to-go databases). Second, which is a more interesting approach that would reinforce feature usage and practical application, is to simply make the sample schemas a Data Pump export dump file. You could download a compressed file that when expanded would further contain either one dump file, or several dump files (one for each schema). Also included in the package would be a parameter file suitable for use during an import session or job.
With a single dump file and a starter-like parameter file, you would have the opportunity to edit the file for metadata filters (to INCLUDE or EXCLUDE schemas). You could also take care of tablespace mappings if your target database did not include a USERS or EXAMPLES tablespace. The simplicity and efficiency of this approach, compared to the current method (go download a half-GB file, install it into an existing Oracle home, start watching Oracle TV, aka OUI screenshots), and well, I'm sure you get the idea. The problem is that Oracle Corporation does not.
Just out of curiosity, when you do install Oracle right now, and when you get to the Database Configuration Assistant phase where the seed database is being created, where are the DDL and insert statements coming from? The point of the question is that we can deduce Oracle has a method of doing the schema creation and data population today, but it is not surfaced to us (the users) in a convenient or consistently accessible manner.
Virtually all code snippets and examples within the entire documentation collection for a release are based upon one or more of the sample schemas. The documentation and access to the sample schemas should go hand-in-hand as far as ease of access is concerned. I can see having the other somewhat less than mainstream example sets being installed under the current method. The two people who actually use XML DB, for example, probably aren't ever going to complain about what it takes to install XML DB examples. They're probably happy enough knowing the examples exist in the first place, now if we can only figure out what XML DB can be used for.
Yet another variation for installation, also reinforcing feature usage and exposure to relatively more advanced tasks would be to have the schemas contained within a standalone database file. How could you take a standalone data file and plug it into an existing database? Isn't that the whole idea of transportable tablespaces? So along with the datafile comes one other file, namely, the Data Pump export dump file of the tablespace's metadata.
To back up words with action, I'll get the ball rolling on this and post a dump file that can be downloaded here.
As a review of concepts, suppose you want to install the sample schemas in your Linux development environment. Knowing ahead of time that the dump file you download will have been generated on a Windows platform, is that going to matter to you? If you think so, why is that? Let's go back to pre-9i days, and all you have are original export and import. How did you do a platform migration back then? Export out with the lower version of Oracle's exp executable, whatever it was running on, and then import in with the newer version's imp executable? Where did the platform version come into play? It didn't, and it still doesn't.
It's what's in the dump file that matters, not which platform the file was created on. Or, at least not until we get to the transportable tablespace approach and the byte ordering of the file may matter, depending on the platforms involved. Aside from that one issue, Oracle doesn't care where the dump file was created because what is inside the file is the only thing matters.
The command and export parameter file are going to be as simple as this:
C: > expdp system parfile=export_samples.par
Export parameter file contents
SCHEMAS=HR, BI, OE, SH, IX DUMPFILE=exported_sample_schemas.dmp DIRECTORY=data_pump_dir LOGFILE=exported_sample_schemas.log The import parameter file will include what is shown below. REMAP_SCHEMAS=HR:HR, BI:BI, OE:OE, SH:SH, IX:IX DUMPFILE=exported_sample_schemas.dmp DIRECTORY=data_pump_dir LOGFILE=imported_sample_schemas.log
If Data Pump is new to you, take a look at the Oracle by Example demo of using Data Pump, available here. Having a re-usable dump file for installing the sample schemas is going to be much more convenient than the current method.