999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Oracle Logminer的數(shù)據(jù)同步技術(shù)研究

2020-07-18 11:51:52湯學(xué)達(dá)桂文軍
關(guān)鍵詞:數(shù)據(jù)庫(kù)分析

◆張 媛 湯學(xué)達(dá) 桂文軍

(中國(guó)電子科技集團(tuán)公司第二十八研究所 江蘇 210007)

隨著指揮信息系統(tǒng)的不斷發(fā)展和建設(shè),當(dāng)前各級(jí)指揮信息系統(tǒng)呈現(xiàn)物理位置分散、自成體系、數(shù)據(jù)不統(tǒng)一的特點(diǎn),為構(gòu)建邏輯上集中統(tǒng)一的指揮信息系統(tǒng)數(shù)據(jù)服務(wù)平臺(tái),滿(mǎn)足各類(lèi)業(yè)務(wù)應(yīng)用數(shù)據(jù)訪(fǎng)問(wèn)需求,首先必須解決各級(jí)指揮信息系統(tǒng)之間的數(shù)據(jù)同步共享問(wèn)題。本文結(jié)合現(xiàn)有指揮信息系統(tǒng)采用符合特定軍用傳輸協(xié)議的手段進(jìn)行信息交換的特點(diǎn),在深入研究Oracle目前商用同步技術(shù)的基礎(chǔ)上,提出了一種基于Oracle Logminer的數(shù)據(jù)同步方法,為在不同指揮信息系統(tǒng)之間保持共享數(shù)據(jù)一致性,確保不同信息系統(tǒng)在統(tǒng)一的共享數(shù)據(jù)視圖下工作提供了一種有效的解決途徑。

1 數(shù)據(jù)庫(kù)同步技術(shù)

(1)基于觸發(fā)器的數(shù)據(jù)同步技術(shù)

在 ORACLE數(shù)據(jù)庫(kù)中,觸發(fā)器(Trigger)是存儲(chǔ)在數(shù)據(jù)庫(kù)中的過(guò)程。當(dāng)特定的某個(gè)事件(如對(duì)表或者視圖進(jìn)行插入、刪除或者修改)發(fā)生后,這個(gè)過(guò)程就會(huì)被觸發(fā)執(zhí)行。基于觸發(fā)器的數(shù)據(jù)同步技術(shù)的原理是在每一個(gè)同步對(duì)象表上創(chuàng)建增加、刪除、修改三種類(lèi)型的觸發(fā)器,通過(guò)觸發(fā)器捕獲到同步對(duì)象表中的數(shù)據(jù)變更[1]。

(2)基于物化視圖的數(shù)據(jù)同步技術(shù)

物化視圖(Materialized View)又稱(chēng)快照(Snapshot),是對(duì)現(xiàn)有數(shù)據(jù)表或者視圖查詢(xún)后的結(jié)果,物化視圖既保存了查詢(xún)語(yǔ)句,又保存了查詢(xún)后的結(jié)果集[2]。物化視圖的快速刷新是通過(guò)物化視圖日志實(shí)現(xiàn)的,物化視圖日志記錄了對(duì)應(yīng)的數(shù)據(jù)表的增加、刪除、修改等數(shù)據(jù)操作,定期刷新物化視圖,捕獲物化視圖日志的變化可以實(shí)現(xiàn)數(shù)據(jù)同步。

(3)DataGuard數(shù)據(jù)同步技術(shù)

DataGuard是Oracle推出的一種可用性高的數(shù)據(jù)庫(kù)方案,它是在主節(jié)點(diǎn)和備用節(jié)點(diǎn)間通過(guò)日志同步來(lái)保證數(shù)據(jù)庫(kù)一對(duì)一的整體復(fù)制[3]。DataGuard提供了三種數(shù)據(jù)保護(hù)模式:最大性能模式、最大保護(hù)模式和最大可用模式。最大性能模式可以實(shí)現(xiàn)在不影響源數(shù)據(jù)庫(kù)性能的基礎(chǔ)上最大限度提高數(shù)據(jù)保護(hù)等級(jí);最大保護(hù)模式可以確保數(shù)據(jù)不丟失,但會(huì)影響數(shù)據(jù)庫(kù)的可用性;最大可用模式在不影響源數(shù)據(jù)庫(kù)使用性能的條件下盡可能提高數(shù)據(jù)保護(hù)等級(jí)。

