oracle数据库同步技术

在数据库同步过程中常用的同步方法:
说明:
1.建立数据库之间的关联请参考上一篇《给力--oracle 与sql同步》
2.数据库同步脚本如下:
create or replace procedure prod_synchronized_data
as
--作者:chenab
--时间:2011-01-10
--功能:原XXX系统中人事与卡信息同步到XXX管理系统中
begin
-- *********************人事岗位同步 ******************* ----
--插入操作(没有的数据)
insert into _post@door
select * from _post s where not exists(
       select 1 from _post@door d where d.smt_postcode=s.smt_postcode
);
--更新改变的数据
update _post@door d set
(
  smt_postname,
  smt_postexplain,
  smt_dailycode,
  smt_dailyno,
  smt_shortname,
  smt_enlishname,
  smt_mnemonic,
  smt_codeby,
  smt_gbflag
)=
(select
  smt_postname,
  smt_postexplain,
  smt_dailycode,
  smt_dailyno,
  smt_shortname,
  smt_enlishname,
  smt_mnemonic,
  smt_codeby,
  smt_gbflag
  from _post s where s.smt_postcode=d.smt_postcode)
  where exists(
       select 1 from _post t  where t.smt_postcode=d.smt_postcode and
       not (
t.smt_postname = d.smt_postname and 
t.smt_postexplain =d.smt_postexplain and
t.smt_dailycode= d.smt_dailycode and
t.smt_dailyno=d.smt_dailyno and
t.smt_shortname = d.smt_shortname and
t.smt_enlishname = d.smt_enlishname and
t.smt_mnemonic =d.smt_mnemonic and
t.smt_codeby = d.smt_codeby and
t.smt_gbflag = d.smt_gbflag
 )
);
--删除操作
delete from _post@door d where not exists(
       select 1 from _post s  where d.smt_postcode=s.smt_postcode
);
commit;
-- *********************人事身份同步 *******************
--插入操作(没有的数据)
insert into _status@door
select * from _status s where not exists(
       select 1 from _status@door d where d.smt_statuscode=s.smt_statuscode
);
--更新改变的数据
update _status@door d set
(
smt_statusname,
smt_statusexplain,
smt_foriccard,
smt_forshowcard,
smt_dailycode,
smt_dailyno,
smt_shortname,
smt_enlishname,
smt_mnemonic,
smt_codeby,
smt_gbflag)=
(select
smt_statusname,
smt_statusexplain,
smt_foriccard,
smt_forshowcard,
smt_dailycode,
smt_dailyno,
smt_shortname,
smt_enlishname,
smt_mnemonic,
smt_codeby,
smt_gbflag 
  from _status s where s.smt_statuscode=d.smt_statuscode)
  where exists(
       select 1 from _status t  where t.smt_statuscode=d.smt_statuscode and
       not (
  t.smt_statusname=d.smt_statusname and
  t.smt_statusexplain=d.smt_statusexplain and
  t.smt_foriccard=d.smt_foriccard and
  t.smt_forshowcard=d.smt_forshowcard and
  t.smt_dailycode=d.smt_dailycode and
  t.smt_dailyno=d.smt_dailyno and
  t.smt_shortname=d.smt_shortname and
  t.smt_enlishname=d.smt_enlishname and
  t.smt_mnemonic=d.smt_mnemonic and
  t.smt_codeby=d.smt_codeby and
  t.smt_gbflag=d.smt_gbflag
       )
);
--删除操作
delete from _status@door d where not exists(
       select 1 from _status s  where d.smt_statuscode=s.smt_statuscode
);
commit;
-- *********************人事行政组织同步 ******************* ----
--插入操作(没有的数据)
insert into _dept@door
select * from _dept s where not exists(select 1 from _dept@door d where d.smt_deptcode=s.smt_deptcode);
--更新改变的数据
update _dept@door d set (
  smt_deptno,
  smt_deptname,
  smt_level,
  smt_least,
  smt_explain,
  smt_parent_id,
  smt_dailycode,
  smt_dailyno,
  smt_shortname,
  smt_enlishname,
  smt_mnemonic,
  smt_codeby,
  smt_gbflag,
  smt_index)=
