{"id":887,"date":"2026-04-16T13:48:02","date_gmt":"2026-04-16T13:48:02","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-database-migration-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management\/"},"modified":"2026-04-16T13:48:02","modified_gmt":"2026-04-16T13:48:02","slug":"oracle-cloud-database-migration-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-database-migration-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-data-management\/","title":{"rendered":"Oracle Cloud Database Migration Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Data Management"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Data Management<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Oracle Cloud <strong>Database Migration<\/strong> is an Oracle Cloud Infrastructure (OCI) service designed to help you move Oracle databases from on-premises or other environments into Oracle Cloud\u2014more reliably and with less manual coordination than \u201croll-your-own\u201d migrations.<\/p>\n\n\n\n<p>In simple terms: <strong>Database Migration helps you copy an existing Oracle database into Oracle Cloud<\/strong>, guiding you through connections, prerequisites, and migration execution (offline or online, depending on your scenario and what Oracle supports for your source\/target combination).<\/p>\n\n\n\n<p>Technically, Database Migration is an OCI control-plane service that orchestrates migration workflows (such as schema\/data movement, validation, and cutover steps) using supported migration methods and connectivity models. It integrates with core OCI services (Identity and Access Management, networking, logging\/auditing, Object Storage, and sometimes Vault), and can involve a <strong>migration agent<\/strong> in your network for private connectivity scenarios.<\/p>\n\n\n\n<p>The problem it solves: database migrations fail most often due to underestimated complexity\u2014networking, credentials, staging storage, validation, and cutover planning. Database Migration provides a structured, repeatable workflow to reduce human error, improve visibility, and standardize operations.<\/p>\n\n\n\n<blockquote>\n<p>Naming note: The official OCI service is commonly referred to as <strong>Database Migration<\/strong> in the OCI Console and documentation. If you encounter older references like \u201cDMS\u201d (Database Migration Service) in blogs, verify terminology in current OCI docs.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Database Migration?<\/h2>\n\n\n\n<p><strong>Official purpose (OCI):<\/strong> Database Migration helps you migrate Oracle databases to Oracle Cloud database targets by providing an orchestration layer for migration tasks, connectivity, validation, and tracking.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (high-level)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create and manage <strong>migration projects<\/strong> (migrations) and track execution status.<\/li>\n<li>Define <strong>source<\/strong> and <strong>target<\/strong> database connections.<\/li>\n<li>Support <strong>offline<\/strong> migration patterns (typically relying on export\/import or backup\/restore style mechanics, depending on supported paths).<\/li>\n<li>Support <strong>online<\/strong> migration patterns (commonly involving Oracle replication technology\u2014verify exact supported online approaches and prerequisites in the official docs).<\/li>\n<li>Provide migration visibility: statuses, work requests, and operational tracking.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Migration resource<\/strong>: Defines <em>what<\/em> you\u2019re migrating (source\/target pairing, migration type, options).<\/li>\n<li><strong>Connection resources<\/strong>: Store connectivity information (endpoints, credentials references, network routing model).<\/li>\n<li><strong>Agent (when applicable)<\/strong>: A component installed in your network to enable migrations when the source\/target aren\u2019t directly reachable from OCI public endpoints.<\/li>\n<li><strong>Jobs \/ work requests<\/strong>: Execution units and tracking objects that show progress and failures.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed orchestration service<\/strong> in OCI (control plane), coordinating supported migration methods and connectivity.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope: regional and compartment-based<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database Migration is generally a <strong>regional<\/strong> OCI service:<\/li>\n<li>You create and operate migrations in a specific <strong>region<\/strong>.<\/li>\n<li>Resources live in <strong>compartments<\/strong> and are governed by <strong>IAM policies<\/strong>.<\/li>\n<li>Your source database can be anywhere, as long as supported connectivity and prerequisites are met.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Fit in the Oracle Cloud ecosystem<\/h3>\n\n\n\n<p>Database Migration is part of OCI\u2019s <strong>Data Management<\/strong> portfolio and is typically used alongside:\n&#8211; <strong>Oracle Cloud Networking (VCN, subnets, security lists\/NSGs, DRG, VPN\/FastConnect)<\/strong>\n&#8211; <strong>Object Storage<\/strong> (often used for staging artifacts for offline migrations\u2014verify per migration method)\n&#8211; <strong>Vault<\/strong> (for secrets\/certificates in more secure designs\u2014verify exact integration requirements)\n&#8211; <strong>Logging, Monitoring, Events, Audit<\/strong>\n&#8211; Target database services such as <strong>Autonomous Database<\/strong>, <strong>Base Database Service<\/strong>, and <strong>Exadata Database Service<\/strong> (supported combinations vary\u2014verify in docs)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Database Migration?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reduce migration risk<\/strong>: A structured workflow lowers the chance of missed steps during high-stakes cutovers.<\/li>\n<li><strong>Faster time to cloud adoption<\/strong>: Standardized migrations reduce repeated engineering effort.<\/li>\n<li><strong>Operational visibility<\/strong>: Clear tracking helps stakeholders understand readiness, progress, and blockers.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repeatable migration runs<\/strong>: More consistent than ad-hoc scripts across teams.<\/li>\n<li><strong>Supports multiple connectivity patterns<\/strong>: Public endpoints, private networks, and agent-based access.<\/li>\n<li><strong>Validation and execution tracking<\/strong>: Helps detect failures earlier.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Centralized governance<\/strong>: IAM policies and compartments bring migrations under organizational control.<\/li>\n<li><strong>Auditable actions<\/strong>: OCI Audit can track who created\/changed migration resources.<\/li>\n<li><strong>Separation of duties<\/strong>: You can separate network admins, DBAs, and cloud operators.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoid \u201cshadow migrations\u201d using uncontrolled credentials and untracked data copies.<\/li>\n<li>Use OCI IAM, compartments, and (where supported) Vault-backed secrets.<\/li>\n<li>Reduce broad firewall openings by using private routing\/agent patterns (preferred over public exposure).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enables patterns that can scale with large databases when paired with appropriate network throughput and staging design.<\/li>\n<li>Helps coordinate cutover steps so performance-related pitfalls (like underprovisioned target compute\/storage) are caught earlier.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose Database Migration<\/h3>\n\n\n\n<p>Choose it when:\n&#8211; You are migrating <strong>Oracle Database to Oracle Database targets in OCI<\/strong>.\n&#8211; You need a <strong>guided workflow<\/strong> with tracking, auditability, and repeatability.\n&#8211; You want a managed orchestration layer rather than building and maintaining custom migration tooling.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<p>Don\u2019t choose it when:\n&#8211; Your source is <strong>non-Oracle<\/strong> (unless OCI explicitly documents support for that source\u2014verify in official docs).\n&#8211; You need a bespoke migration that isn\u2019t supported by the service\u2019s migration types.\n&#8211; Your organization already standardized on a different Oracle migration framework\/tooling (for example, a tool-driven approach managed entirely by DBAs) and Database Migration doesn\u2019t add operational value.\n&#8211; You require absolute control over every command and step and prefer fully manual migrations (though you still might use Database Migration for tracking\/standardization).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Database Migration used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Finance and banking (regulated migrations, audit requirements)<\/li>\n<li>Healthcare (compliance-driven data handling)<\/li>\n<li>Retail\/e-commerce (cutover planning, minimal downtime)<\/li>\n<li>SaaS providers modernizing infrastructure<\/li>\n<li>Manufacturing and logistics (ERP\/SCM databases)<\/li>\n<li>Public sector (governance and controlled change management)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud platform engineering teams standardizing OCI landing zones<\/li>\n<li>DBAs and database reliability engineers (DBRE)<\/li>\n<li>SRE\/operations teams supporting cutovers and incident response<\/li>\n<li>DevOps teams migrating CI\/CD-backed app stacks<\/li>\n<li>Security teams ensuring secrets\/network posture are controlled<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oracle-backed line-of-business applications<\/li>\n<li>ERP\/CRM systems (where Oracle is common)<\/li>\n<li>Multi-tenant SaaS schemas<\/li>\n<li>Data marts and analytics databases (when Oracle is the backend)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>On-prem Oracle to OCI target (hybrid network via VPN\/FastConnect)<\/li>\n<li>Oracle in another cloud to OCI target (inter-cloud connectivity)<\/li>\n<li>OCI-to-OCI migrations across compartments\/regions (useful for reorganizations\u2014verify supported use cases)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dev\/test<\/strong>: dry runs, performance baselining, validating networking and IAM.<\/li>\n<li><strong>Production<\/strong>: careful cutover planning, repeatable runbooks, change windows, rollback strategy, and evidence for audits.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Oracle Cloud Database Migration is commonly used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Lift-and-shift an on-prem Oracle database to OCI<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> On-prem hardware refresh deadlines and data center exit.<\/li>\n<li><strong>Why this fits:<\/strong> Provides a managed workflow for executing a supported migration path with tracking.<\/li>\n<li><strong>Example:<\/strong> A manufacturing firm migrates an Oracle 19c database from on-prem to OCI Base Database Service.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Migrate to Autonomous Database for managed operations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> High operational overhead for patching, backups, and tuning.<\/li>\n<li><strong>Why this fits:<\/strong> Database Migration can orchestrate movement to Autonomous Database (supported paths vary).<\/li>\n<li><strong>Example:<\/strong> A SaaS team moves a reporting schema into Autonomous Data Warehouse to reduce DBA toil.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Cross-network migration using agent-based private connectivity<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Source database is not publicly reachable and cannot be exposed.<\/li>\n<li><strong>Why this fits:<\/strong> Agent patterns can keep database endpoints private while still enabling migration.<\/li>\n<li><strong>Example:<\/strong> A bank migrates a database over private VPN with strict firewall rules.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Pre-production rehearsal (dry run) to reduce cutover risk<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Production cutover fails due to untested assumptions.<\/li>\n<li><strong>Why this fits:<\/strong> Repeatable migrations enable rehearsals and predictable runbooks.<\/li>\n<li><strong>Example:<\/strong> Run a staging migration weekly until timing and validation are consistent.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Datacenter consolidation and compartment restructuring<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Multiple teams have databases scattered across environments with inconsistent controls.<\/li>\n<li><strong>Why this fits:<\/strong> Database Migration centralizes migration operations in OCI compartments with IAM policies.<\/li>\n<li><strong>Example:<\/strong> A large enterprise consolidates business units into standardized OCI compartments.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Move Oracle databases from IaaS VM hosting into OCI database services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Self-managed VM databases are hard to patch and back up reliably.<\/li>\n<li><strong>Why this fits:<\/strong> Provides a path to managed OCI database targets (verify which targets are supported).<\/li>\n<li><strong>Example:<\/strong> A team migrates from Oracle on VMs to Exadata Database Service for performance.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Standardize compliance evidence for migrations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Auditors request evidence of access control and change tracking.<\/li>\n<li><strong>Why this fits:<\/strong> OCI Audit + migration resource tracking supports compliance narratives.<\/li>\n<li><strong>Example:<\/strong> A healthcare provider produces audit logs and migration status reports.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Migrate with minimal downtime using online replication (where supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Business cannot tolerate long downtime windows.<\/li>\n<li><strong>Why this fits:<\/strong> Online migrations (often replication-based) can reduce cutover downtime. Verify required components.<\/li>\n<li><strong>Example:<\/strong> An e-commerce platform uses online migration techniques to keep orders flowing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Create repeatable \u201cmigration factories\u201d for many databases<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Portfolio migration requires consistent patterns across dozens\/hundreds of DBs.<\/li>\n<li><strong>Why this fits:<\/strong> Standardized connection\/migration templates and governance reduce variability.<\/li>\n<li><strong>Example:<\/strong> A platform team builds a migration playbook and executes waves of migrations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Hybrid migration with limited bandwidth and staged transfers<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> WAN bandwidth constraints slow down migration.<\/li>\n<li><strong>Why this fits:<\/strong> Staging via Object Storage and controlled scheduling can help (depending on method).<\/li>\n<li><strong>Example:<\/strong> Export is staged and uploaded during off-peak hours; import runs during change window.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Migrate a database with strict network segmentation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Source network cannot route directly to target; only a jump segment is allowed.<\/li>\n<li><strong>Why this fits:<\/strong> An agent in the permitted segment can bridge connectivity (verify supported topology).<\/li>\n<li><strong>Example:<\/strong> Agent runs in a transit subnet with controlled routing to both sides.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Operational modernization: integrate migrations with OCI governance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Migrations are performed with personal credentials and ad-hoc infrastructure.<\/li>\n<li><strong>Why this fits:<\/strong> Central IAM policies, compartments, tags, and audit reduce operational risk.<\/li>\n<li><strong>Example:<\/strong> Shared services team implements tagging policies and audit reviews for every migration.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Feature availability depends on region and specific source\/target combinations. Always confirm in the official support matrix.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">1) Migration orchestration and lifecycle management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you define a migration, configure its parameters, and track execution.<\/li>\n<li><strong>Why it matters:<\/strong> Migrations are multi-step; orchestration reduces missed dependencies.<\/li>\n<li><strong>Practical benefit:<\/strong> Clear visibility into \u201cconfigured \/ validating \/ running \/ failed \/ completed\u201d.<\/li>\n<li><strong>Caveats:<\/strong> Not every migration approach is supported; some complex cases still require manual steps.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Source and target connection management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Stores connection endpoints and access settings to source\/target databases.<\/li>\n<li><strong>Why it matters:<\/strong> Connectivity is the most common cause of migration failures.<\/li>\n<li><strong>Practical benefit:<\/strong> Reuse connections across migrations; reduce misconfiguration.<\/li>\n<li><strong>Caveats:<\/strong> Credential handling may require integration with other OCI services; verify best practice in docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Agent support for private network access (when applicable)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Enables migrations when databases aren\u2019t publicly accessible.<\/li>\n<li><strong>Why it matters:<\/strong> Secure designs avoid exposing database ports to the public internet.<\/li>\n<li><strong>Practical benefit:<\/strong> Keep databases private, migrate over VCN\/VPN\/FastConnect.<\/li>\n<li><strong>Caveats:<\/strong> Requires installing\/maintaining agent, OS access, outbound connectivity, and patching.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Offline migration workflows (supported methods vary)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Performs migration using offline patterns (often export\/import or staged transfer).<\/li>\n<li><strong>Why it matters:<\/strong> Offline migration can be simpler and cheaper for small\/medium databases.<\/li>\n<li><strong>Practical benefit:<\/strong> Predictable process; good for dev\/test and many production workloads with planned downtime.<\/li>\n<li><strong>Caveats:<\/strong> Requires downtime window; large databases can take significant time.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Online migration workflows (where supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Reduces downtime by using replication-based approaches.<\/li>\n<li><strong>Why it matters:<\/strong> Some businesses can\u2019t afford extended downtime.<\/li>\n<li><strong>Practical benefit:<\/strong> Shorter cutover windows, controlled switchover.<\/li>\n<li><strong>Caveats:<\/strong> Typically more complex, may require additional products\/components (for example, Oracle replication tooling). Verify prerequisites and licensing implications.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Status, work requests, and operational tracking<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Exposes progress and failure information through OCI\u2019s operational model.<\/li>\n<li><strong>Why it matters:<\/strong> Operations teams need consistent observability for runbooks and incident response.<\/li>\n<li><strong>Practical benefit:<\/strong> Faster troubleshooting; easier coordination during cutover.<\/li>\n<li><strong>Caveats:<\/strong> Depth of logs\/errors can vary; sometimes you still need to inspect database logs directly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) IAM-governed access in compartments<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Uses OCI IAM policies to control who can create\/modify\/run migrations.<\/li>\n<li><strong>Why it matters:<\/strong> Prevents unauthorized data movement.<\/li>\n<li><strong>Practical benefit:<\/strong> Aligns with enterprise governance and separation of duties.<\/li>\n<li><strong>Caveats:<\/strong> Incorrect policies are a common blocker; plan IAM early.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Integrations with OCI services (common patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Commonly works with Object Storage (staging), Vault (secrets), Logging\/Audit, and Networking.<\/li>\n<li><strong>Why it matters:<\/strong> Migrations are cross-service workflows.<\/li>\n<li><strong>Practical benefit:<\/strong> More secure and manageable operations.<\/li>\n<li><strong>Caveats:<\/strong> Integration specifics depend on migration type; confirm required permissions and components.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>Database Migration has a managed <strong>control plane<\/strong> in OCI. You define migration resources (connections and migrations). When you run a migration, the service coordinates data movement using supported methods.<\/p>\n\n\n\n<p>Common execution patterns:\n&#8211; <strong>Direct connectivity<\/strong>: Source\/target are reachable (public endpoints or routable private networking).\n&#8211; <strong>Agent-based connectivity<\/strong>: An agent in your network reaches source\/target and communicates with OCI\u2019s control plane.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (conceptual)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>User\/API creates <strong>connections<\/strong> and a <strong>migration<\/strong> in an OCI compartment.<\/li>\n<li>Database Migration validates connectivity and prerequisites.<\/li>\n<li>During execution, data movement occurs via the supported method:\n   &#8211; Offline: export\/stage\/import (often staging via Object Storage)\n   &#8211; Online: replication\/switchover steps (verify prerequisites)<\/li>\n<li>The service updates migration status and work requests.<\/li>\n<li>Operations teams validate post-migration and complete cutover.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations and dependencies<\/h3>\n\n\n\n<p>Common OCI dependencies:\n&#8211; <strong>IAM<\/strong>: policies for managing migrations and access to dependent resources\n&#8211; <strong>VCN<\/strong>: routing, security lists\/NSGs, private endpoints\n&#8211; <strong>Object Storage<\/strong>: staging migration artifacts in many offline patterns (verify exact method)\n&#8211; <strong>Vault<\/strong>: storing secrets\/wallets\/certificates (in more secure implementations\u2014verify)\n&#8211; <strong>Audit \/ Logging \/ Monitoring<\/strong>: governance and operational visibility<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Administrative access uses <strong>OCI IAM<\/strong> (users, groups, dynamic groups, policies).<\/li>\n<li>Service-to-service access typically uses <strong>OCI service principals<\/strong> and IAM policies.<\/li>\n<li>Database credentials must be handled carefully\u2014prefer Vault where supported and practical.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You must plan:<\/li>\n<li>DNS resolution for database hostnames<\/li>\n<li>TCP connectivity (listener ports, TCPS where applicable)<\/li>\n<li>Private routing (DRG\/VPN\/FastConnect for on-prem)<\/li>\n<li>Egress controls and NAT (for agent outbound connectivity)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Audit<\/strong>: tracks API calls that create\/update migration resources.<\/li>\n<li><strong>Work requests<\/strong>: provide lifecycle status (created\/running\/succeeded\/failed).<\/li>\n<li><strong>Logging\/metrics<\/strong>: availability varies by service features; verify in official docs. Always plan to collect:<\/li>\n<li>Agent logs (if used)<\/li>\n<li>Database alert logs<\/li>\n<li>OS logs for connectivity and storage constraints<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[Engineer \/ DBA] --&gt;|OCI Console \/ API| DMS[OCI Database Migration&lt;br\/&gt;Control Plane]\n  DMS --&gt; C1[Source Connection]\n  DMS --&gt; C2[Target Connection]\n  C1 --&gt; S[(Source Oracle DB)]\n  C2 --&gt; T[(Target Oracle DB on OCI)]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph OnPrem[On-Prem \/ Source Network]\n    SDB[(Source Oracle Database)]\n    AG[Migration Agent&lt;br\/&gt;(optional)]\n  end\n\n  subgraph OCI[Oracle Cloud (OCI Region)]\n    subgraph VCN[VCN]\n      TSUB[Target Subnet]\n      TDB[(Target Oracle Database Service)]\n      NAT[NAT Gateway \/ Egress]\n    end\n\n    OBJ[(Object Storage Bucket&lt;br\/&gt;(staging, if used))]\n    VAULT[(OCI Vault&lt;br\/&gt;(secrets\/wallets, if used))]\n    DMS[OCI Database Migration&lt;br\/&gt;Control Plane]\n    IAM[IAM Policies \/ Compartments]\n    AUD[Audit \/ Logging \/ Work Requests]\n  end\n\n  U[Operators \/ DBAs] --&gt; DMS\n  DMS --&gt; AUD\n  IAM --&gt; DMS\n\n  AG --&gt;|Outbound HTTPS to OCI endpoints| DMS\n  AG --&gt;|DB Net| SDB\n  AG --&gt;|DB Net \/ TCPS| TDB\n  DMS --&gt; OBJ\n  DMS --&gt; VAULT\n  OBJ --&gt; TDB\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">OCI tenancy and billing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong>Oracle Cloud<\/strong> tenancy with access to OCI Console.<\/li>\n<li>Billing enabled (even if using Always Free resources, some workflows require valid billing).<\/li>\n<li>A compartment strategy (recommended): separate compartments for <strong>network<\/strong>, <strong>databases<\/strong>, and <strong>migration<\/strong> operations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM permissions (typical)<\/h3>\n\n\n\n<p>You need permissions to:\n&#8211; Manage Database Migration resources\n&#8211; Read target database resources (and possibly manage them, depending on workflow)\n&#8211; Use Object Storage buckets (if staging is used)\n&#8211; Use Vault secrets (if you store credentials\/wallets there)<\/p>\n\n\n\n<p>OCI IAM policies are very specific. Start with least privilege and expand as needed. Examples (verify resource names in current docs):<\/p>\n\n\n\n<pre><code class=\"language-text\">Allow group MigrationAdmins to manage database-migration-family in compartment DataManagement\nAllow group MigrationAdmins to read buckets in compartment DataManagement\nAllow group MigrationAdmins to manage objects in compartment DataManagement\n<\/code><\/pre>\n\n\n\n<p>If Database Migration needs to access Object Storage\/Vault directly as a service, you may need service policies (verify exact policy statements in official docs for Database Migration).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tools<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Console access is enough for most steps.<\/li>\n<li>Recommended:<\/li>\n<li><strong>OCI CLI<\/strong> (for automation and Vault secret creation)<ul>\n<li>Docs: https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/li>\n<\/ul>\n<\/li>\n<li>SQL client tools (one of):<ul>\n<li>SQL*Plus (via Oracle Instant Client)<\/li>\n<li>SQLcl<\/li>\n<li>Oracle SQL Developer (for validation queries)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database Migration is not necessarily available in every region or every OCI realm.<\/li>\n<li>Verify current availability in:<\/li>\n<li>OCI service documentation and region lists (official OCI docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Common limits you should check (names vary):\n&#8211; Number of migration resources per compartment\n&#8211; Number of connections\/agents\n&#8211; Object Storage bucket limits (generally high)\n&#8211; Target database service limits (Autonomous, DB systems)<\/p>\n\n\n\n<p>Check <strong>OCI Service Limits<\/strong> in the Console for Database Migration and dependent services.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (typical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Networking (VCN, subnets, routing, security lists\/NSGs)<\/li>\n<li>Object Storage (for staging, if required by your migration type)<\/li>\n<li>Vault (optional but recommended for secret handling)<\/li>\n<li>Target database service provisioned and reachable<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing model (what to verify)<\/h3>\n\n\n\n<p>OCI pricing for <strong>Database Migration<\/strong> can change over time and may differ by realm\/region. You must confirm the current model in official sources:\n&#8211; OCI pricing page: https:\/\/www.oracle.com\/cloud\/pricing\/\n&#8211; OCI price list: https:\/\/www.oracle.com\/cloud\/price-list\/\n&#8211; OCI cost estimator: https:\/\/www.oracle.com\/cloud\/costestimator.html<\/p>\n\n\n\n<p>In many migration orchestrators, the service itself may be low-cost or $0, while <strong>underlying resources<\/strong> drive costs. <strong>Verify in the official pricing page<\/strong> whether Database Migration has direct hourly\/usage charges in your region.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Common pricing dimensions (practical cost drivers)<\/h3>\n\n\n\n<p>Even if Database Migration has no direct charge, your migration will incur costs in:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Compute instances<\/strong>\n   &#8211; If you run an agent or stage exports on a VM.\n   &#8211; Shape, OCPU count, memory, and hours used.<\/p>\n<\/li>\n<li>\n<p><strong>Object Storage<\/strong>\n   &#8211; Storage used by dump files\/backups and retention duration.\n   &#8211; Requests (PUT\/GET\/LIST) may be a minor contributor.\n   &#8211; Retrieval fees depend on storage tier (Standard vs Archive).<\/p>\n<\/li>\n<li>\n<p><strong>Network egress<\/strong>\n   &#8211; Data transfer out of OCI can be charged.\n   &#8211; Ingress is often cheaper\/free, but confirm in pricing docs.\n   &#8211; Cross-region traffic can be charged.<\/p>\n<\/li>\n<li>\n<p><strong>Target database service<\/strong>\n   &#8211; Autonomous Database (ECPU consumption model) or DB system hourly billing.\n   &#8211; Storage allocated to the target.\n   &#8211; Additional options like backup storage and HA features.<\/p>\n<\/li>\n<li>\n<p><strong>Replication tooling for online migrations<\/strong>\n   &#8211; If online migrations require Oracle replication products, licensing or consumption costs may apply. Verify prerequisites and licensing terms.<\/p>\n<\/li>\n<li>\n<p><strong>Operational overhead<\/strong>\n   &#8211; Staff time for dry runs, performance testing, and cutover support.\n   &#8211; Logging retention and monitoring.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs to plan for<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Extended parallel runs<\/strong>: keeping source and target both running for validation.<\/li>\n<li><strong>Long retention of staging dumps<\/strong> in Object Storage (often forgotten).<\/li>\n<li><strong>Connectivity<\/strong>: VPN\/FastConnect monthly costs (if used).<\/li>\n<li><strong>Backup duplication<\/strong>: target backups + source backups during migration period.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost optimization tips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>private connectivity<\/strong> to reduce security risk; cost impact depends on VPN\/FastConnect.<\/li>\n<li>Minimize staging retention:<\/li>\n<li>Delete dumps after successful validation and rollback window expires.<\/li>\n<li>Right-size temporary compute:<\/li>\n<li>Use larger shape briefly for export\/import, then terminate.<\/li>\n<li>Schedule bandwidth-heavy steps off-peak to avoid congestion (not a direct cost, but can reduce migration duration).<\/li>\n<li>For repeated migrations, standardize automation to reduce human-hours cost.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated numbers)<\/h3>\n\n\n\n<p>A realistic starter migration environment might include:\n&#8211; 1 small compute instance for source DB (or using an existing source)\n&#8211; 1 Object Storage bucket for staging artifacts\n&#8211; 1 target Autonomous Database (Always Free eligible where available, otherwise paid)\n&#8211; Minimal logging retention<\/p>\n\n\n\n<p>Because prices vary by region and service editions, use:\n&#8211; OCI Cost Estimator: https:\/\/www.oracle.com\/cloud\/costestimator.html<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations<\/h3>\n\n\n\n<p>In production, costs often scale with:\n&#8211; Database size (storage + transfer + duration)\n&#8211; Migration duration (parallel-run time)\n&#8211; Network design (FastConnect, multi-region, DR)\n&#8211; HA targets (RAC\/Exadata\/Autonomous HA options)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab demonstrates a <strong>small, real<\/strong> Oracle database migration workflow using <strong>Oracle Cloud Database Migration<\/strong>. It focuses on an <strong>offline<\/strong> migration approach (simpler and cheaper for beginners) and emphasizes secure connectivity and verification.<\/p>\n\n\n\n<p>Because OCI\u2019s Database Migration supports multiple source\/target combinations and the UI evolves, treat this as a practical blueprint and <strong>verify exact screens\/options in the official Database Migration documentation<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Migrate a small schema from a <strong>source Oracle Database<\/strong> to a <strong>target Oracle database in OCI<\/strong>, using <strong>Database Migration<\/strong> to orchestrate the workflow, and validate that the data arrived successfully.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Prepare a source Oracle database (small test schema).\n2. Provision a target database in OCI (Autonomous Database or another OCI Oracle DB target).\n3. Configure required OCI resources (compartment, networking, Object Storage, IAM).\n4. Create Database Migration connections and a migration.\n5. Run validation and execute the migration.\n6. Verify migrated objects and row counts.\n7. Clean up resources to control cost.<\/p>\n\n\n\n<blockquote>\n<p>Low-cost guidance:\n&#8211; If you already have a source Oracle DB, reuse it.\n&#8211; For the target, Autonomous Database may be eligible for Always Free in some tenancies\/regions\u2014verify your tenancy and region eligibility in OCI docs.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Prepare OCI compartment and networking<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Create a safe place for migration resources and ensure basic network connectivity.<\/p>\n\n\n\n<p>1) Create a compartment (recommended):\n&#8211; OCI Console \u2192 Identity &amp; Security \u2192 Compartments \u2192 Create Compartment\n&#8211; Name: <code>data-mgmt-migration-lab<\/code><\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Compartment created and selected for the lab.<\/p>\n\n\n\n<p>2) Create or reuse a VCN:\n&#8211; Networking \u2192 Virtual Cloud Networks \u2192 Start VCN Wizard\n&#8211; Choose a basic VCN with:\n  &#8211; Public subnet (for a temporary lab VM\/bastion)\n  &#8211; Private subnet (optional for target DB private endpoint scenarios)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> VCN and subnets created.<\/p>\n\n\n\n<p>3) Security rules (minimum)\n&#8211; Allow SSH (22) to your VM <strong>only from your IP<\/strong>\n&#8211; Allow Oracle listener port (commonly 1521) only from necessary CIDRs (prefer private routing\/agent approach)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can SSH into the VM after it\u2019s created.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create a source Oracle Database (lab-friendly)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Have a source Oracle database with a small dataset to migrate.<\/p>\n\n\n\n<p>You have two practical options:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Option A (recommended for enterprises):<\/strong> Use an existing on-prem\/source Oracle database that you are allowed to migrate.<\/li>\n<li><strong>Option B (lab):<\/strong> Install Oracle Database XE on an OCI VM.<\/li>\n<\/ul>\n\n\n\n<p>Below is Option B at a high level (installation steps vary by OS and Oracle XE version). Follow Oracle\u2019s official installation instructions for XE for exact commands and prerequisites.<\/p>\n\n\n\n<p>1) Create a compute instance for the source DB\n&#8211; Compute \u2192 Instances \u2192 Create instance\n&#8211; Image: Oracle Linux (or another supported OS for your Oracle DB)\n&#8211; Shape: small\/low-cost for lab (ensure enough memory for Oracle DB)\n&#8211; Place it in the public subnet for SSH access (lab only; production should avoid public DB exposure)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Instance is running and you can SSH to it.<\/p>\n\n\n\n<p>2) Install Oracle Database XE (high-level)\n&#8211; Follow Oracle\u2019s official XE install guide for your selected OS\/version.\n&#8211; Confirm the listener is running and you can connect locally.<\/p>\n\n\n\n<p><strong>Verification (example):<\/strong>\n&#8211; Confirm listener status (command varies by installation)\n&#8211; Connect as a privileged user and create a test schema.<\/p>\n\n\n\n<p>3) Create a small test schema and table (example SQL)\nRun using SQL*Plus\/SQLcl as a privileged user:<\/p>\n\n\n\n<pre><code class=\"language-sql\">-- Example only: adjust to your environment and privileges\nCREATE USER miglab IDENTIFIED BY \"StrongPassword#1\";\nGRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE TO miglab;\n\nALTER SESSION SET CURRENT_SCHEMA = miglab;\n\nCREATE TABLE customers (\n  customer_id NUMBER PRIMARY KEY,\n  name        VARCHAR2(100),\n  created_at  DATE DEFAULT SYSDATE\n);\n\nINSERT INTO customers (customer_id, name) VALUES (1, 'Ada Lovelace');\nINSERT INTO customers (customer_id, name) VALUES (2, 'Grace Hopper');\nCOMMIT;\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> Source schema exists with at least a couple of rows.<\/p>\n\n\n\n<p><strong>Verification query:<\/strong><\/p>\n\n\n\n<pre><code class=\"language-sql\">SELECT COUNT(*) FROM miglab.customers;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Provision the target OCI database<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Create a target database in OCI that Database Migration supports as a target.<\/p>\n\n\n\n<p>Common targets include:\n&#8211; <strong>Autonomous Database<\/strong> (ATP\/ADW)\n&#8211; <strong>Base Database Service<\/strong> DB systems\n&#8211; <strong>Exadata Database Service<\/strong><\/p>\n\n\n\n<p>For a low-cost lab, Autonomous Database may be the easiest (eligibility varies).<\/p>\n\n\n\n<p>1) Create the target database\n&#8211; Oracle Database \u2192 Autonomous Database \u2192 Create Autonomous Database\n&#8211; Set an ADMIN password you will store securely\n&#8211; Choose networking:\n  &#8211; Public endpoint (simpler for a lab, but restrict access)\n  &#8211; Private endpoint (more secure, requires VCN private setup)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Target database state becomes <strong>Available<\/strong>.<\/p>\n\n\n\n<p>2) Collect connection information\n&#8211; Database OCID\n&#8211; Database name\/service names\n&#8211; If Autonomous requires a wallet for client connections in your chosen mode, download\/store it securely (many OCI tools use wallets\/certificates; exact requirements vary\u2014verify in the Database Migration docs and your ADB configuration).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create an Object Storage bucket for staging (if required)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Provide a staging area for offline migration artifacts if your migration method uses it.<\/p>\n\n\n\n<p>1) Create a bucket\n&#8211; Storage \u2192 Object Storage &amp; Archive Storage \u2192 Buckets \u2192 Create Bucket\n&#8211; Name: <code>dbmig-lab-staging<\/code>\n&#8211; Tier: Standard<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Bucket exists.<\/p>\n\n\n\n<p>2) IAM policy to access bucket (conceptual)\nYou must ensure the user\/group running the migration and\/or the Database Migration service has rights to manage objects in the bucket (exact statements depend on how Database Migration accesses Object Storage in your workflow).<\/p>\n\n\n\n<p>If you see authorization failures, revisit IAM policies and verify required policy statements in the official docs.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: (Optional but recommended) Store sensitive material in OCI Vault<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Reduce the use of plaintext secrets.<\/p>\n\n\n\n<p>Depending on how Database Migration accepts credentials\/wallets:\n&#8211; You may store database passwords, connection wallets, or certificates in <strong>OCI Vault<\/strong>.\n&#8211; The exact integration depends on current Database Migration capabilities\u2014<strong>verify in official docs<\/strong>.<\/p>\n\n\n\n<p>High-level steps:\n1) Create a Vault and a master encryption key.\n2) Create secrets for credentials\/certificates.\n3) Grant Database Migration and operators permission to use the secrets.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Secrets exist in Vault and authorized principals can retrieve them.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Install and register the Database Migration agent (only if needed)<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Enable private connectivity when databases aren\u2019t directly reachable.<\/p>\n\n\n\n<p>If your source\/target are in private subnets or on-prem, you often use an agent.<\/p>\n\n\n\n<p>1) In OCI Console:\n&#8211; Database Migration \u2192 Agents \u2192 Create Agent (or equivalent workflow)\n&#8211; Download agent install package \/ get registration key (varies by current implementation)<\/p>\n\n\n\n<p>2) On the VM (agent host):\n&#8211; Install agent per Oracle docs.\n&#8211; Ensure outbound connectivity to required OCI endpoints (HTTPS).\n&#8211; Register the agent.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Agent shows as <strong>Active<\/strong> in OCI Console.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Database Migration \u2192 Agents \u2192 status is healthy\/active.\n&#8211; If it\u2019s not, check agent logs and outbound firewall\/DNS.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Create Database Migration connections<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Define how the service reaches the source and target.<\/p>\n\n\n\n<p>1) Create source connection\n&#8211; Database Migration \u2192 Connections \u2192 Create Connection\n&#8211; Type: Source Oracle Database\n&#8211; Provide:\n  &#8211; Host\/IP, port, service name\/SID (as required)\n  &#8211; Username\/password (or Vault reference if supported)\n  &#8211; Connectivity model (direct or agent-based)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Source connection validates successfully (or at least is created and ready).<\/p>\n\n\n\n<p>2) Create target connection\n&#8211; Create Connection \u2192 Target database type (Autonomous\/DB System as applicable)\n&#8211; Provide:\n  &#8211; Target identifiers (OCID and\/or connect string)\n  &#8211; Credentials\n  &#8211; Wallet\/cert requirements if applicable (verify exact required fields)<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Target connection validates successfully.<\/p>\n\n\n\n<p><strong>Common validation failures:<\/strong>\n&#8211; Wrong service name (e.g., using SID vs SERVICE_NAME)\n&#8211; Network path blocked (NSG\/security list\/routes)\n&#8211; Wrong credentials\n&#8211; Wallet\/certificate mismatch (Autonomous)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Create and run a migration<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Orchestrate an offline migration for the lab schema.<\/p>\n\n\n\n<p>1) Create migration\n&#8211; Database Migration \u2192 Migrations \u2192 Create Migration\n&#8211; Select:\n  &#8211; Source connection\n  &#8211; Target connection\n  &#8211; Migration type: <strong>Offline<\/strong> (or the closest supported offline method for your endpoints)\n  &#8211; Staging bucket if required<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Migration resource is created.<\/p>\n\n\n\n<p>2) Run pre-check \/ validation (if offered)\n&#8211; Start validation\n&#8211; Review warnings and errors<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Validation passes or produces actionable warnings.<\/p>\n\n\n\n<p>3) Start migration\n&#8211; Start the migration job\n&#8211; Monitor work requests, progress, and logs<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Migration completes successfully.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 9: Post-migration validation<\/h3>\n\n\n\n<p><strong>Goal:<\/strong> Prove the data arrived and is usable.<\/p>\n\n\n\n<p>1) Connect to the target DB using your preferred client.\n2) Check schema\/table existence and row counts:<\/p>\n\n\n\n<pre><code class=\"language-sql\">SELECT COUNT(*) FROM miglab.customers;\nSELECT * FROM miglab.customers ORDER BY customer_id;\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You see the same row count (2 in the lab example) and records.<\/p>\n\n\n\n<p>3) Application-level validation (recommended for real systems)\n&#8211; Validate key queries, stored procedures, and performance baselines.\n&#8211; Confirm character set and NLS settings (common gotcha).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use this checklist:\n&#8211; Migration status shows <strong>Succeeded\/Completed<\/strong>\n&#8211; Target contains expected objects\n&#8211; Row counts match for sample tables\n&#8211; Basic query performance is acceptable\n&#8211; No critical errors in:\n  &#8211; Database Migration work requests\n  &#8211; Source\/target database alert logs\n  &#8211; Agent logs (if used)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<p>Common issues and practical fixes:<\/p>\n\n\n\n<p>1) <strong>Connection validation fails (network)<\/strong>\n&#8211; Symptom: timeouts, cannot reach host\/port\n&#8211; Fix:\n  &#8211; Verify NSG\/security list rules for 1521\/TCPS port\n  &#8211; Verify routes and subnet placement\n  &#8211; If private endpoints: ensure agent is used and in correct subnet\n  &#8211; Verify DNS resolution from agent host<\/p>\n\n\n\n<p>2) <strong>Authentication failures<\/strong>\n&#8211; Symptom: invalid username\/password, ORA-01017\n&#8211; Fix:\n  &#8211; Re-enter credentials\n  &#8211; Ensure the user is not locked\/expired\n  &#8211; Confirm the account has required privileges for export\/import approach (varies)<\/p>\n\n\n\n<p>3) <strong>Autonomous wallet\/certificate issues<\/strong>\n&#8211; Symptom: TLS errors, wallet not found, certificate mismatch\n&#8211; Fix:\n  &#8211; Confirm your ADB connection mode and wallet requirements\n  &#8211; Re-download wallet and update the secret\/reference\n  &#8211; Verify mTLS settings in ADB (if configured)<\/p>\n\n\n\n<p>4) <strong>Object Storage authorization failures<\/strong>\n&#8211; Symptom: 403\/NotAuthorizedOrNotFound\n&#8211; Fix:\n  &#8211; Verify IAM policies for bucket\/object access\n  &#8211; Confirm bucket is in the correct compartment\/region\n  &#8211; Confirm the principal (user\/service) used by migration has permissions<\/p>\n\n\n\n<p>5) <strong>Agent not registering<\/strong>\n&#8211; Symptom: agent stuck inactive\/unreachable\n&#8211; Fix:\n  &#8211; Verify outbound HTTPS to OCI endpoints\n  &#8211; Check time sync (NTP) on agent host\n  &#8211; Check agent logs for registration failures\n  &#8211; Verify the registration key\/OCID is correct<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To control costs and reduce risk, delete resources you no longer need:<\/p>\n\n\n\n<p>1) Database Migration resources\n&#8211; Delete migration, connections, and agents (if created)<\/p>\n\n\n\n<p>2) Object Storage\n&#8211; Delete staged objects (dump files) and the bucket (if no longer needed)<\/p>\n\n\n\n<p>3) Compute\n&#8211; Terminate the source VM (if created for lab)<\/p>\n\n\n\n<p>4) Target DB\n&#8211; Stop\/terminate the target database if it\u2019s not Always Free and not needed<\/p>\n\n\n\n<p>5) Vault secrets\n&#8211; Disable\/delete secrets created for the lab (follow your organization\u2019s retention policy)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with a <strong>migration runbook<\/strong>: discovery \u2192 assessment \u2192 dry run \u2192 cutover \u2192 rollback plan.<\/li>\n<li>Prefer <strong>private networking<\/strong> (VPN\/FastConnect, private endpoints) over public exposure.<\/li>\n<li>Use <strong>staging buckets<\/strong> with lifecycle policies (auto-delete after retention window).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a dedicated <strong>migration operator group<\/strong> with least privilege.<\/li>\n<li>Separate roles:<\/li>\n<li>Network admins manage VCN\/DRG<\/li>\n<li>DBAs manage database credentials and DB settings<\/li>\n<li>Migration operators run migrations<\/li>\n<li>Use Vault for secrets where supported and feasible; avoid plaintext credentials in tickets\/docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Time-box parallel runs and staging retention.<\/li>\n<li>Use temporary compute only for the migration window.<\/li>\n<li>Remove old dump files; they silently accumulate cost.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Benchmark migration throughput in a dry run.<\/li>\n<li>Ensure target has adequate IOPS and CPU before cutover.<\/li>\n<li>For large migrations, plan for:<\/li>\n<li>Network throughput constraints<\/li>\n<li>Import\/export tuning (parallelism, staging)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Perform at least one full <strong>rehearsal migration<\/strong> with production-like data volumes.<\/li>\n<li>Define rollback criteria:<\/li>\n<li>If validation fails, revert traffic to source quickly.<\/li>\n<li>Capture configuration snapshots:<\/li>\n<li>NLS settings<\/li>\n<li>Users\/roles<\/li>\n<li>DB links and external integrations<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralize logs:<\/li>\n<li>Migration work requests + agent logs + DB alert logs<\/li>\n<li>Use tagging:<\/li>\n<li><code>env=lab|prod<\/code>, <code>app=...<\/code>, <code>owner=...<\/code>, <code>cost-center=...<\/code><\/li>\n<li>Schedule cutover during a controlled change window with on-call staffing.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Standard naming:<\/li>\n<li><code>src-conn-&lt;app&gt;-&lt;env&gt;<\/code><\/li>\n<li><code>tgt-conn-&lt;app&gt;-&lt;env&gt;<\/code><\/li>\n<li><code>mig-&lt;app&gt;-&lt;env&gt;-&lt;yyyymmdd&gt;<\/code><\/li>\n<li>Tag Object Storage buckets and compute instances used for migration.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Users authenticate via OCI IAM.<\/li>\n<li>Authorization is policy-driven at compartment scope.<\/li>\n<li>Prefer separate compartments for migration resources and production databases.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data at rest:<\/li>\n<li>Object Storage is encrypted at rest by default in OCI.<\/li>\n<li>Databases provide encryption capabilities (Autonomous typically encrypts at rest by default).<\/li>\n<li>Data in transit:<\/li>\n<li>Use TLS\/TCPS where applicable (especially for Autonomous).<\/li>\n<li>Prefer private connectivity to reduce exposure.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not open Oracle listener ports to the internet in production.<\/li>\n<li>If you must use public endpoints temporarily:<\/li>\n<li>Restrict source CIDRs<\/li>\n<li>Use short-lived firewall rules<\/li>\n<li>Monitor connection attempts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoid storing DB passwords in scripts and terminals.<\/li>\n<li>Use OCI Vault for secrets where supported; rotate credentials after migration.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable and review OCI Audit logs for migration-related changes.<\/li>\n<li>Retain evidence for compliance (who executed migrations, when, and what changed).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data residency: ensure target region meets residency requirements.<\/li>\n<li>Access controls: enforce least privilege and MFA for operators.<\/li>\n<li>Change management: tie migrations to approved change tickets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Leaving staging dumps in Object Storage indefinitely<\/li>\n<li>Overly broad IAM policies (<code>manage all-resources in tenancy<\/code>)<\/li>\n<li>Publicly reachable databases during migration<\/li>\n<li>Reusing DBA credentials across environments<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use private endpoints + agent-based connectivity for sensitive migrations.<\/li>\n<li>Put the agent on hardened hosts with:<\/li>\n<li>Minimal inbound access<\/li>\n<li>Regular patching<\/li>\n<li>Restricted outbound rules to required OCI endpoints<\/li>\n<li>Rotate credentials after cutover.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<blockquote>\n<p>These vary by migration type and Oracle continuously updates capabilities\u2014verify the latest documentation.<\/p>\n<\/blockquote>\n\n\n\n<p>Common practical limitations:\n&#8211; <strong>Oracle-to-Oracle focus:<\/strong> Database Migration is primarily for Oracle database migrations; don\u2019t assume non-Oracle sources are supported.\n&#8211; <strong>Version\/feature compatibility:<\/strong> Not all Oracle versions\/features migrate seamlessly (e.g., options, partitioning behavior, NLS differences).\n&#8211; <strong>Autonomous constraints:<\/strong> Some system-level objects and privileged features behave differently in Autonomous databases.\n&#8211; <strong>Network complexity:<\/strong> Private migrations often require agent placement, routing, DNS, and firewall coordination.\n&#8211; <strong>Staging storage growth:<\/strong> Dump files can be large and accumulate quickly.\n&#8211; <strong>Privileges:<\/strong> Export\/import requires the right privileges and directory objects; missing privileges cause runtime failures.\n&#8211; <strong>Character set and NLS issues:<\/strong> Can cause subtle data corruption or query differences if not validated.\n&#8211; <strong>Downtime windows (offline):<\/strong> Offline migrations require planned downtime; stakeholders underestimate time required for large datasets.\n&#8211; <strong>Online migrations may require additional components\/licensing:<\/strong> Verify prerequisites and licensing implications before committing.\n&#8211; <strong>Service limits:<\/strong> Connection count, migration count, and agent limits can block \u201cmigration factory\u201d scaling unless planned.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Alternatives in Oracle Cloud (OCI)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Manual Data Pump \/ RMAN migrations<\/strong>: You run everything yourself.<\/li>\n<li><strong>Oracle Zero Downtime Migration (ZDM)<\/strong>: A separate Oracle tool used for certain Oracle-to-OCI migration patterns (self-managed tooling; verify applicability).<\/li>\n<li><strong>Oracle GoldenGate \/ OCI GoldenGate<\/strong>: Replication technology often used for online migrations and CDC patterns (separate service\/product).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Alternatives in other clouds<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS Database Migration Service (AWS DMS)<\/strong> (not the same as OCI Database Migration): Often used for heterogeneous sources\/targets and CDC.<\/li>\n<li><strong>Azure Database Migration Service<\/strong><\/li>\n<li><strong>Google Cloud Database Migration Service<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Open-source\/self-managed alternatives<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Custom scripts using Data Pump, RMAN, rsync, and orchestrators (Airflow\/Jenkins).<\/li>\n<li>Database replication tooling (depending on Oracle licensing and architecture).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Comparison table<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>OCI Database Migration<\/strong><\/td>\n<td>Oracle-to-OCI migrations needing orchestration<\/td>\n<td>OCI-native governance, tracking, structured workflow<\/td>\n<td>Feature scope depends on supported paths; may require agent and careful IAM<\/td>\n<td>You want standardized OCI migration operations<\/td>\n<\/tr>\n<tr>\n<td>Manual Data Pump \/ RMAN<\/td>\n<td>DBAs needing full control<\/td>\n<td>Maximum control and transparency<\/td>\n<td>More human error risk; harder to standardize and audit<\/td>\n<td>Small number of migrations or highly custom steps<\/td>\n<\/tr>\n<tr>\n<td>Oracle ZDM (self-managed)<\/td>\n<td>Certain Oracle\u2192OCI migration strategies<\/td>\n<td>Designed for Oracle migration patterns<\/td>\n<td>Tooling ownership and operational overhead<\/td>\n<td>You need ZDM-specific capabilities and can operate it<\/td>\n<\/tr>\n<tr>\n<td>OCI GoldenGate<\/td>\n<td>Online replication \/ CDC<\/td>\n<td>Lower downtime, continuous replication<\/td>\n<td>Added complexity and cost\/licensing; operational overhead<\/td>\n<td>Business requires minimal downtime and continuous sync<\/td>\n<\/tr>\n<tr>\n<td>AWS DMS \/ Azure DMS \/ GCP DMS<\/td>\n<td>Cross-cloud\/hybrid with cloud-native tooling<\/td>\n<td>Broad ecosystem integration<\/td>\n<td>Not OCI-native; Oracle specifics vary<\/td>\n<td>Your migration platform is standardized elsewhere<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: regulated on-prem to OCI with private connectivity<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A financial institution must move an Oracle database from on-prem to OCI to meet data center exit deadlines while preserving audit trails and minimizing exposure.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Private connectivity via VPN\/FastConnect into OCI VCN<\/li>\n<li>Database Migration with agent in a controlled subnet<\/li>\n<li>Object Storage staging with short retention and strict IAM<\/li>\n<li>Target on OCI database service sized for performance requirements<\/li>\n<li><strong>Why Database Migration was chosen:<\/strong><\/li>\n<li>Centralized control in OCI compartments<\/li>\n<li>Better tracking and repeatability than manual steps<\/li>\n<li>Stronger audit story with IAM and work requests<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Fewer cutover issues due to rehearsals<\/li>\n<li>Reduced security exceptions (no public DB ports)<\/li>\n<li>Clear audit evidence and operational ownership<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: migrate a single Oracle database to reduce ops toil<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A small SaaS runs Oracle on a VM and spends too much time patching and troubleshooting.<\/li>\n<li><strong>Proposed architecture:<\/strong><\/li>\n<li>Source Oracle database on VM (existing)<\/li>\n<li>Target Autonomous Database (where supported)<\/li>\n<li>Offline migration scheduled during maintenance window<\/li>\n<li><strong>Why Database Migration was chosen:<\/strong><\/li>\n<li>Easier to follow a managed workflow than build scripts<\/li>\n<li>Better visibility for a small team during a high-risk change<\/li>\n<li><strong>Expected outcomes:<\/strong><\/li>\n<li>Simplified operations on the target platform<\/li>\n<li>More predictable backups\/patching (depending on target)<\/li>\n<li>A repeatable process for future environment clones<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<p>1) <strong>Is Oracle Cloud Database Migration the same as AWS DMS?<\/strong><br\/>\nNo. OCI <strong>Database Migration<\/strong> is an Oracle Cloud service focused on Oracle database migration paths supported by OCI. AWS DMS is an AWS service with different capabilities and integrations.<\/p>\n\n\n\n<p>2) <strong>Can Database Migration migrate non-Oracle databases?<\/strong><br\/>\nDo not assume so. Database Migration is primarily positioned for Oracle database migrations. Verify supported source\/target engines in the official docs.<\/p>\n\n\n\n<p>3) <strong>Is Database Migration regional?<\/strong><br\/>\nYes, it operates within an OCI region and uses compartment-scoped resources. Your source can be outside OCI if connectivity is supported.<\/p>\n\n\n\n<p>4) <strong>Do I need an agent?<\/strong><br\/>\nYou may need an agent when your source\/target databases are not directly reachable (private networks, on-prem environments). If both ends are reachable securely without an agent, it might be optional\u2014verify supported connectivity modes.<\/p>\n\n\n\n<p>5) <strong>Does Database Migration support online (low-downtime) migrations?<\/strong><br\/>\nOCI supports online patterns for some scenarios, often involving replication technology. Verify the current online migration prerequisites and supported targets\/sources.<\/p>\n\n\n\n<p>6) <strong>What\u2019s the simplest migration type for beginners?<\/strong><br\/>\nOffline migration for a small schema\/database is usually simplest, assuming you can accept downtime.<\/p>\n\n\n\n<p>7) <strong>Does it use Object Storage?<\/strong><br\/>\nMany offline patterns use staging storage such as Object Storage. Confirm this in the migration method details for your specific path.<\/p>\n\n\n\n<p>8) <strong>How do I secure database credentials during migration?<\/strong><br\/>\nUse least-privilege database accounts, rotate credentials after cutover, and use OCI Vault where supported.<\/p>\n\n\n\n<p>9) <strong>Can I run multiple dry runs?<\/strong><br\/>\nYes\u2014dry runs are strongly recommended. Use dev\/test targets first, then rehearse with production-like data sizes.<\/p>\n\n\n\n<p>10) <strong>How do I estimate downtime?<\/strong><br\/>\nMeasure export time + transfer time + import time + validation time in rehearsals, then add buffer. For large DBs, it\u2019s rarely linear.<\/p>\n\n\n\n<p>11) <strong>What are the most common failure causes?<\/strong><br\/>\nNetworking (ports\/routes\/DNS), wrong credentials, insufficient DB privileges, and missing permissions to staging storage.<\/p>\n\n\n\n<p>12) <strong>Does it handle users\/roles\/grants automatically?<\/strong><br\/>\nDepends on migration method and configuration. Always validate security objects explicitly and compare source vs target.<\/p>\n\n\n\n<p>13) <strong>Can I migrate across OCI regions?<\/strong><br\/>\nPotentially, but cross-region introduces egress costs and latency. Verify supported patterns and plan carefully.<\/p>\n\n\n\n<p>14) <strong>How do I prove success to auditors?<\/strong><br\/>\nKeep change tickets, migration run logs, OCI Audit events, work requests, and validation evidence (row counts\/checksums where possible).<\/p>\n\n\n\n<p>15) <strong>Should I delete staging dump files immediately after migration?<\/strong><br\/>\nNot immediately. Keep them for a defined rollback\/validation window, then delete via lifecycle policies to control cost and risk.<\/p>\n\n\n\n<p>16) <strong>Is Database Migration a replacement for DBAs?<\/strong><br\/>\nNo. It orchestrates workflows, but DBAs still need to plan compatibility, performance, security, validation, and cutover.<\/p>\n\n\n\n<p>17) <strong>What\u2019s the best first step before touching OCI?<\/strong><br\/>\nInventory your source database: size, version, options, NLS settings, dependencies, downtime tolerance, and network constraints.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Database Migration<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>OCI Database Migration documentation: https:\/\/docs.oracle.com\/en-us\/iaas\/database-migration\/<\/td>\n<td>Primary source for current features, setup steps, and supported paths<\/td>\n<\/tr>\n<tr>\n<td>Official documentation (alt entry point)<\/td>\n<td>OCI Database Migration in OCI docs (if redirected): https:\/\/docs.oracle.com\/en-us\/iaas\/<\/td>\n<td>Lets you navigate to the current Database Migration section if URLs change<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>OCI Pricing: https:\/\/www.oracle.com\/cloud\/pricing\/<\/td>\n<td>Verify whether Database Migration has direct charges and understand underlying service costs<\/td>\n<\/tr>\n<tr>\n<td>Official price list<\/td>\n<td>OCI Price List: https:\/\/www.oracle.com\/cloud\/price-list\/<\/td>\n<td>SKU-level details (region and offering dependent)<\/td>\n<\/tr>\n<tr>\n<td>Cost estimator<\/td>\n<td>OCI Cost Estimator: https:\/\/www.oracle.com\/cloud\/costestimator.html<\/td>\n<td>Build realistic estimates for compute, storage, and database targets<\/td>\n<\/tr>\n<tr>\n<td>CLI documentation<\/td>\n<td>OCI CLI install\/use: https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/API\/SDKDocs\/cliinstall.htm<\/td>\n<td>Helps automate setup and integrate with Vault\/compartment operations<\/td>\n<\/tr>\n<tr>\n<td>Architecture guidance<\/td>\n<td>OCI Architecture Center: https:\/\/docs.oracle.com\/en\/solutions\/<\/td>\n<td>Reference architectures and patterns (search for database migration and connectivity patterns)<\/td>\n<\/tr>\n<tr>\n<td>Security guidance<\/td>\n<td>OCI Security documentation: https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/Security\/Concepts\/security.htm<\/td>\n<td>Policies, compartments, network security, and governance practices<\/td>\n<\/tr>\n<tr>\n<td>Storage guidance<\/td>\n<td>Object Storage docs: https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/Object\/Concepts\/objectstorageoverview.htm<\/td>\n<td>Staging bucket setup, lifecycle policies, and access controls<\/td>\n<\/tr>\n<tr>\n<td>Community (use with care)<\/td>\n<td>Oracle community forums: https:\/\/forums.oracle.com\/<\/td>\n<td>Practical troubleshooting and edge cases; validate against official docs<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, SREs, platform teams<\/td>\n<td>OCI DevOps practices, automation, cloud operations (verify course coverage for Database Migration)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps\/SCM learning paths and foundations useful for migration automation<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud ops practitioners<\/td>\n<td>Cloud operations and tooling (verify OCI coverage)<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, reliability engineers<\/td>\n<td>Reliability practices, observability, incident response applicable to migration cutovers<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops teams exploring AIOps<\/td>\n<td>Monitoring, AIOps concepts that can support migration operations<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training topics (verify OCI coverage)<\/td>\n<td>Beginners to working professionals<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training and enablement<\/td>\n<td>Engineers seeking practical DevOps skills<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Independent DevOps services\/training platform (verify offerings)<\/td>\n<td>Teams needing short-term expert help<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training topics (verify OCI coverage)<\/td>\n<td>Ops\/DevOps teams<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting (verify specific OCI migration services)<\/td>\n<td>Planning, automation, and operational readiness<\/td>\n<td>Migration runbooks, CI\/CD integration, observability setup<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps enablement and consulting<\/td>\n<td>Training + consulting for platform engineering practices<\/td>\n<td>Migration automation pipelines, ops maturity uplift<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting services<\/td>\n<td>Advisory and implementation support<\/td>\n<td>Secure landing zones, IAM policy patterns, operational handover<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before Database Migration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI fundamentals:<\/li>\n<li>Compartments, IAM users\/groups\/policies<\/li>\n<li>VCN basics: subnets, routing, NSGs\/security lists, DRG<\/li>\n<li>Oracle Database basics:<\/li>\n<li>Users\/roles, tablespaces, schemas<\/li>\n<li>Backup\/restore concepts<\/li>\n<li>Data Pump basics (export\/import) and common ORA errors<\/li>\n<li>Security fundamentals:<\/li>\n<li>Least privilege, secret handling, TLS<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after Database Migration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Advanced Oracle migration patterns:<\/li>\n<li>Online replication and cutover strategies (verify Oracle-supported tooling)<\/li>\n<li>Observability in OCI:<\/li>\n<li>Logging, Monitoring, Events, Notifications<\/li>\n<li>Automation:<\/li>\n<li>OCI CLI, Terraform (Infrastructure as Code)<\/li>\n<li>Resilience:<\/li>\n<li>Multi-region DR strategies for Oracle databases (RPO\/RTO planning)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Solutions Architect (OCI)<\/li>\n<li>Platform Engineer<\/li>\n<li>DevOps Engineer \/ SRE supporting cutovers<\/li>\n<li>Database Administrator (DBA) \/ Database Reliability Engineer (DBRE)<\/li>\n<li>Security Engineer (governance and access reviews)<\/li>\n<li>Cloud Operations Engineer<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Oracle\u2019s certification offerings change frequently. Start here and search for OCI architect\/database tracks:\n&#8211; Oracle University: https:\/\/education.oracle.com\/<\/p>\n\n\n\n<p>For Database Migration-specific certification, <strong>verify in Oracle University<\/strong> whether a dedicated module exists, or whether it is covered under OCI Database or Architect tracks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build a repeatable \u201cmigration factory\u201d template:<\/li>\n<li>Standard compartments, tags, staging buckets with lifecycle<\/li>\n<li>IAM roles for migration operators<\/li>\n<li>Implement a private migration path:<\/li>\n<li>On-prem simulation with VPN + agent in OCI<\/li>\n<li>Create a validation suite:<\/li>\n<li>Row count checks, schema diff checks, performance baseline queries<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OCI (Oracle Cloud Infrastructure):<\/strong> Oracle Cloud\u2019s IaaS\/PaaS platform.<\/li>\n<li><strong>Database Migration:<\/strong> OCI service that orchestrates supported Oracle database migrations.<\/li>\n<li><strong>Compartment:<\/strong> OCI logical container for organizing and isolating resources with IAM.<\/li>\n<li><strong>IAM Policy:<\/strong> Authorization rules defining who can do what in OCI.<\/li>\n<li><strong>VCN:<\/strong> Virtual Cloud Network\u2014your private network in OCI.<\/li>\n<li><strong>NSG (Network Security Group):<\/strong> Virtual firewall rules applied to VNICs.<\/li>\n<li><strong>Security List:<\/strong> Subnet-level firewall rules (legacy-style compared to NSGs).<\/li>\n<li><strong>DRG:<\/strong> Dynamic Routing Gateway for connecting VCNs to on-prem or other networks.<\/li>\n<li><strong>Object Storage:<\/strong> OCI service for storing unstructured objects; often used for staging artifacts.<\/li>\n<li><strong>Vault:<\/strong> OCI service to store secrets and encryption keys.<\/li>\n<li><strong>Offline migration:<\/strong> Migration requiring downtime while data is exported\/transferred\/imported.<\/li>\n<li><strong>Online migration:<\/strong> Migration using replication to reduce downtime (method\/tooling dependent).<\/li>\n<li><strong>Data Pump:<\/strong> Oracle export\/import utilities (expdp\/impdp) used in many offline migrations.<\/li>\n<li><strong>Work Request:<\/strong> OCI object used to track asynchronous operations and status.<\/li>\n<li><strong>Cutover:<\/strong> The moment you switch applications\/users from source DB to target DB.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Oracle Cloud <strong>Database Migration<\/strong> (Data Management) is an OCI service that helps you plan, orchestrate, and track <strong>Oracle database migrations into Oracle Cloud<\/strong>, using supported offline and (where applicable) online approaches.<\/p>\n\n\n\n<p>It matters because database migrations fail on details\u2014networking, credentials, staging, validation, and governance. Database Migration improves consistency through OCI-native resource modeling, IAM-based access control, and operational tracking.<\/p>\n\n\n\n<p>From a cost perspective, the largest drivers are usually <strong>target database costs<\/strong>, <strong>compute for agents\/staging<\/strong>, <strong>Object Storage staging\/retention<\/strong>, and <strong>network transfer<\/strong>\u2014not necessarily the Database Migration service itself (verify current pricing in official OCI pricing pages).<\/p>\n\n\n\n<p>From a security perspective, the biggest wins come from <strong>private connectivity<\/strong>, <strong>least-privilege IAM<\/strong>, and <strong>careful secret handling<\/strong> (prefer Vault where supported).<\/p>\n\n\n\n<p>Use Database Migration when you want an OCI-native, repeatable migration workflow for supported Oracle source\/target combinations. Next step: read the official documentation for your exact source\/target pair and run a <strong>dry-run migration<\/strong> in dev\/test before attempting production cutover.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data Management<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[68,62],"tags":[],"class_list":["post-887","post","type-post","status-publish","format-standard","hentry","category-data-management","category-oracle-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/887","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=887"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/887\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=887"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=887"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}