(4)Streams數(shù)據(jù)同步技術(shù)

Streams是Oracle為提高數(shù)據(jù)庫(kù)的高可用性和數(shù)據(jù)的分發(fā)共享功能而設(shè)計(jì)的,在 Oracle 9i之前這個(gè)功能被稱(chēng)為 Advance Replication(高級(jí)復(fù)制)[4]。Streams采用高級(jí)隊(duì)列技術(shù)將歸檔日志解析成DDL及DML語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)庫(kù)之間的同步[5]。Streams具有較好的靈活性,在復(fù)制數(shù)據(jù)的同時(shí),不影響數(shù)據(jù)庫(kù)其他操作的運(yùn)行,支持一對(duì)多、雙向復(fù)制等多種復(fù)制方式,但Streams技術(shù)存在一定的數(shù)據(jù)局限性,并不能完全支持所有的數(shù)據(jù)類(lèi)型和對(duì)象,而且Streams數(shù)據(jù)同步技術(shù)維護(hù)起來(lái)有一定的難度。

2 Logminer技術(shù)介紹

2.1 Logminer功能

在Oracle數(shù)據(jù)庫(kù)中,所有對(duì)數(shù)據(jù)庫(kù)進(jìn)行的更改操作都被記錄到重做日志文件和歸檔日志文件中,日志文件可用于數(shù)據(jù)庫(kù)的恢復(fù)。但Oracle 8i以前這些日志文件內(nèi)容不能直接閱讀,使用一般的閱讀工具查看到的都是亂碼,Oracle 8i中首次提供了一個(gè)內(nèi)置的分析工具——Logminer(日志挖掘),使用Logminer工具,DBA可以對(duì)數(shù)據(jù)庫(kù)的日志進(jìn)行分析[6]。Logminer具有以下優(yōu)點(diǎn):(1)實(shí)現(xiàn)事務(wù)級(jí)、細(xì)粒度的數(shù)據(jù)庫(kù)恢復(fù),通過(guò)執(zhí)行相應(yīng)的 UNDO操作取消用戶(hù)執(zhí)行的錯(cuò)誤操作;(2)實(shí)現(xiàn)事后審計(jì),利用Logminer的分析結(jié)果,可以追蹤在數(shù)據(jù)庫(kù)上執(zhí)行的所有DML和DDL操作,取得這些操作的執(zhí)行者、執(zhí)行時(shí)間等重要信息;(3)優(yōu)化和擴(kuò)容,利用分析結(jié)果獲取數(shù)據(jù)的增長(zhǎng)模式實(shí)現(xiàn)優(yōu)化和擴(kuò)容[7]。

2.2 Logminer基本組成

(1)源數(shù)據(jù)庫(kù)

源數(shù)據(jù)庫(kù)(Source Database)為要被分析的數(shù)據(jù)庫(kù),Logminer工具要添加的日志文件來(lái)源于此數(shù)據(jù)庫(kù)。

分析數(shù)據(jù)庫(kù)

分析數(shù)據(jù)庫(kù)(Mining Database)是用來(lái)執(zhí)行Logminer的數(shù)據(jù)庫(kù),實(shí)際操作中要求它與源數(shù)據(jù)庫(kù)處于相同的硬件平臺(tái),具有相同的字符集且版本不能低于源數(shù)據(jù)庫(kù),源數(shù)據(jù)庫(kù)和分析數(shù)據(jù)庫(kù)可以是同一個(gè)數(shù)據(jù)庫(kù)。

(3)Logminer字典

Logminer字典是Oracle提供的一個(gè)將內(nèi)部的數(shù)據(jù)庫(kù)對(duì)象ID和數(shù)據(jù)類(lèi)型、二進(jìn)制字段值翻譯為一般用戶(hù)能正常理解使用的數(shù)據(jù)庫(kù)對(duì)象名、數(shù)據(jù)類(lèi)型及字段值的工具。

