開發庫與測試庫schema同步的思路及相關過程

2022-04-19 12:48:30 字數 1764 閱讀 8290

**自:

如果要維護多套開發與測試的資料庫環境,如果schema變動很頻繁,那dba的工作量也就非常可觀,稍一不慎,就會給開發以及測試有不好的影響,所以同步開發與測試環境的是必不可少的,d.c.b.a曾經開發過乙個比較並同步schema的工具,但需要手工執行去同步,偶這次介紹的是通過job+procedure來完成的。

1 在源庫上建立捕獲ddl的觸發器與表

a 建立表

create table manager.ddl$trace

(login_user varchar2(30),

ddl_time date,

program varchar2(64),

sid number,

schema_user varchar2(30),

schema_object varchar2(30),

ddl_sql varchar2(4000),

id number not null,

status number,

errm varchar2(4000)

)b 建立觸發器

create or replace trigger ddl_trigger

before ddl on database

/*--last modify date:2006-10-18

--last modifier:yekai

--desc:replication ddl to test database

*/declare

n number;

str_stmt varchar2(4000);

sql_text ora_name_list_t;

l_trace number;

l_sid number;

str_session v$session%rowtype;

begin

--get ddl script

n := ora_sql_txt(sql_text);

for i in 1..n loop

str_stmt := substr(str_stmt||sql_text(i), 1, 3000);

end loop;

--get modify status and permission

select count(*) into l_trace

from dual

where sys_context('userenv','ip_address') is not null

and lower(str_stmt) not like 'truncate% purge snapshot log%'

and lower(str_stmt) not like 'alter% compile%'

and lower(str_stmt) not like 'alter% session%'

and lower(str_stmt) not like '%create%'

and lower(str_stmt) not like '%alter%'

and lower(str_stmt) not like '%drop%'

and lower(str_stmt) not like '%grant%';

--get session information

select * into str_session

from v$session

where sid = (select sid from v$mystat where rownum = 1);

條碼配置正式庫與測試庫同步

目標 1 相同的程式和.r.結果一致 2 相同的配置內容 過程一致 a 13讀入的字段要一致 b 14可以修改已經讀入的字段。c 16一致 版本 維護人 校驗 預設值 迴圈層數 字段順序 資料格式程式邏輯要一致。d 19要一致 編譯版本 許可權要一致。步驟 1 比對檔案.p i d,如果19以後檔案...

資料庫 catalog與schema簡介

在sql環境下catalog和schema都屬於抽象概念,主要用來解決命名衝突問題 乙個資料庫系統包含多個catalog,每個catalog包含多個schema,每個schema包含多個資料庫物件 表 檢視 欄位等 如資料庫物件表的全限定名可表示為 catalog名.schema名.表名 從實現的角...

資料庫 schema含義

資料庫schema有兩種含義,一種是概念上的schema,指的是一組ddl語句集,該語句集完整地描述了資料庫的結構。還有一種是物理上的schema,指的是資料庫中的乙個名字空間,它包含一組表 檢視和儲存過程等命名物件。物理schema可以通過標準sql語句來建立 更新和修改。例如以下sql語句建立了...