{"id":18558161,"url":"https://github.com/gotsysdba/exa-sparse-snapshot","last_synced_at":"2026-05-02T02:34:32.817Z","repository":{"id":155004395,"uuid":"402759667","full_name":"gotsysdba/exa-sparse-snapshot","owner":"gotsysdba","description":"  Exadata Sparse Clone Snapshots","archived":false,"fork":false,"pushed_at":"2022-01-17T09:39:28.000Z","size":670,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-15T14:47:40.363Z","etag":null,"topics":["database","exadata","oci","oracle","sparse"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"upl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gotsysdba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-03T12:17:17.000Z","updated_at":"2022-02-16T14:59:15.000Z","dependencies_parsed_at":"2023-04-29T23:24:34.365Z","dependency_job_id":null,"html_url":"https://github.com/gotsysdba/exa-sparse-snapshot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gotsysdba/exa-sparse-snapshot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotsysdba%2Fexa-sparse-snapshot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotsysdba%2Fexa-sparse-snapshot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotsysdba%2Fexa-sparse-snapshot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotsysdba%2Fexa-sparse-snapshot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gotsysdba","download_url":"https://codeload.github.com/gotsysdba/exa-sparse-snapshot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotsysdba%2Fexa-sparse-snapshot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32521089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T01:12:54.858Z","status":"online","status_checked_at":"2026-05-02T02:00:05.923Z","response_time":132,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","exadata","oci","oracle","sparse"],"created_at":"2024-11-06T21:39:05.126Z","updated_at":"2026-05-02T02:34:32.801Z","avatar_url":"https://github.com/gotsysdba.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\nOracle Exadata Snapshots provide space efficent clones of Oracle Databases for testing/development (non-Production) purposes while leveraging Exadata performance and availability features.  Exadata Snapshots can be created at the PDB, CDB, or non-CDB level, and depending on the requirements, at point-in-time.\n\nMain benefits over other solutions include:\n* Utilises existing, familiar Oracle technologies (Dataguard/Goldengate)\n* No additional network requirements\n* No network latency impacting performance (I/O bus is not Ethernet)\n* No 3rd-Party black-box appliances\n* Offers full end-to-end performance and high availability (HA) testing\n\nMore information about Exadata Snapshots can be found in the [Official Documentation](https://docs.oracle.com/en/engineered-systems/exadata-database-machine/sagug/exadata-storage-server-snapshots.html#GUID-78F67DD0-93C8-4944-A8F0-900D910A06A0)\n\n## TestMaster Concept\nThe \"TestMaster\" is an Oracle DB (incl. PDBs) whose instance(s) have no Write access to the physical datafiles for the duration that dependant snapshots exist.  This is achived in one of two ways: The (P)DB is closed; or the (P)DB is in a Read-Only state.  \"Converting\" a (P)DB into a TestMaster is the process required to achive the closed or Read-Only state. \n\nWhen replication technology, e.g. Dataguard or Goldengate, is used, part of the conversion process includes stopping, or redirecting, replication to prevent unintented disruption to the source DB.\n\n## Observations and Considerations\n* Controlfiles, Online REDO, and Temporary Tablespaces are always FULL (not Sparse Copies).  Keep this in mind in regards to diskspace.\n* The Offical Documentation demonstrates new ASM directories in the SPARSE Diskgroup for each SnapshotDB.  This is not required as datafiles can be uniquely named during the sparse clones and placed in a single ASM directory.  Creating new directories will require interaction with ASM to both create the new directory and grant ACL access.  \n* The strategy taken in regards to ASM directories may simplify or complicate cleanup activities depending on the requirements.\n* For Point-In-Time Scenarios, you must maintain the files generated during each Sparse TestMaster creation in order to create SnapshotDBs on older TestMaster files.  This is required as new Production (Primary) datafiles/PDBs may be replicated to the active Sparse TestMaster.\n* The Dataguard database used for cloning can be replicated from the Primary (use Maximum Availability to avoid compromising the availability) or from another Standby.\n* With an Active Dataguard License, the Datagaurd database used for cloning can be Opened Read-Only if required.\n\n\n# Use Cases\n## Prerequisites\n**Exadata and Sparse Diskgroup**\n* Oracle Exadata Database Machine with Sparse Diskgroups\n* Required Patches/Level  (`$ORACLE_HOME/OPatch/datapatch -version`)\n  * 19.11 RDBMS:  RDBMS_19.11.0.0.0DBRU_LINUX.X64_210223\n  * 19.12 RDBMS:  33656608\n\n**ASM Access Control**\nAs the `grid` OS user, log into ASM as SYSASM and enable access control for the `oracle` user on the DATA and SPRC diskgroups, for example:\n```\nsqlplus / as sysasm\nalter diskgroup DATAC1 set attribute 'ACCESS_CONTROL.ENABLED'='TRUE';\nalter diskgroup DATAC1 add user 'oracle';\nalter diskgroup SPRC1 set attribute 'ACCESS_CONTROL.ENABLED'='TRUE';\nalter diskgroup SPRC1 add user 'oracle';\n\nREM Verify \nselect g.name, u.os_name \n  from v$asm_user u, v$asm_diskgroup g \n where g.group_number = u.group_number;\n```\n\n## CDB Pre-Production Database\nA full TestMaster, identical to production, that needs to be refreshed regularly.  The TestMaster database is an Oracle Dataguard, physical standby dedicated to this purpose.  A single sparse snapshot is created and dropped as part of a software delivery lifecycle.\n\n[Details found here.](doco/CDB_PREPROD.md)\n\n## PDB Scrubbed Development Databases\nA cloned and scrubbed TestMaster used for development purposes.  The TestMaster database is a Pluggable Database (PDB),cloned from a Production PDB and Scrubbed prior to creating snapshots.  Multiple sparse snapshots are created and dropped, on demand, by individual developers to create isolated environments.\n\n[Details found here.](doco/PDB_DEV.md)\n\n## CDB Point-in-Time Database\nMutlipe full TestMaster databases, identical to the source at specific point-in-times.  The TestMaster databases are Oracle Dataguard, physical standby dedicated to this purpose.  Replication is redirected to Sparse Standby's while earlier TestMasters are used for snapshots.\n\nDetails found here.\n\n## PDB Point-in-Time Database\nMultiple PDB TestMaster databases, identical to the source at specific point-in-times.  The TestMaster PDBs are are Goldengate Targets dedicated to this purpose.  Replication is redirected to Sparse Goldengate Target PDBs  while earlier TestMasters are used for snapshots.\n\nDetails found here.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotsysdba%2Fexa-sparse-snapshot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgotsysdba%2Fexa-sparse-snapshot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotsysdba%2Fexa-sparse-snapshot/lists"}