Logminer分析工具包是由一組PL/SQL包和一些動(dòng)態(tài)視圖組成。其中用于建立程序包的2個(gè)PL/SQL文件分別為dbmslm.sql和 dbmslmd.sql,與分析相關(guān)的 4個(gè)動(dòng)態(tài)視圖是v$logmnr_dictionary、v$logmnr_parameters、v$logmnr_logs 和v$logmnr_contents。v$logmnr_dictionary提供了Logminer可使用的數(shù)據(jù)字典信息,v$logmnr_parameter保存了當(dāng)前Logminer所設(shè)定的限制參數(shù)信息,查看v$logmnr_logs可以獲取當(dāng)前用于分析的日志列表,v$logmnr_contents記錄的是日志分析結(jié)果的原子操作[8]。

3 利用Logminer進(jìn)行實(shí)時(shí)同步的設(shè)計(jì)實(shí)現(xiàn)

3.1 基于Logminer的數(shù)據(jù)同步原理

在圖1中,源數(shù)據(jù)庫(kù)中有數(shù)據(jù)表A,目的數(shù)據(jù)庫(kù)中有數(shù)據(jù)表B,表A和表B的結(jié)構(gòu)相同,當(dāng)數(shù)據(jù)表A中的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)表B也同步變化,保證B表和A表中的數(shù)據(jù)始終保持一致,基于Logminer數(shù)據(jù)同步的基本原理描述如下:

(1)在源數(shù)據(jù)庫(kù)中,用戶(hù)或者應(yīng)用程序?qū)?shù)據(jù)表A進(jìn)行了增加、刪除或者修改操作,表A的數(shù)據(jù)發(fā)生變化;

(2)數(shù)據(jù)表 A的變化記錄到 Oracle重做日志中,通過(guò)Logminer工具解析該時(shí)間段內(nèi)的重做日志并將分析結(jié)果存入本地的事務(wù)隊(duì)列中;

(3)采用符合特定軍用傳輸協(xié)議的手段將本地的事務(wù)隊(duì)列傳送到遠(yuǎn)端;

(4)遠(yuǎn)端目的數(shù)據(jù)庫(kù)定時(shí)將事務(wù)隊(duì)列入庫(kù),對(duì)數(shù)據(jù)表B進(jìn)行同步更新。

由于Oracle重做日志記錄了在數(shù)據(jù)庫(kù)中執(zhí)行的任何操作,日志量大且內(nèi)容豐富,為提高日志解析效率,采用定時(shí)捕獲日志變化的方式,基于Oracle內(nèi)部的時(shí)鐘機(jī)制,解析Oracle日志,獲取變更增量,同步應(yīng)用于目的數(shù)據(jù)庫(kù)中。

圖1 基于Logminer的數(shù)據(jù)同步原理示意圖

4.2 基于Logminer的數(shù)據(jù)同步流程設(shè)計(jì)

(1)核心數(shù)據(jù)結(jié)構(gòu)

在數(shù)據(jù)同步的過(guò)程中涉及的主要數(shù)據(jù)結(jié)構(gòu)包括同步節(jié)點(diǎn)結(jié)構(gòu)、節(jié)點(diǎn)信息結(jié)構(gòu)、資源同步策略結(jié)構(gòu)等。

1)同步節(jié)點(diǎn)結(jié)構(gòu)

定義同步節(jié)點(diǎn)結(jié)構(gòu) SynNode(int rSynPolicyID,int rLocalNodeID,int rDestNodeID,int rRank),其中rSynPolicyID為同步策略標(biāo)識(shí),用來(lái)關(guān)聯(lián)資源同步策略;rLocalNodeID為本地節(jié)點(diǎn)標(biāo)識(shí),唯一標(biāo)識(shí)業(yè)務(wù)訪(fǎng)問(wèn)所在節(jié)點(diǎn)的編碼;rDestNodeID為目的節(jié)點(diǎn)標(biāo)識(shí),唯一標(biāo)識(shí)待同步的目的節(jié)點(diǎn)編碼;rRank為同步優(yōu)先級(jí)。

定義節(jié)點(diǎn)信息結(jié)構(gòu)NodeInfo(int rNodeId;char rHostname[];char rIP[];char rDbType[];char rDbSid[])保存各同步節(jié)點(diǎn)的信息,其中rNodeId表示節(jié)點(diǎn)標(biāo)識(shí),rHostname表示主機(jī)名,rIP表示主機(jī)IP,rDbType表示數(shù)據(jù)庫(kù)類(lèi)型,rDbSid表示數(shù)據(jù)庫(kù)實(shí)例。

