Skip to content

Commit 01769a3

Browse files
authored
Merge pull request #2739 from oracle-devrel/arch-coe-initial-fsdr-content
ver. 0.1
2 parents 601e8ca + d7deb53 commit 01769a3

32 files changed

Lines changed: 3502 additions & 0 deletions
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Full Stack Disaster Recovery
2+
3+
Full Stack Disaster Recovery is an Oracle Cloud Infrastructure (OCI) disaster recovery orchestration and management service that provides comprehensive disaster recovery capabilities for all layers of an application stack, including infrastructure, middleware, database, and application.
4+
5+
Using OCI Full Stack DR provides a single pane of glass monitoring and management capability for all disaster recovery needs. Full stack disaster recovery easily integrates Oracle platforms and non-Oracle applications and provides recovery for the entire application stack, instead of recovery of individual components, such as databases or compute instances.
6+
7+
Reviewed: 26.11.2025
8+
9+
# Useful Links
10+
11+
- [Move a virtual machine between OCI regions using Full Stack Disaster Recovery](https://docs.oracle.com/en/learn/full-stack-dr-to-move-vm/)
12+
- To move a compute VM that has just a boot volume attached to it from one region to another region using Full Stack Disaster Recovery.
13+
- [Automate Disaster Recovery switchover and failover operations for Oracle WebLogic Server with OCI Full Stack Disaster Recovery](https://docs.oracle.com/en/learn/full-stack-dr-integration-weblogic/)
14+
- To automate Disaster Recovery Switchover and Failover operations of Oracle WebLogic Server using OCI Stack Disaster Recovery.
15+
- [Documentation: Full Stack Disaster Recovery](https://docs.oracle.com/en-us/iaas/disaster-recovery/index.html)
16+
- [Oracle WebLogic Server for Oracle Cloud Infrastructure Disaster Recovery](https://www.oracle.com/a/otn/docs/middleware/maa-wls-mp-dr.pdf)
17+
- [Oracle.com: Full Stack Disaster Recovery](https://www.oracle.com/in/cloud/full-stack-disaster-recovery/)
18+
19+
# License
20+
21+
Copyright (c) 2026 Oracle and/or its affiliates.
22+
23+
Licensed under the Universal Permissive License (UPL), Version 1.0.
24+
25+
See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
Copyright (c) 2026 Oracle and/or its affiliates.
2+
3+
The Universal Permissive License (UPL), Version 1.0
4+
5+
Subject to the condition set forth below, permission is hereby granted to any
6+
person obtaining a copy of this software, associated documentation and/or data
7+
(collectively the "Software"), free of charge and under any and all copyright
8+
rights in the Software, and any and all patent rights owned or freely
9+
licensable by each licensor hereunder covering either (i) the unmodified
10+
Software as contributed to or provided by such licensor, or (ii) the Larger
11+
Works (as defined below), to deal in both
12+
13+
(a) the Software, and
14+
(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
15+
one is included with the Software (each a "Larger Work" to which the Software
16+
is contributed by such licensors),
17+
18+
without restriction, including without limitation the rights to copy, create
19+
derivative works of, display, perform, and distribute the Software and make,
20+
use, sell, offer for sale, import, export, have made, and have sold the
21+
Software and the Larger Work(s), and to sublicense the foregoing rights on
22+
either these or other terms.
23+
24+
This license is subject to the following condition:
25+
The above copyright notice and either this complete permission notice or at
26+
a minimum a reference to the UPL must be included in all copies or
27+
substantial portions of the Software.
28+
29+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
34+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
35+
SOFTWARE.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# evaluate-pg-rpo.py
2+
3+
RPO Estimation for a FSDR Protection Group
4+
5+
Reviewed: 24.03.2026
6+
7+
# When to use this asset?
8+
9+
It can be used to roughly estimate the global RPO of a _FSDR Protection Group_ and as an example on how
10+
use the Python SDK and OCI API to get the replication metrics of some services.
11+
12+
# How to use this asset?
13+
14+
This is a simple Python script that can be used just passing the FSDR Protection Group ID and having access to the
15+
Primary and Secondary region.
16+
17+
# Disclaimer
18+
19+
This is program is just meant as an example on how to collect replication information from the FSDR PG underlying services. The
20+
evaluate RPO is not to consider an indication on a _real RPO_ which depends on multiple factors and which should be always
21+
evaluated taking into account the workload characteristics and the application behavior.
22+
23+
# Overview
24+
25+
FSDR is DR coordinator and orchestrator service and it doesn't influence its Protection Groups RPO in any way.
26+
The PG RPO depends only on the underline services and their replication methods. That said, this python script
27+
allows to evaluate the _maximum RPO_ of the group using the exposed replication metrics of its services.
28+
29+
# Prerequisites
30+
31+
You'll need Python3 and the following packages:
32+
33+
- OCI module
34+
- PyYAML module
35+
36+
37+
For example, on Linux or MacOS, using a virtual environment configured with _pyenv_:
38+
39+
```sh
40+
pyenv shell 3.14.2
41+
pip install OCI
42+
pip install PyYAML
43+
```
44+
45+
# Currently Supported Services
46+
47+
Currently, the script supports the following resources in the protection group:
48+
49+
- Movable Virtual Machine
50+
- Block Volume Group
51+
- File System Service
52+
- Object Storage Buckets
53+
- Base DB System
54+
- Autonomous Database
55+
- OKE Cluster
56+
57+
# Usage
58+
59+
The script -h flag shows the usage options:
60+
61+
```sh
62+
./evaluate_pg_rpo.py -h
63+
usage: evaluate_pg_rpo [-h] [-p PROTECTION_GROUP_ID] [-r REGION] [-t] [-c CONFIGURATION_FILE] [-d] [-v]
64+
65+
Evaluate the RPO of a FSDR Protection Group.
66+
67+
options:
68+
-h, --help show this help message and exit
69+
-p, --protection_group_id PROTECTION_GROUP_ID
70+
-r, --region REGION
71+
-t, --tagging Tagging flag, when enabled write the RPO in a free-form tag on the PG. Defaulting to no
72+
tagging.
73+
-c, --configuration_file CONFIGURATION_FILE
74+
OCI configuration file, defaulting to ~/.oci/config. If the string "none" is provided, instance principal
75+
authentication is used.
76+
-d, --debug Debug flag, defaulting to no debug
77+
-v, --version Shows version.
78+
```
79+
80+
81+
# Output Example
82+
83+
```sh
84+
python3 ./evaluate-pg-rpo.py -p ocid1.drprotectiongroup.oc1.eu-milan-1.<hidden>
85+
86+
Components RPO:
87+
-------- Type -------- -------- Name -------- --- RPO (sec) ---
88+
OBJECT_STORAGE_BUCKET mushop-media-cris 108
89+
OBJECT_STORAGE_BUCKET mushop-cris 108
90+
VOLUME_GROUP mushop-vg 173
91+
AUTONOMOUS_DATABASE MuShopDB-cris 60
92+
93+
Protection Group RPO:
94+
Global RPO : 173 sec
95+
Component driving RPO : VOLUME_GROUP
96+
```
97+
98+
# Useful Links
99+
100+
- [FSDR Documentation](https://docs.oracle.com/en-us/iaas/disaster-recovery/index.html)
101+
- [OCI Python SDK](https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/pythonsdk.htm)
102+
- [pyenv util](https://github.com/pyenv/pyenv)
103+
- [PyYAML Module](https://pypi.org/project/PyYAML/)
104+
105+
106+
# License
107+
108+
Copyright (c) 2026 Oracle and/or its affiliates.
109+
110+
Licensed under the Universal Permissive License (UPL), Version 1.0.
111+
112+
See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE.txt) for more details.

0 commit comments

Comments
 (0)