Gestisci e memorizza i file in un repository di codici cloud con Autonomous AI Database
Autonomous AI Database fornisce routine per gestire e memorizzare i file nei repository Git (Cloud Code). I repository di codici cloud supportati sono: GitHub, AWS CodeCommit e Azure Repos.
Informazioni sui repository di codici cloud con Autonomous AI Database
Il package DBMS_CLOUD_REPO fornisce un'unica interfaccia per accedere a un repository di codici cloud da Autonomous AI Database.
I repository di codici cloud supportati offrono le funzioni riportate di seguito.
-
Git Version Control System: Git è un software per tenere traccia delle modifiche in qualsiasi set di file, di solito utilizzato per coordinare il lavoro tra i programmatori durante lo sviluppo collaborativo del codice sorgente durante lo sviluppo del software. I suoi obiettivi includono velocità, integrità dei dati e supporto per flussi di lavoro distribuiti e non lineari.
-
Git Repository: Un repository Git è uno storage virtuale del tuo progetto. Ti consente di salvare le versioni del tuo codice, a cui puoi accedere quando necessario.
Le API DBMS_CLOUD_REPO utilizzano un handle di repository (oggetto REPO). L'handle del repository è un oggetto JSON opaco che rappresenta un repository di codici cloud di un provider cloud specifico. È possibile passare un oggetto REPO a interfacce API DBMS_CLOUD_REPO diverse. Questo oggetto opaco garantisce che le procedure e le funzioni DBMS_CLOUD_REPO siano compatibili con il multicloud; non è necessario modificare il codice quando si esegue la migrazione da un provider del repository di codici cloud a un altro repository di codici cloud.
Autonomous AI Database fornisce quanto segue per aiutarti a lavorare con i repository di codici cloud:
-
Operazioni di inizializzazione del repository che consentono di inizializzare un repository.
Per ulteriori informazioni, vedere Inizializzare un repository di codici cloud.
-
Operazioni di gestione del repository che consentono di creare, elencare, aggiornare o eliminare un repository.
Per ulteriori informazioni, vedere Creazione e gestione di un repository di codici cloud.
-
Operazioni di gestione delle diramazioni del repository che consentono di creare, elencare, unire o eliminare diramazioni in un repository.
Per ulteriori informazioni, vedere Creazione e gestione di rami in un repository di codici cloud.
-
Esportare la DDL dei metadati di tutti gli oggetti in uno schema in un repository.
Per ulteriori informazioni, vedere Esportare oggetti di schema nella diramazione del repository di codici cloud.
-
Operazioni di gestione file del repository per caricare, scaricare, aggiornare ed eliminare i file.
Per ulteriori informazioni, vedere Usa operazioni file con un repository di codici cloud.
-
Operazioni di installazione SQL che consentono di esportare DDL dei metadati degli oggetti di database in un repository e installare istruzioni SQL nel database da un repository di codici cloud.
Per ulteriori informazioni, vedere Utilizzare le operazioni di installazione SQL con un repository di codici cloud.
Inizializzare un repository di codici cloud
Le routine di inizializzazione DBMS_CLOUD_REPO inizializzano un repository di codici cloud. Dopo aver ottenuto un handle per il repository di codici cloud, utilizzare l'handle per accedere al repository di codici cloud.
Per inizializzare un repository di codici cloud:
-
Creare una credenziale per accedere al repository di codici cloud.
Per informazioni sulla creazione delle credenziali, vedere Procedura CREDENTIAL.
-
A seconda del repository, GitHub, Azure Repos o AWS CodeCommit, chiamare
DBMS_CLOUD_REPO.INIT_REPOcon i parametri per il repository specifico per ottenere un handle di repository.Gli esempi riportati di seguito forniscono esempi per ogni repository di codici cloud supportato.
-
Inizializzazione 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; / -
Inizializzazione repository Azure:
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; / -
Inizializzazione di AWS CodeCommit:
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; /
-
Per informazioni dettagliate sulle funzioni di inizializzazione, vedere Operazioni di inizializzazione DBMS_CLOUD_REPO.
Creare e gestire un repository di codici cloud
Le routine di gestione DBMS_CLOUD_REPO consentono di gestire un repository di codici cloud creando, elencando, aggiornando o eliminando un repository.
In primo luogo, ottenere un handle di Cloud Code Repository per fornire l'accesso a un repository. Per i dettagli, vedere Inizializzare un repository di codici cloud.
-
Per creare un repository, effettuare le operazioni riportate di seguito.
VAR repo clob BEGIN DBMS_CLOUD_REPO.CREATE_REPOSITORY( repo => :repo, description => 'test repo' ); END; / -
Per aggiornare un repository:
VAR repo clob DEFINE repo_name='test_repo'; BEGIN DBMS_CLOUD_REPO.UPDATE_REPOSITORY( repo => :repo, new_name => '&repo_name' || '_new' ); END; / -
Per elencare i repository:
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); -
Per eliminare un repository:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_REPOSITORY( repo => :repo ); END; /
Per ulteriori informazioni, vedere DBMS_CLOUD_REPO Repository Management Operations.
Creare e gestire rami in un repository di codici cloud
Le routine di gestione DBMS_CLOUD_REPO consentono di gestire i rami del repository di codici cloud creando, elencando, unendo o eliminando rami in un repository.
Per eseguire le operazioni di gestione delle diramazioni del repository di codici cloud, è innanzitutto necessario:
-
Crea una credenziale.
Per ulteriori informazioni, vedere Procedura CREDENTIAL.
-
Ottenere un handle.
Per i dettagli, vedere Inizializza un repository di codici cloud.
-
Creare un repository
Per i dettagli, vedere Creazione e gestione di un repository di codici cloud.
-
Eseguire il login come utente ADMIN o disporre del privilegio
EXECUTEsuDBMS_CLOUD_REPO.
-
Per creare una diramazione in un repository di codici cloud:
BEGIN DBMS_CLOUD_REPO.CREATE_BRANCH ( repo => l_repo, branch_name => 'test_branch', parent_branch => 'main' ); END; / -
Per eliminare una diramazione in un repository di codici cloud:
BEGIN DBMS_CLOUD_REPO.DELETE_BRANCH ( repo => l_repo, branch_name => 'test_branch' ); END; / -
Per unire una diramazione in un'altra diramazione in un repository di codici cloud:
BEGIN DBMS_CLOUD_REPO.MERGE_BRANCH ( repo => l_repo, branch_name => 'test_branch', target_branch_name => 'main' ); END; / -
Per elencare le diramazioni in un repository di codici cloud:
SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo); -
È possibile elencare i commit in una diramazione nel repository di codici cloud in base a quanto segue;
-
Repository
-
Filiale
-
Percorso del file della diramazione
-
ID_impegno/SHA
Nota: SHA è una stringa di 40 caratteri di checksum composta da caratteri esadecimali (0-9 e a-f).
Per elencare i commit in base al repository, procedere come segue.
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo);Per elencare i commit in base al repository, commit_id e percorso del file della diramazione:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => l_repo, commit_id => '66dd2b23b74cd0afabd11af66c6aa9c550540ba6', file_path => 'sub_dir/test11.sql'Per elencare i commit in base al repository e al percorso del file della diramazione:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1');Per elencare i commit in base al repository, al nome della diramazione e al percorso del file della diramazione:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1', file_path => 'sub_dir/test11.sql');Per elencare i commit in base al repository e all'ID commit della diramazione, effettuare le operazioni riportate di seguito.
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, commit_id =>'66dd2b23b74cd0afabd11af66c6aa9c550540ba6'); -
Per ulteriori informazioni, vedere DBMS_CLOUD_REPO Repository Branch Management Operations.
Esporta oggetti schema nella diramazione Repository di codici cloud
La routine di gestione DBMS_CLOUD_REPO consente di esportare i metadati degli oggetti in uno schema nella diramazione Repository di codici cloud. È possibile filtrare l'elenco in base ai nomi o ai tipi di oggetto.
Per esportare i metadati dello schema, è innanzitutto necessario:
-
Crea una credenziale.
Per ulteriori informazioni, vedere Procedura CREDENTIAL.
-
Ottenere un handle.
Per i dettagli, vedere Inizializza un repository di codici cloud.
-
Creare un repository
Per i dettagli, vedere Creazione e gestione di un repository di codici cloud.
-
Eseguire il login come utente ADMIN o disporre del privilegio
EXECUTEsuDBMS_CLOUD_REPO.
Utilizzare la procedura EXPORT_SCHEMA per esportare i metadati degli oggetti nello schema in una diramazione del repository di codici cloud:
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 questo esempio vengono esportati i metadati dello schema USER1 nel repository l_repo. L'esportazione include i metadati delle tabelle EMPLOYEE_SALARY e EMPLOYEE_ADDRESS e qualsiasi nome di tabella contenente OFFICE. Esporta inoltre la sequenza EMPLOYEE_RECORD_SEQ ed esclude le viste nello schema.
Per ulteriori informazioni, vedere Procedura EXPORT_SCHEMA.
Usa operazioni file con un repository di codici cloud
Le operazioni del file DBMS_CLOUD_REPO consentono di creare, ottenere, elencare, aggiornare o eliminare i file in un repository di codici cloud.
Ottenere un handle per il repository di codici cloud prima di utilizzare le operazioni del file. Per i dettagli, vedere Inizializzare un repository di codici cloud.
È inoltre necessario creare un repository prima di utilizzare i file. Per informazioni dettagliate, vedere Creazione e gestione di un repository di codici cloud.
- Per ottenere un file:
SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql') -
Per creare un file, procedere nel seguente modo.
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; / -
Per aggiornare un file:
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; / -
Per elencare i file:
SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo); -
Per eliminare un file, effettuare le operazioni riportate di seguito.
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_FILE( repo => :repo, file_path => 'test1.sql' ); END; /
Per ulteriori informazioni, vedere Operazioni file DBMS_CLOUD_REPO.
Usa operazioni di installazione SQL con un repository di codici cloud
Le operazioni di installazione SQL DBMS_CLOUD_REPO consentono di memorizzare e scaricare script SQL da un repository di codici cloud.
Ottenere un handle per il repository di codici cloud prima di utilizzare le operazioni di installazione SQL. Per i dettagli, vedere Inizializzare un repository di codici cloud.
È inoltre necessario creare un repository prima di utilizzare le operazioni di installazione SQL. Per informazioni dettagliate, vedere Creazione e gestione di un repository di codici cloud.
Gli script sono intesi come script di installazione dello schema e non come script SQL generici:
-
Gli script non possono contenere comandi specifici del client SQL*Plus.
-
Gli script non possono contenere bind variable o script parametrizzati.
-
Le istruzioni SQL devono essere terminate con una barra su una nuova riga (/).
-
Gli script possono contenere istruzioni DDL, DML PLSQL, ma le istruzioni
SELECTdirette non sono supportate. È supportato l'utilizzo di SELECT all'interno di un blocco PL/SQL.
Qualsiasi istruzione SQL che può essere eseguita utilizzando EXECUTE IMMEDIATE funzionerà se non contiene bind variable o definisce.
-
Per caricare i metadati DDL in un repository di codici cloud:
VAR repo clob BEGIN DBMS_CLOUD_REPO.EXPORT_OBJECT( repo => :repo, object_type => 'PACKAGE', object_name => 'MYPACK', file_path => 'mypack.sql' ); END; / -
Per installare istruzioni SQL da un file:
VAR repo clob BEGIN DBMS_CLOUD_REPO.INSTALL_FILE( repo => :repo, file_path => 'test3.sql', stop_on_error => FALSE ); END; / -
Per installare istruzioni SQL da un buffer::
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; /
Per ulteriori informazioni, vedere DBMS_CLOUD_REPO SQL Install Operations.