3)資源同步策略結(jié)構(gòu)

定義資源同步策略結(jié)構(gòu)SynDefMain(int rSynPolicyID, char rPolicyName [],int rNodetype, int rIsSyn, int rChangeOpr, int rSysMode, int rInitSyn),其中rSynPolicyID為同步策略標(biāo)識(shí),唯一標(biāo)識(shí)資源的同步策略;rPolicyName表示同步策略名稱(chēng);rNodetype表示業(yè)務(wù)訪(fǎng)問(wèn)所屬節(jié)點(diǎn)類(lèi)型;rIsSyn為同步標(biāo)志,有不同步和同步兩種;rChangeOpr為變更操作類(lèi)型,0代表全部,1代表增加,2代表刪除,3代表修改,4代表提交,5代表回滾;rSysMode為同步方式,包括同步或異步;rInitSyn為初始同步標(biāo)志,初始數(shù)據(jù)需要同步或者不同步。

(2)功能模塊與劃分

基于 Logminer的數(shù)據(jù)同步的主要功能模塊包括日志變更捕獲模塊、網(wǎng)絡(luò)傳輸模塊和事務(wù)隊(duì)列同步模塊三大模塊。

①日志變更捕獲模塊

日志變更捕獲模塊的功能是按周期定時(shí)掃描 Oracle重做日志文件的內(nèi)容,捕獲用戶(hù)關(guān)心的數(shù)據(jù)庫(kù)表的變更,并將捕獲結(jié)果存入待同步的事務(wù)隊(duì)列中。變更捕獲的周期以及需要同步的數(shù)據(jù)庫(kù)表可作為同步策略進(jìn)行配置。

在此之前,需進(jìn)行相關(guān)配置。首先以SYS用戶(hù)運(yùn)行以下兩個(gè)腳本:

胎架制作→H型鋼梁的定位拼裝→校正→檢驗(yàn)→對(duì)接焊縫焊接→焊后校正→方鋼管上弦桿和腹桿的拼裝→焊縫焊接→焊后校正→監(jiān)理工程師檢查驗(yàn)收→涂裝→檢驗(yàn)合格。

SQL>@$ORACLE_HOME dbmsadmindbmslm.sql;

SQL>@$ORACLE_HOME dbmsadmindbmslmd.sql;

第一個(gè)腳本用來(lái)創(chuàng)建DBMS_LOGMNR包,用于分析日志文件,第二個(gè)腳本用來(lái)創(chuàng)建 DBMS_LOGMNR_D包,用于創(chuàng)建數(shù)據(jù)字典。與此同時(shí)開(kāi)啟補(bǔ)充日志的功能,增加重做日志記錄中變更矢量記載的記錄量,支持 Logminer工具包對(duì)更新操作(UPDATE)的分析:

SQL>alter database add supplemental log data;

配置完成后,具體的設(shè)計(jì)實(shí)現(xiàn)步驟如下:

第一步:獲取源數(shù)據(jù)庫(kù)中當(dāng)前重做日志文件的路徑,將其添加到本次日志分析過(guò)程中:

SQL>exec

dbms_logmnr.add_logfile(‘filename’,dbms_logmnr.new|dbms_l

ogmnr.addfile);

第二步:查詢(xún)系統(tǒng)最新的scn號(hào)作為本次日志分析過(guò)程的結(jié)束scn號(hào),將上次掃描的結(jié)束scn號(hào)加1作為本次日志分析過(guò)程的起始scn號(hào),開(kāi)啟日志分析過(guò)程:

Startscn:=lastEndscn+1;

Endscn:=currentScn;

SQL>exec dbms_logmnr.start_logmnr(startscn,endscn,option);

其中option有以下幾個(gè)選項(xiàng):NO_SQL_DELIMITER:重建的SQL語(yǔ)句內(nèi)不使用分號(hào),COMMITTED_DATA_ONLY:只有被提交的事務(wù)才被顯示在 V$LOGMNR_CONTENTS視圖內(nèi),NO_ROWID_IN_STMT:在SQL_REDO和SQL_UNDO列內(nèi)不列出ROWID子句等。

