亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

Oracle10g:數(shù)據(jù)的導(dǎo)入導(dǎo)出

瀏覽:3日期:2023-11-12 18:41:54
Oracle10g:數(shù)據(jù)的導(dǎo)入導(dǎo)出 給數(shù)據(jù)泵加壓Oracle 數(shù)據(jù)庫(kù) 10g 中的新的實(shí)用程序使其性能和多功能性達(dá)到了新的水平。 Oracle 數(shù)據(jù)庫(kù) 10g 中增加的叫做 Oracle Data Pump (數(shù)據(jù)泵)的新的導(dǎo)入和導(dǎo)出特性,徹底改變了數(shù)據(jù)庫(kù)用戶已經(jīng)習(xí)慣的過去幾代 Oracle 數(shù)據(jù)庫(kù)的客戶 / 服務(wù)器工作方式。現(xiàn)在服務(wù)器可以運(yùn)行導(dǎo)出和導(dǎo)入任務(wù)。你可以通過并行方式快速裝入或卸載大量數(shù)據(jù),而且你可以在運(yùn)行過程中調(diào)整并行的程度。導(dǎo)出和導(dǎo)入任務(wù)現(xiàn)在可以重新啟動(dòng),所以發(fā)生故障不一定意味著要從頭開始。 API 是公諸于眾的,并且易于使用;用 PL/SQL 建立一個(gè)導(dǎo)入和導(dǎo)出任務(wù)非常簡(jiǎn)單。一旦啟動(dòng),這些任務(wù)就在后臺(tái)運(yùn)行,但你可以通過客戶端實(shí)用程序從任何地方檢查任務(wù)的狀態(tài)和進(jìn)行修改。 體系結(jié)構(gòu) 在 Oracle 數(shù)據(jù)庫(kù) 10g 之前(從 Oracle7 到 Oracle9I ),導(dǎo)入和導(dǎo)出實(shí)用程序都作為客戶端程序運(yùn)行,并且完成大量工作。導(dǎo)出的數(shù)據(jù)由數(shù)據(jù)庫(kù)實(shí)例讀出,通過連接傳輸?shù)綄?dǎo)出客戶程序,然后寫到磁盤上。所有數(shù)據(jù)在整個(gè)導(dǎo)出進(jìn)程下通過單線程操作。今天的數(shù)據(jù)量比這個(gè)體系結(jié)構(gòu)最初采用的時(shí)候要大得多,使得單一導(dǎo)出進(jìn)程成了一個(gè)瓶頸,因?yàn)閷?dǎo)出任務(wù)的性能受限于導(dǎo)出實(shí)用程序所能支持的吞吐量。 在 Oracle 數(shù)據(jù)庫(kù) 10g 和全新的數(shù)據(jù)泵( Data Pump )體系結(jié)構(gòu)下,如今所有的工作都由數(shù)據(jù)庫(kù)實(shí)例來完成。數(shù)據(jù)庫(kù)實(shí)例可以用兩種方法來并行處理這些工作:通過建立多個(gè)數(shù)據(jù)泵工作進(jìn)程來讀 / 寫正在被導(dǎo)出 / 導(dǎo)入的數(shù)據(jù),以及建立并行 I/O 服務(wù)器進(jìn)程以更快地選取( SELECT )或插入( INSERT )這些數(shù)據(jù)。這樣,單進(jìn)程瓶頸再也就不存在了。 數(shù)據(jù)泵任務(wù)用新的 DBMS_DATAPUMP PL/SQL API 來建立、監(jiān)測(cè)和調(diào)整。新的導(dǎo)入和導(dǎo)出實(shí)用程序(分別為 impdp 和 eXPdp )對(duì)于這個(gè) API 來說只是命令行接口。你可以使用數(shù)據(jù)泵導(dǎo)出實(shí)用程序初始化一個(gè)任務(wù),例如一個(gè)導(dǎo)出任務(wù)。然后你就可以關(guān)閉你的客戶端,回家過夜和享用晚餐,而你的任務(wù)會(huì)一直運(yùn)行。到了深夜,你可以重新連接到那個(gè)任務(wù),檢查其狀態(tài),甚至可以提高并行程度,以便在深夜系統(tǒng)沒有用戶在用的情況下多完成一些工作。第二天早上,你可以降低并行度甚至掛起該任務(wù),為白天在線的用戶釋放資源。 重新啟動(dòng)任務(wù)的功能是數(shù)據(jù)泵體系結(jié)構(gòu)的一個(gè)重要特性。你可以隨時(shí)停止和重啟動(dòng)一個(gè)數(shù)據(jù)泵任務(wù),比如為在線用戶釋放資源。你還可以從文件系統(tǒng)的空間問題中輕松地恢復(fù)。假如一個(gè) 12 小時(shí)的導(dǎo)出任務(wù)在進(jìn)行了 11 小時(shí)后因磁盤空間不夠而失敗,那么你再也不用從頭開始重新啟動(dòng)該任務(wù),重復(fù)前面 11 小時(shí)的工作。而是你可以連接到這個(gè)失敗的任務(wù),增加一個(gè)或多個(gè)新的轉(zhuǎn)儲(chǔ)( dump )文件,從失敗的地方重新啟動(dòng),這樣只需一個(gè)小時(shí)你就可以完成任務(wù)了。這在你處理很大數(shù)據(jù)量時(shí)非常有用。 對(duì)文件系統(tǒng)的訪問 由服務(wù)器處理所有的文件 I/O 對(duì)于遠(yuǎn)程執(zhí)行導(dǎo)出和導(dǎo)入任務(wù)的數(shù)據(jù)庫(kù)治理員來說非常有利。如今,用戶可以很輕松地在類似 UNIX 的系統(tǒng) ( 如 Linux) 上 telnet 或 ssh 到一個(gè)服務(wù)器,在命令行方式下初始化一個(gè)運(yùn)行在服務(wù)器上的導(dǎo)出或?qū)肴蝿?wù)。然而,在其他操作系統(tǒng)上就不那么輕易, Windows 是最明顯的例子。在推出數(shù)據(jù)泵之前,要從一個(gè) Windows 系統(tǒng)下的 Oracle 數(shù)據(jù)庫(kù)中導(dǎo)出大量數(shù)據(jù),你很可能必須坐在服務(wù)器控制臺(tái)前發(fā)出命令。通過 TCP/IP 連接導(dǎo)出數(shù)據(jù)只對(duì)小數(shù)據(jù)量是可行的。數(shù)據(jù)泵改變了這一切,因?yàn)榧词鼓阃ㄟ^在你的客戶端上運(yùn)行該導(dǎo)出和導(dǎo)入實(shí)用程序來初始化一個(gè)導(dǎo)出或?qū)肴蝿?wù),該任務(wù)其實(shí)也運(yùn)行在服務(wù)器上,所有的 I/O 也都發(fā)生在該服務(wù)器上。 出于安全性考慮,數(shù)據(jù)泵要求你通過 Oracle 的目錄對(duì)象來指定其中存放著你要建立或讀取的轉(zhuǎn)儲(chǔ)文件的目標(biāo)目錄。例如: CREATE DirectorY export_dumps AS 'c:a'; ; GRANT read, write ON DIRECTORY export_dumps TO gennick; 我以 SYSTEM 身份登錄到我的實(shí)驗(yàn)室數(shù)據(jù)庫(kù)上,并執(zhí)行以上語句來建立一個(gè)目錄對(duì)象,這個(gè)目錄對(duì)象指向了我磁盤上的一個(gè)臨時(shí)目錄,以用來存放導(dǎo)出的轉(zhuǎn)儲(chǔ)文件。 GRANT 語句為用戶 gennick- 就是我 - 分配了訪問該目錄的權(quán)限。我給自己分配讀 / 寫權(quán)限,因?yàn)槲覍?dǎo)出和導(dǎo)入數(shù)據(jù)。你可以為一個(gè)用戶分配讀權(quán)限,限制他只能導(dǎo)入數(shù)據(jù)。 啟動(dòng)一個(gè)導(dǎo)出任務(wù) 你可以使用新的 expdp 實(shí)用程序來啟動(dòng)一個(gè)導(dǎo)出任務(wù)。因?yàn)閰?shù)與老的 exp 實(shí)用程序不同,所以你得熟悉這些新的參數(shù)。你可以在命令行中指定參數(shù),但在本文中我使用了參數(shù)文件。我想導(dǎo)出我的整個(gè)模式( schema ),使用了以下參數(shù): DUMPFILE=gnis%U.dmp DIRECTORY=export_dumps LOGFILE=gnis_export.log JOB_NAME=gnis_export DUMPFILE 指定我將向其中寫入被導(dǎo)出數(shù)據(jù)的文件。 %U 語法給出了一個(gè)增量計(jì)數(shù)器,得到文件名 gnis01.dmp 、 gnis02.dmp 等。 DIRECTORY 指定了我的目標(biāo)目錄。 我的 LOGFILE 參數(shù)指定了日志文件的名字,這個(gè)文件是為每個(gè)導(dǎo)出任務(wù)默認(rèn)創(chuàng)建的。 JOB_NAME 給任務(wù)指定了一個(gè)名字。我選擇了一個(gè)易于記憶(和輸入)的名字,因?yàn)槲铱赡苄枰诤竺娌胚B接這個(gè)任務(wù)。要注重在指定任務(wù)名稱時(shí)不要與你登錄模式( schema )中的模式對(duì)象名稱沖突。數(shù)據(jù)泵在你的登錄模式中建立一個(gè)被稱為任務(wù)主表的數(shù)據(jù)表,該表的名字與任務(wù)的名字相匹配。這個(gè)數(shù)據(jù)表跟蹤該任務(wù)的狀態(tài),并最終被寫入轉(zhuǎn)儲(chǔ)文件中,作為該文件所含內(nèi)容的一個(gè)記錄。 清單 1 顯示了一個(gè)導(dǎo)出任務(wù)已被啟動(dòng)。該任務(wù)所做的第一件事是估計(jì)所需的磁盤空間大小。當(dāng)估計(jì)值顯示出來后,我按 ctrl-C 進(jìn)入一個(gè)交互式的導(dǎo)出提示窗口,然后使用 EXIT_CLIENT 命令回到我操作系統(tǒng)的命令窗口。該導(dǎo)出任務(wù)仍然運(yùn)行在服務(wù)器上。 注重,假如我要做并行導(dǎo)出并且將我的 I/O 分布在兩個(gè)磁盤上,那么我可以對(duì) DUMPFILE 參數(shù)值做出修改,并如下添加 PARALLEL 參數(shù)和值,如下所示: DUMPFILE=export_dumps01:gnis%U.dmp, export_dumps02:gnis%U.dmp PARALLEL=2 注重,在這個(gè)并行導(dǎo)出任務(wù)中,目錄名作為文件名的一部分來被指定。 檢查狀態(tài) 你可以隨時(shí)連接到一個(gè)運(yùn)行中的任務(wù)來檢查其狀態(tài)。要連接到一個(gè)導(dǎo)出任務(wù),必須執(zhí)行一條 expdp 命令,使用 ATTACH 參數(shù)來指定任務(wù)名稱。 清單 2 顯示了到 GNIS_EXPORT 任務(wù)的連接。當(dāng)你連接到一個(gè)任務(wù), expdp 顯示該任務(wù)的相關(guān)信息和當(dāng)前狀態(tài),并為你提供一個(gè) EXPORT> 提示符。 當(dāng)你連接到了一個(gè)任務(wù)后,你可以隨時(shí)執(zhí)行 STATUS 命令查看當(dāng)前狀態(tài),如 清單 3 所示。你還可以執(zhí)行 CONTINUE_CLIENT 命令返回到顯示任務(wù)進(jìn)度的日志輸出狀態(tài),該命令可以被縮寫成如 清單 4 所示的 CONTINUE 。 你可以通過查詢 DBA_DATAPUMP_JOBS 視圖快速查看所有數(shù)據(jù)泵任務(wù)的狀態(tài)。你不能獲得 STATUS 命令所給出的具體信息,但你可以快速查看到哪些任務(wù)在執(zhí)行、哪些處于空閑狀態(tài)等。另一個(gè)需要了解的視圖是 DBA_DATAPUMP_SESSIONS ,它列出了所有活躍的數(shù)據(jù)泵工作進(jìn)程。 從故障中恢復(fù) 重啟動(dòng)任務(wù)的能力使你可以從某些類型的故障中恢復(fù)過來。例如, 清單 5 顯示了一個(gè)用完了轉(zhuǎn)儲(chǔ)文件空間的導(dǎo)出任務(wù)的日志文件的結(jié)尾部分。然而,什么也沒有丟失。該任務(wù)只是進(jìn)入了一個(gè)空閑狀態(tài),當(dāng)你連接到該任務(wù)并查看狀態(tài)輸出時(shí)就可以看到這一點(diǎn)。這個(gè)狀態(tài)不顯示任務(wù)空閑的原因。要確定這是因?yàn)檗D(zhuǎn)儲(chǔ)文件的空間不夠了,則你需要查看日志文件。 連接到因轉(zhuǎn)儲(chǔ)文件空間不夠用了而停止的任務(wù)后,你可以在兩個(gè)操作中選擇其一:你可以使用 KILL_JOB 命令來中止該任務(wù),或者增加一個(gè)和多個(gè)轉(zhuǎn)儲(chǔ)文件來繼續(xù)該任務(wù)的運(yùn)行。假如空間不夠的問題是因?yàn)榇疟P空間不足,則當(dāng)然你要確保你增加的文件是在另一個(gè)有可用空間的磁盤上。你也許需要?jiǎng)?chuàng)建一個(gè)新的 Oracle 目錄對(duì)象來指向這一新位置。 清單 6 使用 ADD_FILES 命令為我的空閑任務(wù)增加兩個(gè)文件。這兩個(gè)文件位于不同的目錄中,它們都不同于為該任務(wù)的第一個(gè)轉(zhuǎn)儲(chǔ)文件所指定的目錄。我使用 START_JOB 命令來重新啟動(dòng)該任務(wù),然后使用 CONTINUE 查看屏幕上滾動(dòng)的其余日志輸出。 導(dǎo)入任務(wù)不會(huì)受到卸載( dump )文件空間不足的影響。但是,它們可能會(huì)受到數(shù)據(jù)表空間不足或無法擴(kuò)展表空間的影響。導(dǎo)入的恢復(fù)過程和導(dǎo)出任務(wù)的基本上相同。首先,通過向表空間增加一個(gè)數(shù)據(jù)文件、擴(kuò)展一個(gè)數(shù)據(jù)文件或其他方法來提供可用空間。然后連接到該任務(wù),執(zhí)行 START_JOB 命令。導(dǎo)入任務(wù)將從它中斷的地方繼續(xù)執(zhí)行。 導(dǎo)入選定的數(shù)據(jù) 本文中的例子到目前為止顯示的是對(duì)用戶 GENNICK 擁有的所有對(duì)象進(jìn)行模式( schema )數(shù)據(jù)庫(kù)級(jí)別的導(dǎo)出。為了展示數(shù)據(jù)泵的一些新的功能,我要導(dǎo)入那些數(shù)據(jù),而且為了使問題更有意思,我列出了以下要求: 僅導(dǎo)入 GNIS 數(shù)據(jù)表 將該數(shù)據(jù)表導(dǎo)入到 MICHIGAN 模式中 僅導(dǎo)入那些與密歇根州相關(guān)的數(shù)據(jù)行 不導(dǎo)入原始的存儲(chǔ)參數(shù) 一開始,我可以在我的導(dǎo)入?yún)?shù)文件中寫出以下四行: DUMPFILE=gnis%U.dmp DIRECTORY=export_dumps LOGFILE=gnis_import.log JOB_NAME=gnis_import 這四行沒有什么新意。他們指定了轉(zhuǎn)儲(chǔ)文件、目錄、日志文件和該任務(wù)的名稱。根據(jù)我們的四個(gè)要求,我可以使用 INCLUDE 參數(shù)將導(dǎo)入操作限制在我們感愛好的一個(gè)數(shù)據(jù)表上: INCLUDE=TABLE:'= 'GNIS'' INCLUDE 是個(gè)很有意思的參數(shù)。當(dāng)你需要導(dǎo)入一個(gè)轉(zhuǎn)儲(chǔ)文件的部分內(nèi)容時(shí),你可以有兩個(gè)方法: 你可以使用一個(gè)或多個(gè) INCLUDE 參數(shù)列出你要導(dǎo)入的那些對(duì)象。 你可以使用 EXCLUDE 參數(shù)列出那些你不需要的內(nèi)容,然后導(dǎo)入其余的內(nèi)容。 因?yàn)槲抑恍枰粋€(gè)對(duì)象,明確包含該對(duì)象比起明確不包括其它對(duì)象要輕易得多。我的 INCLUDE 參數(shù)值的第一部分是要害字 TABLE ,表明我要導(dǎo)入的對(duì)象是一個(gè)數(shù)據(jù)表(其它的可能是一個(gè)函數(shù)或一個(gè)過程)。 接下來是一個(gè)冒號(hào),然后是一個(gè) WHERE 子句的謂詞。我明確希望數(shù)據(jù)表名為 GNIS ,所以這個(gè)謂詞是 '= 'GNIS'' 。假如必要,則你可以寫出多個(gè)具體的謂詞。通過 INCLUDE 和 EXCLUDE 參數(shù),你可以確切地指出以什么樣的粒度導(dǎo)入或?qū)С觥N医ㄗh你仔細(xì)地閱讀關(guān)于這兩個(gè)參數(shù)的文檔。它們的功能之強(qiáng)大和多功能性是我在本文中所無法描述的。 我可以很輕松地完成該模式的改變,將來自 GNIS 模式的數(shù)據(jù)表重新映射到 MICHIGAN 模式: REMAP_SCHEMA=gennick: michigan 我只需要關(guān)于密歇根州的數(shù)據(jù)行。為此,我可以使用 QUERY 參數(shù)來指定一個(gè) WHERE 子句: QUERY='WHERE gnis_state_abbr='MI'' QUERY 在老的實(shí)用程序中也有,但只能用于導(dǎo)出操作。數(shù)據(jù)泵使 QUERY 也能用于導(dǎo)入操作,因?yàn)閿?shù)據(jù)泵利用了 Oracle 較新的外部數(shù)據(jù)表功能。只要可能,數(shù)據(jù)泵會(huì)選擇直接路徑來導(dǎo)出或?qū)霐?shù)據(jù),包括從數(shù)據(jù)庫(kù)數(shù)據(jù)文件中讀取數(shù)據(jù)然后直接寫到一個(gè)導(dǎo)出轉(zhuǎn)儲(chǔ)文件中,或讀取轉(zhuǎn)儲(chǔ)文件然后直接寫入數(shù)據(jù)庫(kù)數(shù)據(jù)文件中。但是,當(dāng)你指定了 QUERY 參數(shù)時(shí),數(shù)據(jù)泵將使用一個(gè)外部數(shù)據(jù)表。對(duì)于一個(gè)導(dǎo)入任務(wù),數(shù)據(jù)泵將使用 ORACLE_DATAPUMP 存取驅(qū)動(dòng)程序建立一個(gè)外部數(shù)據(jù)表,并執(zhí)行一條 INSERT...SELECT...FROM 語句。 我的最后一個(gè)要求是避免導(dǎo)入與已被導(dǎo)出的數(shù)據(jù)表相關(guān)的存儲(chǔ)參數(shù)。我希望 MICHIGAN 模式中的新 GNIS 表沿用該模式的默認(rèn)表空間的默認(rèn)存儲(chǔ)參數(shù)。原因是 MICHIGAN 的默認(rèn)表空間不足以容納該數(shù)據(jù)表的本來大小,但是是以僅僅容納與密歇根有關(guān)的數(shù)據(jù)行。通過 TRANSFORM 參數(shù),我可以告訴導(dǎo)入任務(wù)不要包含與原始表相關(guān)的任何數(shù)據(jù)段屬性: TRANSFORM=SEGMENT_ATTRIBUTES:N 這看起來是件小事,但以前有很多次我都希望老的導(dǎo)入實(shí)用程序的 TRANSFORM 參數(shù)有這樣的功能。我在試圖將少量生產(chǎn)數(shù)據(jù)導(dǎo)入到測(cè)試系統(tǒng)中時(shí)經(jīng)常失敗,因?yàn)榧词勾鎯?chǔ)生產(chǎn)數(shù)據(jù)的各個(gè)區(qū)段當(dāng)中許多是空的,其數(shù)據(jù)量也比我測(cè)試系統(tǒng)所能支持的大得多。對(duì)于只導(dǎo)入一張數(shù)據(jù)表的情況,預(yù)先建立數(shù)據(jù)表是解決這個(gè)問題的一個(gè)辦法。然而,隨著數(shù)據(jù)表的增多,預(yù)先建表會(huì)很麻煩。而 TRANSFORM 這樣的簡(jiǎn)單開關(guān)可以輕松地將轉(zhuǎn)儲(chǔ)文件中所有數(shù)據(jù)段的屬性全體忽略掉。 將我上面描述的所有選項(xiàng)放到一個(gè)參數(shù)文件中后,我可以調(diào)用導(dǎo)入實(shí)用程序,如下所示: impdp michigan/passWord parfile=gnis_import.par 當(dāng)作為一個(gè)沒被授權(quán)的用戶進(jìn)行導(dǎo)入時(shí),你需要連接到目標(biāo)模式。假如你擁有 IMP_FULL_DATABASE 角色,那么你可以用自己的身份登錄,然后導(dǎo)入到任何目標(biāo)模式。 性能和多功能性 Oracle 數(shù)據(jù)泵比起以前的導(dǎo)出和導(dǎo)入實(shí)用程序在性能上有很大的提高。這種性能提高大部分來自于讀寫轉(zhuǎn)儲(chǔ)文件的并行操作。你可以指定并行程度來達(dá)到你所要求的速度與資源消耗的折中。下一步 下載本文所使用的示例數(shù)據(jù) 數(shù)據(jù)泵還很好地利用了 Oracle 數(shù)據(jù)庫(kù)其他最新開發(fā)的創(chuàng)新特性。 Flashback (回閃)用于確保導(dǎo)出數(shù)據(jù)的一致性,而 FLASHBACK_SCN 和 FLASHBACK_TIME 參數(shù)使你能夠完全控制這一功能。直接路徑( direct-path ) API 用于在任何可能的時(shí)候提高性能,當(dāng)直接路徑 API 不能使用時(shí),用外部數(shù)據(jù)表和新的 ORACLE_DATAPUMP 外部數(shù)據(jù)表存取驅(qū)動(dòng)程序來傳輸數(shù)據(jù)。 數(shù)據(jù)泵除了提供全新的性能外還為你提供靈活性。這表現(xiàn)在 INCLUDE 和 EXCLUDE 參數(shù)、 QUERY 參數(shù)、 TRANSFORM 參數(shù)和其他參數(shù)的實(shí)現(xiàn)中,這些參數(shù)使你能夠精細(xì)地控制被加載和卸載的數(shù)據(jù)和對(duì)象。 人們一直在不斷地對(duì) ' 大數(shù)據(jù) ?quot; 的含意進(jìn)行重新定義,這種數(shù)據(jù)庫(kù)容量之大在十年前還只能是夢(mèng)想。在這樣的世界里,數(shù)據(jù)泵對(duì)于你的數(shù)據(jù)庫(kù)治理員所用的工具庫(kù)是個(gè)不錯(cuò)的補(bǔ)充,使你能夠以前所未有的速度對(duì)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)導(dǎo)入和導(dǎo)出。 Jonathan Gennick ( [email protected] ) 是一名經(jīng)驗(yàn)豐富的 Oracle 數(shù)據(jù)庫(kù)治理員和 Oracle 認(rèn)證的專家,居住在密歇根州的上部半島。他在治理著 Oracle 文章電子郵件列表,你可以訪問 gennick.com 來了解其中的有關(guān)內(nèi)容。 Gennick 最近參與編寫了《 Oracle Regular Expressions Pocket Reference , Oracle 正則表達(dá)式袖珍手冊(cè)》 (O'Reilly & Associates, 2003 出版 ) 一書。
主站蜘蛛池模板: 国产一区二区在线视频播放 | 日韩高清一区 | 1024 在线观看视频免费 | 一级片视频在线 | 一级女性全黄生活片免费看 | 永久国产 | 国产精品久久久久久久免费大片 | 欧美久久xxxxxx影院 | 涩涩看片 | 国产福利视频一区二区三区 | 人人九九精 | 看真人一级毛片 | 亚洲黄色美女视频 | 亚洲欧美视频一区二区三区 | 91久久另类重口变态 | 亚洲天天综合网 | 日本一本色道免费视频 | 国产欧美二区 | 国产欧美日韩在线 | 鲁丝片一区二区三区毛片 | 国产精品久久一区二区三区 | 中文字幕免费在线视频 | 毛片a级三毛片免费播放 | 自拍 欧美| 男女在线观看啪网站 | 国产成人视屏 | 国外成人免费视频 | 亚洲国产精品久久久久666 | 国产三级网站在线观看 | 成人嘿嘿视频网站在线 | 国产大秀视频在线一区二区 | 麻豆国产96在线 | 中国 | 操婷婷| 亚洲日韩欧美视频 | 精品九九久久国内精品 | 日韩性视频网站 | 真人毛片免费观看视频 | 欧美成人黑人xx视频免费观看 | 中文字幕亚洲第一 | 91短视频版在线观看www | 中文字幕日本在线视频二区 |