(select
  smt_deptno,
  smt_deptname,
  smt_level,
  smt_least,
  smt_explain,
  smt_parent_id,
  smt_dailycode,
  smt_dailyno,
  smt_shortname,
  smt_enlishname,
  smt_mnemonic,
  smt_codeby,
  smt_gbflag,
  smt_index  
from _dept s where s.smt_deptcode=d.smt_deptcode)
  where exists(
  select 1 from _dept t  where t.smt_deptcode=d.smt_deptcode and not (
      t.smt_deptno=d.smt_deptno and
      t.smt_deptname=d.smt_deptname and
      t.smt_level=d.smt_level and
      t.smt_least=d.smt_least and
      t.smt_explain=d.smt_explain and
      t.smt_parent_id=d.smt_parent_id and
      t.smt_dailycode=d.smt_dailycode and
      t.smt_dailyno=d.smt_dailyno and
      t.smt_shortname=d.smt_shortname and
      t.smt_enlishname=d.smt_enlishname and
      t.smt_mnemonic=d.smt_mnemonic and
      t.smt_codeby=d.smt_codeby and
      t.smt_gbflag=d.smt_gbflag and
      t.smt_index=d.smt_index
       )
);
--删除
delete from _dept@door d where not exists(
       select 1 from  _dept s where d.smt_deptcode=s.smt_deptcode
);
commit;
--***********************人事信息同步 *******************----
--插入操作(没有的数据)
insert into _personnel@door (
  smt_personnelid,
  smt_name,
  smt_namespell,
  smt_sex,
  smt_birthday,
  smt_salaryno,
  smt_idcode,
  smt_idno,
  smt_datasource,
  smt_indatetime,
  smt_email,
  smt_deptcode,
  smt_postcode,
  smt_statuscode,
  smt_dossiercode,
  smt_native,
  smt_people,
  smt_married,
  smt_dwelling,
  smt_polity,
  smt_phoneno,
  smt_dailycode,
  smt_dailyno,
  smt_postalcode,
  smt_linkaddress,
  smt_mobiletelephone,
  smt_linkman,
  smt_linkunit,
  smt_linkmanaddress,
  smt_linkmanphone,
  smt_linkmanmobile,
  smt_levelcode,
  smt_countrycode,
  smt_idcardno,
  smt_visadate,
  smt_validitydate,
  smt_visaorgan,
  smt_specialtycode,
  smt_knowledgecode,
  smt_incompanydate,
  smt_salarycode,
  smt_specialtypostcode,
  smt_degreecode
)
select * from _personnel s where not exists(
       select 1 from _personnel@door d where d.smt_personnelid=s.smt_personnelid
);
--更新(更新改变的数据)
update _personnel@door d set

 smt_name,
 smt_namespell,
 smt_sex,
 smt_birthday,
 smt_salaryno,
 smt_idcode,
 smt_idno,
 smt_datasource,
 smt_indatetime,
 smt_email,
 smt_deptcode,
 smt_postcode,
 smt_statuscode,
 smt_dossiercode,
 smt_native,
 smt_people,
 smt_married,
 smt_dwelling,
 smt_polity,
 smt_phoneno,
 smt_dailycode,
 smt_dailyno,
 smt_postalcode,
 smt_linkaddress,
 smt_mobiletelephone,
 smt_linkman,
 smt_linkunit,
 smt_linkmanaddress,
 smt_linkmanphone,
 smt_linkmanmobile,
 smt_levelcode,
 smt_countrycode,
 smt_idcardno,
 smt_visadate,
 smt_validitydate,
 smt_visaorgan,
 smt_specialtycode,
 smt_knowledgecode,
 smt_incompanydate,
 smt_salarycode,
 smt_specialtypostcode,
 smt_degreecode
 
)=
(select
 smt_name,
 smt_namespell,
 smt_sex,
 smt_birthday,
 smt_salaryno,
 smt_idcode,
 smt_idno,
 smt_datasource,
 smt_indatetime,
 smt_email,
 smt_deptcode,
 smt_postcode,
 smt_statuscode,
 smt_dossiercode,
 smt_native,
 smt_people,
 smt_married,
 smt_dwelling,
 smt_polity,
 smt_phoneno,
 smt_dailycode,
 smt_dailyno,
 smt_postalcode,
 smt_linkaddress,
 smt_mobiletelephone,
 smt_linkman,
 smt_linkunit,
 smt_linkmanaddress,
 smt_linkmanphone,
 smt_linkmanmobile,
 smt_levelcode,
 smt_countrycode,
 smt_idcardno,
 smt_visadate,
 smt_validitydate,
 smt_visaorgan,
 smt_specialtycode,
 smt_knowledgecode,
 smt_incompanydate,
 smt_salarycode,
 smt_specialtypostcode,
 smt_degreecode   
 from _personnel s where s.smt_personnelid=d.smt_personnelid)
  where exists
  (select 1 from _personnel t  where t.smt_personnelid=d.smt_personnelid and not (
   t.smt_name = d.smt_name and
   t.smt_namespell = d.smt_namespell and
   t.smt_sex =d.smt_sex and
   t.smt_birthday =d.smt_birthday and
   t.smt_salaryno =d.smt_salaryno and
   t.smt_idcode =d.smt_idcode and
   t.smt_idno =d.smt_idno and
   t.smt_datasource =d.smt_datasource and
   t.smt_indatetime =d.smt_indatetime and
   t.smt_email =d.smt_email and
   t.smt_deptcode =d.smt_deptcode and
   t.smt_postcode =d.smt_postcode and
   t.smt_statuscode =d.smt_statuscode and
   t.smt_dossiercode =d.smt_dossiercode and
   t.smt_native =d.smt_native and
   t.smt_people =d.smt_people and
   t.smt_married =d.smt_married and
   t.smt_dwelling =d.smt_dwelling and
   t.smt_polity =d.smt_polity and
   t.smt_phoneno =d.smt_phoneno and
   t.smt_dailycode =d.smt_dailycode and
   t.smt_dailyno =d.smt_dailyno and
   t.smt_postalcode =d.smt_postalcode and
   t.smt_linkaddress =d.smt_linkaddress and
   t.smt_mobiletelephone =d.smt_mobiletelephone and
   t.smt_linkman =d.smt_linkman and
   t.smt_linkunit =d.smt_linkunit and
   t.smt_linkmanaddress =d.smt_linkmanaddress and
   t.smt_linkmanphone =d.smt_linkmanphone and
   t.smt_linkmanmobile =d.smt_linkmanmobile and
   t.smt_levelcode =d.smt_levelcode and
   t.smt_countrycode =d.smt_countrycode and
   t.smt_idcardno =d.smt_idcardno and
   t.smt_visadate =d.smt_visadate and
   t.smt_validitydate =d.smt_validitydate and
   t.smt_visaorgan =d.smt_visaorgan and
   t.smt_specialtycode =d.smt_specialtycode and
   t.smt_knowledgecode =d.smt_knowledgecode and
   t.smt_incompanydate =d.smt_incompanydate and
   t.smt_salarycode =d.smt_salarycode and
   t.smt_specialtypostcode =d.smt_specialtypostcode and
   t.smt_degreecode =d.smt_degreecode   
        )
  );