第三步:分析重做日志,從動(dòng)態(tài)性能視圖v$logmnr_contents中過(guò)濾出用戶(hù)關(guān)心的操作記錄,處理這些操作記錄,使其變成適合入庫(kù)的標(biāo)準(zhǔn)sql語(yǔ)句,并將這些標(biāo)準(zhǔn)sql語(yǔ)句存入事務(wù)隊(duì)列中:

SQL>select sql_redo from v$logmnr_contents where seg_owner= ‘schema’ and seg_name=‘table_name’ and operation in‘INSERT’,‘UPDATE’,‘DELETE’);

第四步:結(jié)束本次分析過(guò)程,等待下一次周期,繼續(xù)循環(huán)日志分析過(guò)程。

SQL>exec dbms_logmnr.end_logmnr();

其中第二步提到的scn(系統(tǒng)改變號(hào),system change number)是數(shù)據(jù)庫(kù)中一個(gè)非常重要的數(shù)據(jù)結(jié)構(gòu),它定義了數(shù)據(jù)庫(kù)在某個(gè)確切時(shí)刻提交的版本,每當(dāng)事務(wù)提交時(shí),都會(huì)被賦予一個(gè)惟一標(biāo)識(shí)事務(wù)的scn,scn提供Oracle內(nèi)部時(shí)鐘機(jī)制,可看作數(shù)據(jù)庫(kù)的邏輯時(shí)鐘。每次循環(huán)都是以上一次分析結(jié)束的scn號(hào)加1作為本次分析開(kāi)始的scn號(hào),這樣可以保證scn區(qū)間的連續(xù)性,確保分析過(guò)程中用戶(hù)的操作不丟失,不遺漏。

圖2為采用Logminer進(jìn)行日志變更捕獲的流程。如果重做日志文件設(shè)置的比較小,而用戶(hù)的某個(gè)事務(wù)操作規(guī)模比較大,數(shù)據(jù)庫(kù)又沒(méi)有開(kāi)啟歸檔模式,此時(shí)可能會(huì)出現(xiàn)重做日志被覆蓋,部分日志丟失的情況。為了避免這種情況發(fā)生,可以考慮開(kāi)啟數(shù)據(jù)庫(kù)歸檔模式,在發(fā)生重做日志文件被覆蓋的情況時(shí),依據(jù)初始化參數(shù)文件中參數(shù)log_archive_dest_n的值找到oracle歸檔文件的目錄,并將被覆蓋的一個(gè)或幾個(gè)日志文件添加到日志分析過(guò)程中,保證日志分析的連續(xù)性和完整性。從原理上來(lái)說(shuō)開(kāi)啟了數(shù)據(jù)庫(kù)歸檔模式就能確保數(shù)據(jù)庫(kù)的任何操作不會(huì)丟失,但是開(kāi)啟數(shù)據(jù)庫(kù)歸檔模式在實(shí)際應(yīng)用也不十分可行,因?yàn)殚_(kāi)啟了歸檔模式后,歸檔日志會(huì)不斷增加,若沒(méi)有人定期維護(hù),硬盤(pán)空間就會(huì)逐漸填滿(mǎn)。在實(shí)際應(yīng)用中可以考慮采用非歸檔模式,將日志文件設(shè)置的盡可能大一點(diǎn),確保一定規(guī)模的事務(wù)操作不會(huì)導(dǎo)致數(shù)據(jù)庫(kù)重做日志文件被覆蓋,數(shù)據(jù)庫(kù)操作記錄不會(huì)丟失。

②網(wǎng)絡(luò)傳輸模塊

該模塊的主要功能是采用符合特定軍用傳輸協(xié)議的網(wǎng)絡(luò)傳輸手段對(duì)事務(wù)隊(duì)列進(jìn)行發(fā)送和接收,作為溝通日志變更捕獲模塊和事務(wù)隊(duì)列同步模塊的橋梁。

③事務(wù)隊(duì)列同步模塊

該模塊的主要功能是將傳輸?shù)侥康臄?shù)據(jù)庫(kù)上的事務(wù)隊(duì)列有序入庫(kù),完成對(duì)目的數(shù)據(jù)庫(kù)相應(yīng)庫(kù)表的同步更新,保證源端和目的端庫(kù)表內(nèi)容一致。按照事務(wù)隊(duì)列先進(jìn)先出的特點(diǎn),選擇時(shí)間最早的未入庫(kù)事務(wù)進(jìn)行入庫(kù),并將執(zhí)行情況寫(xiě)入對(duì)應(yīng)的同步日志表中,若事務(wù)執(zhí)行失敗,還需記錄失敗的原因、oracle錯(cuò)誤號(hào)等信息,同時(shí)將本次數(shù)據(jù)同步的情況反饋給源端數(shù)據(jù)庫(kù)。

