使用自治式 AI 資料庫管理及儲存雲端程式碼儲存區域中的檔案
自治式 AI 資料庫提供管理及儲存雲端程式碼 (Git) 儲存區域中檔案的常式。支援的雲端程式碼儲存區域包括:GitHub、AWS CodeCommit 以及 Azure 儲存區域。
關於使用自治式 AI 資料庫的雲端程式碼儲存區域
DBMS_CLOUD_REPO 套裝程式提供從自治式 AI 資料庫存取雲端程式碼儲存區域的單一介面。
支援的雲端程式碼儲存區域提供下列功能:
-
Git 版本控制系統: Git 是用來追蹤任何檔案集變更的軟體,通常用於協調程式設計人員在軟體開發期間協同開發原始程式碼的工作。其目標包括速度、資料完整性,以及對分散式非線性工作流程的支援。
-
Git 儲存區域:Git 儲存區域是您專案的虛擬儲存。它可以讓您儲存程式碼的版本,您可以視需要加以存取。
DBMS_CLOUD_REPO API 使用儲存區域控制碼 (REPO 物件)。儲存區域控制碼是一個不通透的 JSON 物件,代表特定雲端提供者的雲端程式碼儲存區域。REPO 物件可以傳送到不同的 DBMS_CLOUD_REPO API。此不通透物件可確保 DBMS_CLOUD_REPO 程序和函數與多重雲端相容;從一個雲端程式碼儲存區域提供者移轉至另一個雲端程式碼儲存區域時,您不需要變更程式碼。
自治式 AI 資料庫提供下列功能,協助您使用雲端程式碼儲存區域:
-
儲存區域初始化作業,以允許您起始儲存區域。
請參閱起始雲端程式碼儲存區域以瞭解詳細資訊。
-
可讓您建立、列出、更新或刪除儲存區域的儲存區域管理作業。
請參閱建立及管理雲端程式碼儲存區域以瞭解詳細資訊。
-
儲存區域分支管理作業,可讓您建立、列出、合併或刪除儲存區域中的分支。
請參閱在雲端程式碼儲存區域中建立及管理分支以瞭解詳細資訊。
-
將綱要中所有物件的描述資料 DDL 匯出至儲存區域。
請參閱將綱要物件匯出至雲端程式碼儲存區域分支以瞭解詳細資訊。
-
上傳、下載、更新及刪除檔案的儲存區域檔案管理作業。
如需詳細資訊,請參閱搭配雲端程式碼儲存區域使用檔案作業。
-
可讓您將資料庫物件描述資料 DDL 匯出至儲存區域,並從「雲端程式碼儲存區域」將 SQL 敘述句安裝至資料庫的 SQL 安裝作業。
如需詳細資訊,請參閱搭配雲端程式碼儲存區域使用 SQL 安裝作業。
起始雲端程式碼儲存區域
DBMS_CLOUD_REPO 初始化常式會初始化「雲端程式碼儲存區域」。取得「雲端程式碼儲存區域」控點之後,即可使用控點來存取「雲端程式碼儲存區域」。
起始「雲端程式碼儲存區域」:
-
建立證明資料以存取「雲端程式碼儲存區域」。
如需建立證明資料的相關資訊,請參閱 CREATE_CREDENTIAL 程序。
-
視儲存區域、GitHub、Azure Repos 或 AWS CodeCommit 而定,使用特定儲存區域的參數呼叫
DBMS_CLOUD_REPO.INIT_REPO以取得儲存區域控制碼。下列範例提供每個支援之「雲端程式碼儲存區域」的範例。
-
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 儲存區域初始化:
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 初始化:
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; /
-
請參閱 DBMS_CLOUD_REPO 初始化作業以瞭解初始化函數的詳細資訊。
建立及管理雲端程式碼儲存區域
DBMS_CLOUD_REPO 管理常式可讓您透過建立、列出、更新或刪除儲存區域來管理「雲端程式碼儲存區域」。
首先,取得「雲端程式碼儲存區域」控點以提供存取儲存區域。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。
-
建立儲存區域:
VAR repo clob BEGIN DBMS_CLOUD_REPO.CREATE_REPOSITORY( repo => :repo, description => 'test repo' ); END; / -
更新儲存區域:
VAR repo clob DEFINE repo_name='test_repo'; BEGIN DBMS_CLOUD_REPO.UPDATE_REPOSITORY( repo => :repo, new_name => '&repo_name' || '_new' ); END; / -
列出儲存區域:
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); -
刪除儲存區域:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_REPOSITORY( repo => :repo ); END; /
請參閱 DBMS_CLOUD_REPO 儲存區域管理作業以瞭解詳細資訊。
在雲端程式碼儲存區域中建立及管理分支
DBMS_CLOUD_REPO 管理常式可讓您透過建立、列出、合併或刪除儲存區域中的分支來管理「雲端程式碼儲存區域」分支。
若要執行「雲端程式碼儲存區域」分支管理作業,您必須先:
-
建立證明資料。
請參閱 CREATE_CREDENTIAL 程序瞭解詳細資訊。
-
取得控點。
請參閱起始雲端程式碼儲存區域以瞭解詳細資訊。
-
建立儲存庫。
請參閱建立及管理雲端程式碼儲存區域以瞭解詳細資訊。
-
以 ADMIN 使用者身分登入,或擁有
DBMS_CLOUD_REPO的EXECUTE權限。
-
在「雲端程式碼儲存區域」中建立分支:
BEGIN DBMS_CLOUD_REPO.CREATE_BRANCH ( repo => l_repo, branch_name => 'test_branch', parent_branch => 'main' ); END; / -
刪除「雲端程式碼儲存區域」中的分支:
BEGIN DBMS_CLOUD_REPO.DELETE_BRANCH ( repo => l_repo, branch_name => 'test_branch' ); END; / -
若要將分支合併至「雲端程式碼儲存區域」中的另一個分支:
BEGIN DBMS_CLOUD_REPO.MERGE_BRANCH ( repo => l_repo, branch_name => 'test_branch', target_branch_name => 'main' ); END; / -
列出「雲端程式碼儲存區域」中的分支:
SELECT * FROM DBMS_CLOUD_REPO.LIST_BRANCHES (repo => l_repo); -
您可以根據下列項目,在「雲端程式碼儲存區域」的分支中列出確認項目;
-
儲存區域
-
分公司
-
分支的檔案路徑
-
SHA/commit_id
注意: SHA 是由十六進位字元 (0-9 和 a-f) 組成的總和檢查 40 個字元字串。
若要根據儲存區域列出確認項目:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo);若要根據儲存區域、commit_id 以及分支的檔案路徑列出確認:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => l_repo, commit_id => '66dd2b23b74cd0afabd11af66c6aa9c550540ba6', file_path => 'sub_dir/test11.sql'若要根據儲存區域列出確認項目,以及分支的檔案路徑:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1');若要根據儲存庫、分支的 branch_name 和檔案路徑列出確認:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, branch_name => 'branch1', file_path => 'sub_dir/test11.sql');若要根據儲存區域和分支的 commit_id 列出確認:
SELECT * FROM DBMS_CLOUD_REPO.LIST_COMMITS ( repo => :repo, commit_id =>'66dd2b23b74cd0afabd11af66c6aa9c550540ba6'); -
請參閱 DBMS_CLOUD_REPO Repository Branch Management Operations 以瞭解詳細資訊。
將綱要物件匯出至雲端程式碼儲存區域分支
DBMS_CLOUD_REPO 管理常式可讓您將綱要中物件的描述資料匯出至「雲端程式碼儲存區域」分支。您可以根據物件名稱或物件類型來篩選清單。
若要匯出綱要描述資料,您必須先:
-
建立證明資料。
請參閱 CREATE_CREDENTIAL 程序瞭解詳細資訊。
-
取得控點。
請參閱起始雲端程式碼儲存區域以瞭解詳細資訊。
-
建立儲存庫。
請參閱建立及管理雲端程式碼儲存區域以瞭解詳細資訊。
-
以 ADMIN 使用者身分登入,或擁有
DBMS_CLOUD_REPO的EXECUTE權限。
您可以使用 EXPORT_SCHEMA 程序將綱要中物件的描述資料匯出至「雲端程式碼儲存區域」分支:
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;
/
此範例會將 USER1 綱要的描述資料匯出至 l_repo 儲存區域。匯出包括表格 EMPLOYEE_SALARY 和 EMPLOYEE_ADDRESS 的描述資料,以及任何包含 OFFICE 的表格名稱。它也會匯出 EMPLOYEE_RECORD_SEQ 順序,並排除綱要中的檢視。
如需詳細資訊,請參閱 EXPORT_SCHEMA Procedure 。
搭配雲端程式碼儲存區域使用檔案作業
DBMS_CLOUD_REPO 檔案作業可讓您在「雲端程式碼儲存區域」中建立、取得、列出、更新或刪除檔案。
使用檔案作業之前,請先取得「雲端程式碼儲存區域」控制碼。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。
您還需要先建立儲存庫,才能使用檔案。如需詳細資訊,請參閱「建立及管理雲端程式碼儲存區域」。
- 要取得檔案:
SELECT DBMS_CLOUD_REPO.GET_FILE(repo => :repo, file_path => 'test1.sql') -
要建立檔案:
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; / -
更新檔案:
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; / -
若要列出檔案,請執行下列動作:
SELECT id, name, bytes, url FROM DBMS_CLOUD_REPO.LIST_FILES(repo => :repo); -
刪除檔案:
VAR repo clob BEGIN DBMS_CLOUD_REPO.DELETE_FILE( repo => :repo, file_path => 'test1.sql' ); END; /
請參閱 DBMS_CLOUD_REPO 檔案作業以瞭解詳細資訊。
搭配雲端程式碼儲存區域使用 SQL 安裝作業
DBMS_CLOUD_REPO SQL 安裝作業可讓您從「雲端程式碼儲存區域」儲存及下載 SQL 命令檔。
使用 SQL 安裝作業之前,請先取得「雲端程式碼儲存區域」處理。如需詳細資訊,請參閱初始化雲端程式碼儲存區域。
您還需要先建立儲存區域,再使用「SQL 安裝」作業。如需詳細資訊,請參閱「建立及管理雲端程式碼儲存區域」。
命令檔的用途為綱要安裝命令檔,而非一般 SQL 命令檔:
-
命令檔不能包含 SQL*Plus 從屬端特定的命令。
-
命令檔不能包含連結變數或參數化命令檔。
-
SQL 陳述式必須在新行 (/) 上以斜線終止。
-
命令檔可以包含 DDL、DML PLSQL 敘述句,但不支援直接的
SELECT敘述句。支援在 PL/SQL 區塊中使用 SELECT。
如果任何可使用 EXECUTE IMMEDIATE 執行的 SQL 陳述式未包含連結變數或定義,則其將可運作。
-
將 DDL 描述資料上傳至「雲端程式碼儲存區域」:
VAR repo clob BEGIN DBMS_CLOUD_REPO.EXPORT_OBJECT( repo => :repo, object_type => 'PACKAGE', object_name => 'MYPACK', file_path => 'mypack.sql' ); END; / -
若要從檔案安裝 SQL 陳述式:
VAR repo clob BEGIN DBMS_CLOUD_REPO.INSTALL_FILE( repo => :repo, file_path => 'test3.sql', stop_on_error => FALSE ); END; / -
從緩衝區安裝 SQL 敘述句:
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; /
請參閱 DBMS_CLOUD_REPO SQL 安裝作業以瞭解詳細資訊。