13.8.3. Migrating from an Embedded Database to an External Oracle Database
The requirements to migrate from Embedded to an External Oracle Database:
- A complete installation of Red Hat Satellite server with an Embedded Database (
satellite.example.com) - A system hosting a running instance of Oracle Database (
oracledb.example.com). See Section 4.3.1, “External Database Requirements” for configuration details.
Procedure 13.4. Migrating to an External Oracle Database
- Shut down all services on the Red Hat Satellite server, but start the Embedded Database with
db-control:[root@satellite ~]# rhn-satellite stop [root@satellite ~]# db-control start - Remove the
rhn-upgradeif it exists on your server:[root@satellite ~]# yum remove rhn-upgrade - Update your database to the latest schema version:
[root@satellite ~]# yum update satellite-schema [root@satellite ~]# spacewalk-schema-upgradeThis ensures that your database version matches the latest version on the External Oracle Database. - Create a directory to hold your database snapshot.
[root@satellite ~]# mkdir ~/dbbackup [root@satellite ~]# cd ~/dbbackup - Export the database using
spacewalk-dump-schema:[root@satellite dbbackup]# spacewalk-dump-schema --to=oracle > migrate-to-oracle.sql - Stop the Embedded Database:
[root@satellite dbbackup]# db-control stop - Exchange the PostgreSQL drivers and configuration scripts with the Oracle drivers and configuration scripts on the Satellite server:
[root@satellite dbbackup]# yum remove -y spacewalk-postgresql [root@satellite dbbackup]# yum install -y spacewalk-oracle [root@satellite dbbackup]# yum remove -y spacewalk-java-postgresql spacewalk-backend-sql-postgresql - Use
spacewalk-setupto populate the External Oracle Database:[root@satellite dbbackup]# spacewalk-setup --db-only --external-oracleThe script asks for your database details so Satellite can connect and populate the database. Enter your External Oracle Database details:** Database: Setting up database connection for Oracle backend. Database service name (SID)? oracledb Database hostname [localhost]? oracledb.example.com Database (listener) port [1521]?The script populates the database.Important
Use the default Oracle Database port (1521) for the Red Hat Satellite database. Using an alternative port can cause SELinux errors. - When the script completes database population, restore the database schema
[root@satellite dbbackup]# spacewalk-sql -i < migrate-to-oracle.sqlImportant
You might need to change SELinux context of the migration script before loading it into Oracle Database:[root@satellite dbbackup]# semanage fcontext -a -t oracle_sqlplus_exec_t /root/dbbackup/migrate-to-oracle.sql [root@satellite dbbackup]# restorecon -v /root/dbbackup/migrate-to-oracle.sqlSimilarly, you might need to change SELinux context of dumped tables:[root@satellite dbbackup]# semanage fcontext -a -t oracle_tmp_t "/tmp/dumped-tables(/.*)?" [root@satellite dbbackup]# restorecon -R -v /tmp/dumped-tables/ - Remove the
postgresql92-serverandspacewalk-dobbypackages from the Satellite server.[root@satellite ~]# yum remove postgresql92-server spacewalk-dobby - Start Red Hat Satellite.
[root@satellite ~]# rhn-satellite start
The database is now migrated from an Embedded Database to an External Oracle Database.