※ 本記事は、Eloi Lopesによる”Clean up old OCI GoldenGate trails using Python and the OCI CLI“を翻訳したものです。

2023年11月22日


Oracle Cloud Infrastructure (OCI) GoldenGateは、リアルタイムのデータ・メッシュ・プラットフォームを提供するフルマネージド・サービスであり、レプリケーションを使用してデータの可用性を維持し、リアルタイム分析を可能にします。

各OCI GoldenGateデプロイメントでは、デプロイメントの詳細ページにその証跡ファイルのリストが表示されます:
GoldenGate trails in OCI Console

特に多くのテストが実施される開発環境では、未使用の証跡ファイルを蓄積することが一般的です。これらのすべての証跡をクリーンアップする簡単な方法は、次のPythonコードを使用することです。次のコードは、OCI CLIがインストールされていることを前提としています。OCI CLIをまだインストールしていない場合は、リファレンスの項で手順を確認してください。

### Import Packages
import oci
import requests
import json
from base64 import b64encode
import base64


# Auth Config
CONFIG_PROFILE = “DEFAULT”
config = oci.config.from_file(‘~/.oci/config’, CONFIG_PROFILE)

#OCI GoldenGate API
version =”v2″
username = ‘<gg username>’
password = ‘<password>’
issueCommand=f’/services/{version}/commands/execute’

#OCI GoldenGate deployment name
sourceUrl = “https://<OCI GG URL>”

encoded_credentials = b64encode(bytes(f'{username}:{password}’,
                                encoding=’ascii’)).decode(‘ascii’)

auth_header = f’Basic {encoded_credentials}’
payload=””
header = f'{auth_header}’
headers = {
‘Authorization’:  header,
‘Cookie’: ”
}

#initilize service client
golden_gate_client = oci.golden_gate.GoldenGateClient(config)

#function to delete trail
def deleteTrail(inputHearders, inputBody,url):
    responsePost = requests.post(url+issueCommand, headers=inputHearders, json=inputBody)
    print (responsePost.json())

list_trail_files_response = golden_gate_client.list_trail_files(
    deployment_id=”<OCI ID for OCI GG deployment>”)

#data dictionary for trail files
data_dict = json.loads(str(list_trail_files_response.data.items))

#iterate through trail files
for i in data_dict:
#Only for trails that are not currently in use by any extract or replicat.
    if i[‘consumers’] == None and i[‘producer’] == None:
       #print(i[‘consumers’], i[‘producer’], i[‘trail_file_id’])
        trailsDict={
         “name”: “purge”,
         “purgeType”: “trails”,
         “trails”: [ { “name”: i[‘trail_file_id’] } ],
         “useCheckpoints”: False,
         “keep”: [ {
         “type”: “min”,
         “units”: “files”,
         “value”: 0}]
        }
        #delete trail
        deleteTrail(headers,trailsDict,sourceUrl)

前述のコードは、ExtractおよびReplicatで使用されていない証跡のみを削除します。この記事に付属しているコードにはサポートがないため、ご自身のリスクで使用してください。

リファレンス