Migrate Oracle using AWS Snowball to AWS RDS
This post will help organizations with a general guidance on what it takes to move Oracle databases from On-Premise data center to AWS using snowball as an option. Organizations has data size ranging from few hundred gigabytes to terabytes and petabytes in few cases[1]. My personal experience has been with few terabytes of data and I believe the same technique should work for petabytes as well.
I would like to point out that AWS offers DMS (Data Migration Service) which can be used to transfer data across two database engines. But we will not cover that topic under this post and that is one consideration for the readers to investigate.
The first step in the process is to estimate the data size and order snowball. Snowball device needs to be shipped and their are few stages it goes through before getting delivered to the destination. During estimation add buffer days for any unforeseen circumstances that would cause delay. Since these are devices on inventory its similar to rental car. The requested size may not be available in the region and we need to change requested size if this happen.
Snowball needs a few prerequisites and AWS has provided them in their documentation. Please refer to the link [2]. Also for most of the organizations data needs to be secure and encrypted. Snowball integrations with S3 and KMS and needs permission for few AWS services. Refer [3] for the authentication and IAM details.
When migrating data from on premise, the first question to answer is how to take the dump of the existing database. This is a key because today the native RMAN backup restore to AWS RDS is not supported. If the exports are performed with RMAN it becomes difficult to redo the entire operation and we might end up with suboptimal solutions
- Having to perform taking back up from the original source and reship using snowball. (OR)
- Temporarily create EC2 instances, install Oracle and import data from RMAN backup.
One suggestion is to create export dump in both oracle pump and RMAN format if there is sufficient space in the snowball device. Once the backups are transferred to snowball device create a shipment back to amazon. Keep an eye on the progress and there should be notifications to the account with status. In case if the snowball job has not started and stuck it could be permission issues (either S3 bucket or KMS key used during encryption) or something related to device.
Data import will automatically start to the S3 bucket provided in the snowball configuration job if there were no issues.
While the data transfer is happening to S3 prepare the AWS RDS destination database. Ensure that the database has atleast twice the capacity of data that needs to be imported. Create schemas and their tablespace. Tablespaces should have sufficient size for data to be imported. Also since the data is alone imported any roles, temporary table-space and indexes that were present in the original source database needs to be created. Import data schema by schema using [4].
Validate the data before calling the process complete. This is a high level post and reach out to me for more details
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html
- https://docs.aws.amazon.com/snowball/latest/ug/whatissnowball.html
- Authorization and Access Control
- https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Procedural.Importing.html#Oracle.Procedural.Importing.DataPump.Step4