--删除操作
delete from _personnel@door d  where not exists(
       select 1 from _personnel s where d.smt_personnelid=s.smt_personnelid
);
commit;
-- *********************卡信息同步 ******************* ----
insert into _card@door
select * from _card s where not exists(
       select 1 from _card@door d where d.smt_cardid=s.smt_cardid
);
--更新改变的数据
update _card@door d set (
 smt_cardid,
 smt_personnelid,
 smt_cardno,
 smt_showcardno,
 smt_cardcode,
 smt_iccardcode,
 smt_bankcardcode,
  smt_cardserial,
  smt_accounts,
  smt_bankbakno,
  smt_carddate,
  smt_startcode,
  smt_startdate,
  smt_validitydate,
  smt_endcode,
  smt_enddate,
  smt_changedate,
  smt_password,
  smt_org_id,
  smt_operatorid,
  smt_dailycode,
  smt_dailyno,
  smt_deposit,
  smt_returndeposit,
  smt_depreciation,
  smt_blacklistinvoiceno,
  smt_oldcardid )=
 (select
  smt_cardid,
  smt_personnelid,
  smt_cardno,
  smt_showcardno,
  smt_cardcode,
  smt_iccardcode,
  smt_bankcardcode,
  smt_cardserial,
  smt_accounts,
  smt_bankbakno,
  smt_carddate,
  smt_startcode,
  smt_startdate,
  smt_validitydate,
  smt_endcode,
  smt_enddate,
  smt_changedate,
  smt_password,
  smt_org_id,
  smt_operatorid,
  smt_dailycode,
  smt_dailyno,
  smt_deposit,
  smt_returndeposit,
  smt_depreciation,
  smt_blacklistinvoiceno,
  smt_oldcardid 
  from _card where smt_cardid=d.smt_cardid)
  where exists(
       select 1 from _card s where s.smt_cardid=d.smt_cardid and
       not (
      s.smt_personnelid = d.smt_personnelid and
       s.smt_cardno = d.smt_cardno and
       s.smt_showcardno  = d.smt_showcardno and
       s.smt_cardcode = d.smt_cardcode and
       s.smt_iccardcode = d.smt_iccardcode and
       s.smt_bankcardcode = d.smt_bankcardcode and
       s.smt_cardserial = d.smt_cardserial and
       s.smt_accounts = d.smt_accounts and
       s.smt_bankbakno  = d.smt_bankbakno and
       s.smt_carddate = d.smt_carddate and
       s.smt_startcode = d.smt_startcode and
       s.smt_startdate = d.smt_startdate and
       s.smt_validitydate = d.smt_validitydate and
       s.smt_endcode = d.smt_endcode and
       s.smt_enddate = d.smt_enddate and
       s.smt_changedate = d.smt_changedate and
       s.smt_password = d.smt_password and
       s.smt_org_id = d.smt_org_id and
       s.smt_operatorid = d.smt_operatorid and
       s.smt_dailycode = d.smt_dailycode and
       s.smt_dailyno = d.smt_dailyno and
       s.smt_deposit = d.smt_deposit and
       s.smt_returndeposit = d.smt_returndeposit and
       s.smt_depreciation = d.smt_depreciation and
       s.smt_blacklistinvoiceno  = d.smt_blacklistinvoiceno and
       s.smt_oldcardid = d.smt_oldcardid  
       )
);
delete from _card@door d where not exists(
       select 1 from _card s where s.smt_cardid=d.smt_cardid
);
commit;
-- *********************用户卡片类型同步 ******************* ----
--插入操作(没有的数据)

