Dateien mit einer autonomen KI-Datenbank in einem Cloud-Code-Repository verwalten und speichern
Autonomous AI Database bietet Routinen zum Verwalten und Speichern von Dateien in Cloud Code-(Git-)Repositorys. Die unterstützten Cloud-Code-Repositorys sind: GitHub, AWS CodeCommit und Azure Repos.
Cloud-Code-Repositorys mit autonomer KI-Datenbank
Das Package DBMS_CLOUD_REPO stellt eine einzelne Schnittstelle für den Zugriff auf ein Cloudcode-Repository aus einer autonomen KI-Datenbank bereit.
Die unterstützten Cloudcode-Repositorys bieten die folgenden Features:
-
Git-Versionskontrollsystem: Git ist eine Software zum Verfolgen von Änderungen in einer beliebigen Gruppe von Dateien, die normalerweise zur Koordination der Arbeit zwischen Programmierern verwendet wird, die während der Softwareentwicklung gemeinsam Quellcode entwickeln. Zu seinen Zielen gehören Geschwindigkeit, Datenintegrität und Unterstützung für verteilte, nicht-lineare Workflows.
-
Git-Repository: Ein Git-Repository ist ein virtueller Speicher Ihres Projekts. Es ermöglicht Ihnen, Versionen Ihres Codes zu speichern, auf die Sie bei Bedarf zugreifen können.
Die DBMS_CLOUD_REPO-APIs verwenden ein Repository-Handle (REPO-Objekt). Das Repository-Handle ist ein undurchsichtiges JSON-Objekt, das ein Cloud-Code-Repository eines bestimmten Cloud-Providers darstellt. Ein REPO-Objekt kann an verschiedene DBMS_CLOUD_REPO-APIs übergeben werden. Dieses undurchsichtige Objekt stellt sicher, dass DBMS_CLOUD_REPO-Prozeduren und -Funktionen Multicloud-kompatibel sind. Sie müssen Ihren Code nicht ändern, wenn Sie von einem Cloud Code Repository-Provider zu einem anderen Cloud Code Repository migrieren.
Die autonome KI-Datenbank bietet Folgendes, damit Sie mit Cloud-Code-Repositorys arbeiten können:
-
Repository-Initialisierungsvorgänge, mit denen Sie ein Repository initialisieren können.
Weitere Informationen finden Sie unter Cloudcode-Repository initialisieren.
-
Repository-Verwaltungsvorgänge, mit denen Sie ein Repository erstellen, auflisten, aktualisieren oder löschen können.
Weitere Informationen finden Sie unter Cloud-Code-Repository erstellen und verwalten.
-
Repository-Verzweigungsverwaltungsvorgänge, mit denen Sie Verzweigungen in einem Repository erstellen, auflisten, zusammenführen oder löschen können.
Weitere Informationen finden Sie unter Verzweigungen in einem Cloudcode-Repository erstellen und verwalten.
-
Exportieren Sie die Metadaten-DDL aller Objekte in einem Schema in ein Repository.
Weitere Informationen finden Sie unter Schemaobjekte in die Cloud Code Repository-Verzweigung exportieren.
-
Repository-Dateiverwaltungsvorgänge zum Hochladen, Herunterladen, Aktualisieren und Löschen von Dateien.
Weitere Informationen finden Sie unter Dateivorgänge mit einem Cloudcode-Repository verwenden.
-
SQL-Installationsvorgänge, mit denen Sie Datenbankobjektmetadaten-DDL in ein Repository exportieren und SQL-Anweisungen aus einem Cloud Code Repository in der Datenbank installieren können.
Weitere Informationen finden Sie unter SQL-Installationsvorgänge mit einem Cloudcode-Repository verwenden.
Cloudcode-Repository initialisieren
Die Initialisierungsroutinen DBMS_CLOUD_REPO initialisieren ein Cloud-Code-Repository. Nachdem Sie ein Cloud Code Repository-Handle erhalten haben, greifen Sie mit dem Handle auf das Cloud Code Repository zu.
So initialisieren Sie ein Cloud Code Repository:
-
Erstellen Sie Zugangsdaten für den Zugriff auf das Cloud-Code-Repository.
Informationen zum Erstellen von Zugangsdaten finden Sie unter Prozedur CREATE_CREDENTIAL.
-
Je nach Repository, GitHub, Azure Repos oder AWS CodeCommit, rufen Sie
DBMS_CLOUD_REPO.INIT_REPOmit den Parametern für das jeweilige Repository auf, um ein Repository-Handle abzurufen.Die folgenden Beispiele enthalten Beispiele für jedes unterstützte Cloud Code Repository.
-
Initialisierung von GitHub:
DEFINE repo_name='test_repo'; DEFINE cred_name='GITHUB_CRED'; VAR repo clob BEGIN :repo := DBMS_CLOUD_REPO.INIT_REPO( params => JSON_OBJECT('provider' value 'github', 'repo_name' value '&repo_name', 'credential_name' value '&cred_name', 'owner' value '<myuser>') ); END; / -
Azure-Repository-Initialisierung:
DEFINE repo_name='test_repo'; DEFINE cred_name='AZURE_REPO_CRED'; VAR repo clob BEGIN :repo := DBMS_CLOUD_REPO.INIT_REPO( params => JSON_OBJECT('provider' value 'azure', 'repo_name' value '&repo_name', 'credential_name' value '&cred_name', 'organization' value '<myorg>', 'project' value '<myproject>') ); END; / -
AWS CodeCommit-Initialisierung:
DEFINE repo_name='test_repo'; DEFINE cred_name='AWS_REPO_CRED'; VAR repo clob BEGIN :repo := DBMS_CLOUD_REPO.INIT_REPO( params => JSON_OBJECT('provider' value 'aws', 'repo_name' value '&repo_name', 'credential_name' value '&cred_name', 'region' value 'us-east-1') ); END; /
-
Weitere Informationen zu den Initialisierungsfunktionen finden Sie unter DBMS_CLOUD_REPO Initialization Operations.
Cloudcode-Repository erstellen und verwalten
Mit den DBMS_CLOUD_REPO-Verwaltungsroutinen können Sie ein Cloudcode-Repository verwalten, indem Sie ein Repository erstellen, auflisten, aktualisieren oder löschen.
Rufen Sie zunächst ein Cloud Code Repository-Handle ab, um Zugriff auf ein Repository zu gewähren. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.
-
So erstellen Sie ein Repository:
VAR repo clob BEGIN DBMS_CLOUD_REPO.CREATE_REPOSITORY( repo => :repo, description => 'test repo' ); END; / -
So aktualisieren Sie ein Repository:
VAR repo clob DEFINE repo_name='test_repo'; BEGIN DBMS_CLOUD_REPO.UPDATE_REPOSITORY( repo => :repo, new_name => '&repo_name' || '_new' ); END; / -
So listen Sie Repositorys auf:
col id format a30 col name format a10 col description format a15 select id, name, bytes, private, description from DBMS_CLOUD_REPO.LIST_REPOSITORIES(:repo); -
So löschen Sie ein Repository:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_REPOSITORY( repo => :repo ); END; /
Weitere Informationen finden Sie unter DBMS_CLOUD_REPO Repository Management Operations.
Filialen in einem Cloudcode-Repository erstellen und verwalten
Mit den DBMS_CLOUD_REPO-Verwaltungsroutinen können Sie Cloud Code Repository-Verzweigungen verwalten, indem Sie Verzweigungen in einem Repository erstellen, auflisten, zusammenführen oder löschen.
Um Cloud Code Repository-Verzweigungsverwaltungsvorgänge ausführen zu können, müssen Sie zuerst folgende Schritte ausführen:
-
Zugangsdaten erstellen.
Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
-
Rufen Sie ein Handle ab.
Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.
-
Erstellt ein Repository.
Weitere Informationen finden Sie unter Cloud Code Repository erstellen und verwalten.
-
Melden Sie sich als ADMIN-Benutzer an, oder haben Sie die Berechtigung
EXECUTEfürDBMS_CLOUD_REPO.
-
So erstellen Sie eine Verzweigung in einem Cloudcode-Repository:
BEGIN DBMS_CLOUD_REPO.CREATE_BRANCH ( repo => l_repo, branch_name => 'test_branch', parent_branch => 'main' ); END; / -
So löschen Sie eine Verzweigung in einem Cloudcode-Repository:
BEGIN DBMS_CLOUD_REPO.DELETE_BRANCH ( repo => l_repo, branch_name => 'test_branch' ); END; / -
So führen Sie eine Verzweigung in einer anderen Verzweigung in einem Cloud Code Repository zusammen:
BEGIN DBMS_CLOUD_REPO.MERGE_BRANCH ( repo => l_repo, branch_name => 'test_branch', target_branch_name => 'main' ); END; / -
So listen Sie Verzweigungen in einem Cloudcode-Repository auf:
SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo); -
Sie können Commits in einer Verzweigung in Cloud Code Repository basierend auf folgenden Elementen auflisten:
-
Repository
-
Niederlassung
-
Der Dateipfad der Verzweigung
-
SHA/commit_id
Hinweis: SHA ist eine aus Hexadezimalzeichen (0-9 und a-f) zusammengesetzte Prüfsumme mit 40 Zeichen.
So listen Sie Commits basierend auf dem Repository auf:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo);So listen Sie Commits basierend auf dem Repository, der commit_id und dem Dateipfad der Verzweigung auf:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => l_repo, commit_id => '66dd2b23b74cd0afabd11af66c6aa9c550540ba6', file_path => 'sub_dir/test11.sql'So listen Sie Commits auf, die auf dem Repository und dem Dateipfad der Verzweigung basieren:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1');So listen Sie Commits auf, die auf dem Repository, Branch_name und Dateipfad der Verzweigung basieren:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1', file_path => 'sub_dir/test11.sql');So listen Sie Commits auf, die auf dem Repository und der commit_id der Verzweigung basieren:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, commit_id =>'66dd2b23b74cd0afabd11af66c6aa9c550540ba6'); -
Weitere Informationen finden Sie unter DBMS_CLOUD_REPO Repository Branch Management Operations.
Schemaobjekte in die Cloudcode-Repository-Verzweigung exportieren
Mit der Verwaltungsroutine DBMS_CLOUD_REPO können Sie Metadaten der Objekte in einem Schema in die Cloudcode-Repository-Verzweigung exportieren. Sie können die Liste anhand der Objektnamen oder Objekttypen filtern.
Um Schemametadaten zu exportieren, müssen Sie zuerst:
-
Zugangsdaten erstellen.
Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
-
Rufen Sie ein Handle ab.
Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.
-
Erstellt ein Repository.
Weitere Informationen finden Sie unter Cloud Code Repository erstellen und verwalten.
-
Melden Sie sich als ADMIN-Benutzer an, oder haben Sie die Berechtigung
EXECUTEfürDBMS_CLOUD_REPO.
Verwenden Sie die Prozedur EXPORT_SCHEMA, um Metadaten der Objekte in Ihrem Schema in eine Cloud Code Repository-Verzweigung zu exportieren:
BEGIN
DBMS_CLOUD_REPO.EXPORT_SCHEMA(
repo => l_repo,
schema_name => 'USER1',
file_path => 'myschema_ddl.sql'
filter_list =>
to_clob('[
{ "match_type":"equal",
"type":"table"
},
{ "match_type":"not_equal",
"type":"view"
},
{ "match_type":"in",
"type":"table",
"name": " ''EMPLOYEE_SALARY'',''EMPLOYEE_ADDRESS'' "
},
{ "match_type":"equal",
"type":"sequence",
"name": "EMPLOYEE_RECORD_SEQ"
},
{ "match_type":"like",
"type":"table",
"name": "%OFFICE%"
}
]'
);
);
END;
/
In diesem Beispiel werden die Metadaten des Schemas USER1 in das Repository l_repo exportiert. Der Export umfasst die Metadaten der Tabellen EMPLOYEE_SALARY und EMPLOYEE_ADDRESS sowie alle Tabellennamen, die OFFICE enthalten. Außerdem wird die EMPLOYEE_RECORD_SEQ-Sequenz exportiert und die Ansichten im Schema ausgeschlossen.
Weitere Informationen finden Sie unter Prozedur EXPORT_SCHEMA.
Dateivorgänge mit einem Cloud-Code-Repository verwenden
Mit den DBMS_CLOUD_REPO-Dateivorgängen können Sie Dateien in einem Cloudcode-Repository erstellen, abrufen, auflisten, aktualisieren oder löschen.
Rufen Sie einen Cloud Code Repository-Handle ab, bevor Sie die Dateivorgänge verwenden. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.
Sie müssen auch ein Repository erstellen, bevor Sie mit Dateien arbeiten. Weitere Informationen finden Sie unter Erstellen und Verwalten eines Cloudcode-Repositorys.
- So rufen Sie eine Datei ab:
SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql') -
So erstellen Sie eine Datei:
VAR repo clob BEGIN DBMS_CLOUD_REPO.PUT_FILE( repo => :repo, file_path => 'test1.sql', contents => UTL_RAW.cast_to_raw('create table t1 (x varchar2(30))' || CHR(10) || '/') ); END; / -
So aktualisieren Sie eine Datei:
VAR repo clob BEGIN DBMS_CLOUD_REPO.PUT_FILE( repo => :repo, file_path => 'test1.sql', contents => UTL_RAW.cast_to_raw('create table t2 (x varchar2(30))' || CHR(10) || '/') ); END; / -
So listen Sie Dateien auf:
SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo); -
So löschen Sie eine Datei:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_FILE( repo => :repo, file_path => 'test1.sql' ); END; /
Weitere Informationen finden Sie unter DBMS_CLOUD_REPO File Operations.
SQL-Installationsvorgänge mit einem Cloud-Code-Repository verwenden
Mit den SQL-Installationsvorgängen DBMS_CLOUD_REPO können Sie SQL-Skripte in einem Cloud Code Repository speichern und herunterladen.
Rufen Sie ein Cloud Code Repository-Handle ab, bevor Sie die SQL-Installationsvorgänge verwenden. Weitere Informationen finden Sie unter Cloud-Code-Repository initialisieren.
Sie müssen auch ein Repository erstellen, bevor Sie mit SQL-Installationsvorgängen arbeiten. Weitere Informationen finden Sie unter Erstellen und Verwalten eines Cloudcode-Repositorys.
Die Skripte sind als Schema-Installationsskripte und nicht als generische SQL-Skripte gedacht:
-
Skripte dürfen keine clientspezifischen SQL*Plus-Befehle enthalten.
-
Skripte dürfen keine Bind-Variablen oder parametrisierte Skripte enthalten.
-
SQL-Anweisungen müssen mit einem Schrägstrich in einer neuen Zeile (/) beendet werden.
-
Skripte können DDL- und DML PLSQL-Anweisungen enthalten, direkte
SELECT-Anweisungen werden jedoch nicht unterstützt. Die Verwendung von SELECT in einem PL/SQL-Block wird unterstützt.
Jede SQL-Anweisung, die mit EXECUTE IMMEDIATE ausgeführt werden kann, funktioniert, wenn sie keine Bind-Variablen oder -Definitionen enthält.
-
So laden Sie DDL-Metadaten in ein Cloudcode-Repository hoch:
VAR repo clob BEGIN DBMS_CLOUD_REPO.EXPORT_OBJECT( repo => :repo, object_type => 'PACKAGE', object_name => 'MYPACK', file_path => 'mypack.sql' ); END; / -
So installieren Sie SQL-Anweisungen aus einer Datei:
VAR repo clob BEGIN DBMS_CLOUD_REPO.INSTALL_FILE( repo => :repo, file_path => 'test3.sql', stop_on_error => FALSE ); END; / -
So installieren Sie SQL-Anweisungen aus einem Puffer:
VAR repo clob BEGIN DBMS_CLOUD_REPO.INSTALL_SQL( repo => :repo, content => 'create table t1 (x varchar2(30))' || CHR(10) || '/', stop_on_error => FALSE ); END; /
Weitere Informationen finden Sie unter DBMS_CLOUD_REPO SQL-Installationsvorgänge.