圖2 掃描分析oracle重做日志文件的主要流程

4 結(jié)束語(yǔ)

本文通過(guò)對(duì) Oracle Logminer工具的使用和研究,提出了一種解決各級(jí)指揮信息系統(tǒng)同構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)同步共享問(wèn)題的新思路。Logminer主要用于數(shù)據(jù)庫(kù)的恢復(fù),被喻為DBA一劑最好用的“后悔藥”,本文充分利用Logminer解析Oracle重做日志的特點(diǎn),基于Oracle內(nèi)部時(shí)鐘機(jī)制設(shè)計(jì)了日志變更捕獲模塊,定時(shí)捕獲數(shù)據(jù)庫(kù)表的變更,通過(guò)網(wǎng)絡(luò)傳輸模塊,在遠(yuǎn)端數(shù)據(jù)庫(kù)進(jìn)行同步更新。項(xiàng)目實(shí)踐證明這種同步方法可以簡(jiǎn)便、有效、可靠的實(shí)現(xiàn)不同節(jié)點(diǎn)數(shù)據(jù)庫(kù)表的同步,具有很好的實(shí)用價(jià)值。

猜你喜歡
數(shù)據(jù)庫(kù)分析
隱蔽失效適航要求符合性驗(yàn)證分析
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
中西醫(yī)結(jié)合治療抑郁癥100例分析
在線(xiàn)教育與MOOC的比較分析
主站蜘蛛池模板: 2020极品精品国产| 国产精品伦视频观看免费| 亚洲精品国产自在现线最新| 久久久久国产精品熟女影院| 精品久久久久久成人AV| 欧洲亚洲欧美国产日本高清| 四虎综合网| 亚洲精品国产综合99| 国产无码在线调教| 国产成人久视频免费| 四虎综合网| 日韩毛片免费| 一级香蕉人体视频| 亚洲a级在线观看| 国产一区成人| 亚洲精品欧美日韩在线| 欧美一级99在线观看国产| 亚洲视频a| 亚洲欧洲美色一区二区三区| 99久久国产综合精品女同| 一级毛片在线播放| 天天综合网亚洲网站| 97在线免费| 69综合网| 99久视频| 国产成人午夜福利免费无码r| 久久无码av一区二区三区| 免费人成网站在线观看欧美| 高清码无在线看| 人妻中文字幕无码久久一区| 中文字幕在线视频免费| 国产一级毛片在线| 自拍欧美亚洲| 88av在线播放| 国产美女主播一级成人毛片| 久久黄色影院| 综合色天天| 成人va亚洲va欧美天堂| 亚洲高清资源| 国产极品美女在线| 中文无码伦av中文字幕| 国产理论一区| 奇米精品一区二区三区在线观看| 国产欧美网站| 欧美成人一区午夜福利在线| 亚洲成aⅴ人在线观看| 亚洲第一在线播放| 国产精品乱偷免费视频| 2021国产精品自产拍在线| 成人免费午间影院在线观看| 国产成人免费手机在线观看视频| 国产美女叼嘿视频免费看| 国产另类视频| 在线观看视频一区二区| 99视频在线观看免费| 欧洲精品视频在线观看| 国产精品视屏| 日韩精品免费一线在线观看| 久久国产拍爱| 欧美在线一二区| 成人欧美日韩| 国产在线啪| 欧美日韩精品在线播放| 国产精品午夜福利麻豆| 欧美a√在线| 亚洲精品手机在线| 欧美性久久久久| 欧美性天天| 色综合五月| 欧美区在线播放| 亚洲香蕉在线| 免费观看国产小粉嫩喷水| 九九免费观看全部免费视频| 99热国产这里只有精品无卡顿"| 中文国产成人精品久久| 久久久久中文字幕精品视频| 在线观看国产黄色| 欧美一区日韩一区中文字幕页| 制服无码网站| 亚洲国产清纯| 亚洲成网站| 91热爆在线|