insert into _iccardsort@door 
(
smt_iccardcode,
smt_iccardname,
smt_iccardexplain,
smt_deposit,
smt_backdeposit,
smt_addfarerate,
smt_backaddfare,
smt_losspoundage,
smt_damagepoundage,
smt_istemporary,
smt_dailycode,
smt_dailyno,
smt_regbylist,
smt_regbybank,
smt_regbyfinger,
smt_validdate,
smt_onemonthinmoneytimes,
smt_onemonthmaxmoney,
smt_onemonthoutmoneytimes,
smt_onemonthoutmaxmoney,
smt_function,
smt_addfare4,
smt_deposit4,
smt_addfarerate4,
smt_backfarerate5,
smt_addfare,
smt_regbybanktrans,
smt_regbylibrarycard,
--smt_defaultpassword,
smt_regbycodes,
smt_addfarerate1,
smt_addfare1,
smt_addfarerate2,
smt_addfare2,
smt_backfarerate3,
smt_addfarerate3,
smt_addfare3,
smt_depreciation,
smt_lagdate,
--addsmt_addfarerate4,
--addsmt_addfare4,
smt_validday

select 
smt_iccardcode,
smt_iccardname,
smt_iccardexplain,
smt_deposit,
smt_backdeposit,
smt_addfarerate,
smt_backaddfare,
smt_losspoundage,
smt_damagepoundage,
smt_istemporary,
smt_dailycode,
smt_dailyno,
smt_regbylist,
smt_regbybank,
smt_regbyfinger,
smt_validdate,
smt_onemonthinmoneytimes,
smt_onemonthmaxmoney,
smt_onemonthoutmoneytimes,
smt_onemonthoutmaxmoney,
smt_function,
smt_addfare4,
smt_deposit4,
smt_addfarerate4,
smt_backfarerate5,
smt_addfare,
smt_regbybanktrans,
smt_regbylibrarycard,
--smt_defaultpassword,
smt_regbycodes,
smt_addfarerate1,
smt_addfare1,
smt_addfarerate2,
smt_addfare2,
smt_backfarerate3,
smt_addfarerate3,
smt_addfare3,
smt_depreciation,
smt_lagdate,
--addsmt_addfarerate4,
--addsmt_addfare4,
smt_validday
 from _iccardsort s where not exists(
       select 1 from _iccardsort@door d where d.smt_iccardcode=s.smt_iccardcode
);
--更新改变的数据
update _iccardsort@door d set (
 smt_iccardcode,
  smt_iccardname,
  smt_iccardexplain,
  smt_deposit,
  smt_backdeposit,
  smt_addfarerate,
  smt_backaddfare,
  smt_losspoundage,
  smt_damagepoundage,
  smt_istemporary,
  smt_dailycode,
  smt_dailyno,
  smt_regbylist,
  smt_regbybank,
  smt_regbyfinger,
  smt_validdate,
  smt_onemonthinmoneytimes,
  smt_onemonthmaxmoney,
  smt_onemonthoutmoneytimes,
  smt_onemonthoutmaxmoney,
  smt_function,
  smt_addfare4,
  smt_deposit4,
  smt_addfarerate4,
  smt_backfarerate5,
  smt_addfare,
  smt_regbybanktrans,
  smt_regbylibrarycard,
  --smt_defaultpassword,
  smt_regbycodes,
  smt_addfarerate1,
  smt_addfare1,
  smt_addfarerate2,
  smt_addfare2,
  smt_backfarerate3,
  smt_addfarerate3,
  smt_addfare3,
  smt_depreciation,
  smt_lagdate,
  --addsmt_addfarerate4,
  --addsmt_addfare4,
  smt_validday )=
 (select
 smt_iccardcode,
  smt_iccardname,
  smt_iccardexplain,
  smt_deposit,
  smt_backdeposit,
  smt_addfarerate,
  smt_backaddfare,
  smt_losspoundage,
  smt_damagepoundage,
  smt_istemporary,
  smt_dailycode,
  smt_dailyno,
  smt_regbylist,
  smt_regbybank,
  smt_regbyfinger,
  smt_validdate,
  smt_onemonthinmoneytimes,
  smt_onemonthmaxmoney,
  smt_onemonthoutmoneytimes,
  smt_onemonthoutmaxmoney,
  smt_function,
  smt_addfare4,
  smt_deposit4,
  smt_addfarerate4,
  smt_backfarerate5,
  smt_addfare,
  smt_regbybanktrans,
  smt_regbylibrarycard,
  --smt_defaultpassword,
  smt_regbycodes,
  smt_addfarerate1,
  smt_addfare1,
  smt_addfarerate2,
  smt_addfare2,
  smt_backfarerate3,
  smt_addfarerate3,
  smt_addfare3,
  smt_depreciation,
  smt_lagdate,
  --addsmt_addfarerate4,
  --addsmt_addfare4,
  smt_validday
  from _iccardsort where smt_iccardcode=d.smt_iccardcode)
  where exists(
       select 1 from _iccardsort s where s.smt_iccardcode=d.smt_iccardcode and
       not (   
        s.smt_iccardname = d.smt_iccardname and
        s.smt_iccardexplain = d.smt_iccardexplain and 
        s.smt_deposit = d.smt_deposit and 
        s.smt_backdeposit = d.smt_backdeposit and 
        s.smt_addfarerate= d.smt_addfarerate and 
        s.smt_backaddfare = d.smt_backaddfare and 
        s.smt_losspoundage = d.smt_losspoundage and 
        s.smt_damagepoundage = d.smt_damagepoundage and 
        s.smt_istemporary = d.smt_istemporary and 
        s.smt_dailycode= d.smt_dailycode and 
        s.smt_dailyno =d.smt_dailyno and 
        s.smt_regbylist =d.smt_regbylist and 
        s.smt_regbybank =d.smt_regbybank and 
        s.smt_regbyfinger= d.smt_regbyfinger and 
        s.smt_validdate = d.smt_validdate and 
        s.smt_onemonthinmoneytimes = d.smt_onemonthinmoneytimes and 
        s.smt_onemonthmaxmoney=d.smt_onemonthmaxmoney and 
        s.smt_onemonthoutmoneytimes =d.smt_onemonthoutmoneytimes and 
        s.smt_onemonthoutmaxmoney = d.smt_onemonthoutmaxmoney and 
        s.smt_function = d.smt_function and 
        s.smt_addfare4 = d.smt_addfare4 and 
        s.smt_deposit4 = d.smt_deposit4 and 
        s.smt_addfarerate4 = d.smt_addfarerate4 and 
        s.smt_backfarerate5 = d.smt_backfarerate5 and 
        s.smt_addfare = d.smt_addfare and 
        s.smt_regbybanktrans =d.smt_regbybanktrans and 
        s.smt_regbylibrarycard = d.smt_regbylibrarycard and 
        --smt_defaultpassword,
        s.smt_regbycodes = d.smt_regbycodes and 
        s.smt_addfarerate1 = d.smt_addfarerate1 and 
        s.smt_addfare1 =d.smt_addfare1 and 
        s.smt_addfarerate2 = d.smt_addfarerate2 and 
        s.smt_addfare2 = d.smt_addfare2 and 
        s.smt_backfarerate3 = d.smt_backfarerate3 

时间: 2024-10-30 23:41:45

oracle数据库同步技术的相关文章

利用MSSQL复制功能实现与Oracle数据库同步

  1.分别建立链接对数据库进行操作,SQLServer可以用ADO.NET,操作Oracle可以用OLEDB或者用System.Data.OracleClient(需要添加引用才能用) 这种方案的优点就是简单,各自写各自的数据库操作代码,缺点就是不能将两个数据库中的表直接进行联合查询,链接Oracle的每台机器必须安装OracleClient才可以使用. 2.使用同义词操作Oracle数据库. 这种方法的具体操作我在以前的文章中已经写清楚了,这样做一来可以进行表的联合查询二来不需要每台机器都安

飞天遁地、来去自如?Oracle数据库秉承技术当先,用户也来说说看

近日,向来以厚积薄发闻名的Oracle数据库,带着创新的云理念.新近的云技术以及一位响当当的数据库掌门人Andy(甲骨文数据库全球执行副总裁,甲骨文员工号130)登陆中国. "数据库上云"的事儿暂且不表,我们先看看在过去的一个财年以及更长时间内,甲骨文在研发及创新方面的投入数据.58亿是在过去的一个财年中投入到研发领域的资金,也就是一年58亿美金;450亿是什么概念?过去12年Oracle投放在研发中的就有450亿美金.从大多数企业出发,这个数字可能是企业销售收入都无法比肩的水平,充分

ORACLE数据库备份技术

1 引言 ORACLE 数据库是一种大型关系型的数据库,可以存贮达到存贮 TB 的数据,那么如何保证这些数据的安全尤其至关重要,我们从 1991 年开始使用 ORACLE 数据库,通过这些年的使用,我们制定了一整套的 ORACLE 数据库的备份制度.现在把我们的备份制度介绍给大家,供大家参考. 2 根据实际需要决定数据库的运行方式 ORACLE 数据库有两种运行方式:一是归档方式( ARCHIVELOG ),归档方式的目的是当数据库发生故障时最大限度恢复所有已提交的事物:二是不归档方式 (NOA

《Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南 》一2.1 Oracle数据库的发展

2.1 Oracle数据库的发展 2.1.1 Oracle数据库的应用现状 Oracle数据库系统是Oracle(甲骨文)公司于1979年发布的世界上第一个关系数据库管理系统.经过30多年的发展,Oracle数据库系统已经应用于各个领域,在数据库市场占据主导地位.Oracle公司也成为当今世界上最大的数据库厂商和最大的商用软件供应商,向遍及全球的145个国家和地区的用户提供数据库.工具和应用软件,以及相关的咨询.培训和支持服务.Oracle数据库产品是当前市场占有率最高的数据库产品,约为49%.

oracle数据库性能调优技术:深入理解单表执行计划

一.概述 这篇文章是数据库性能调优技术的第二篇.上一篇讲解的索引调优是数据库性能调优技术的基础.这篇讲解的深入理解单表执行计划,是数据库性能调优的有力工具. 查询语句可以有多种可选执行计划,如何选择效率最高的执行计划?达梦数据库.oracle数据库.sql server数据库都是采用基于成本的查询优化,对备选执行计划进行打分,选择大家最小的执行计划进行执行.这些内容,我会在后续的几篇文章中进行详细的描述.在此之前,我们首先需要掌握如何理解数据库执行计划.这篇文章讲解只涉及单表操作的执行计划. 达

ORACLE数据库对象统计分析技术应用

oracle|对象|数据|数据库|统计 数据库对象统计分析技术应用   ORACLE在执行SQL时如果使用成本方式分析则所有的成本分析信息来源依靠于系统的统计分析表(DBA_TABLES.DBA_INDEXES.DBA_TAB_COLUMNS)数据,如果说统计分析的数据是不准确的,那可能会使ORACLE分析出来的路径执行性能极差,所以统计分析数据是影响ORACLE性能极重要的信息.   统计分析主要包括产生表及索引的统计信息 表的统计信息主要包括表的行数,每行的平均长度(字节),空闲块,统计时间

Oracle数据库性能优化技术

摘要: Oracle数据库是当前应用最广泛的大型数据库之一,而其性优化直接关系到系统的运行效率.本文以数据库性能优化的基本原则为出发点,阐述了在数据库设计阶段如何避免竞争和如何优化数据访问,在数据库运行阶段如何从操作系统和数据库实例级别上调整内存和I/O来达到数据库性能优化的各种技术. 关键词:Oracle数据库:性能优化:内存:I/O 1. 引言 随着网络应用和电子商务的不断发展,各个站点的访问量越来越大,数据库规模也随之不断的扩大,数据库系统的性能问题就越来越突出,因此,如何对数据库进行调优

oracle数据库性能调优技术:深入理解嵌套循环执行计划

一.概述 这篇文章是数据库性能调优技术的第三篇.上一篇文章讲解了深入了解单表执行计划,单表执行计划是理解多表执行计划的基础. 两张表的连接有三种执行方式:1)嵌套循环连接:2)散列连接:3)归并连接.两张表连接时选择这三种中的哪一种呢?这取决于索引.以及连接的代价.在该系列的第三篇(本文)文章中讲解嵌套循环连接,第四篇文章中讲解散列连接,第五篇文章中讲解归并连接.在第六篇以后会分析IN子查询以及EXISTS子查询. 达梦数据库.oracle数据库.sql server数据库在数据库执行计划方面并

oracle数据库性能调优技术:深入理解散列连接执行计划

一.概述 这篇文章是数据库性能调优技术系列的第四篇.上一篇文章讲解了深入理解嵌套循环连接执行计划. 上一篇文章中提到两张表的连接有三种执行方式:1)嵌套循环连接:2)散列连接:3)归并连接.散列连接是很重要的连接方式,包含比较多的内容,这篇文章中讲解为什么需要散列连接?如何理解散列连接? 和前三篇文章一样,本文讲解的是些比较抽象的内容,不拘泥于具体的数据.所以本文中使用的代价评估模型也是抽象的,假设了数据库缓冲区大小只有一个页,新页的读取必然导致旧页的释放.读完本文之后应该能够读懂达梦数据库.o