国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速

這篇具有很好參考價(jià)值的文章主要介紹了給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

Oracle在做數(shù)據(jù)遷移、還原測(cè)試庫(kù)以及其他需要導(dǎo)出、導(dǎo)入數(shù)據(jù)的需求下,我們常用到數(shù)據(jù)泵來進(jìn)行數(shù)據(jù)的轉(zhuǎn)移操作,但往往很多事后我們要操作的庫(kù)數(shù)據(jù)量都非常大,且數(shù)據(jù)庫(kù)中clob字段非常多,就給我們導(dǎo)出帶來了一些問題,導(dǎo)出慢或者卡在那里很久不動(dòng)等問題;

有小伙伴可能會(huì)說你開并行不就行了嗎?事實(shí)上當(dāng)你數(shù)據(jù)庫(kù)中大對(duì)象數(shù)據(jù)量占用較大時(shí)候,你會(huì)發(fā)現(xiàn)開并行沒有任何用,那么怎么解決這個(gè)問題呢?那么思路是先排除大對(duì)象的表;然后大表再通過rowid切片多個(gè)進(jìn)程導(dǎo)出導(dǎo)入。


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、大表數(shù)據(jù)

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維
截圖中可以看到,此表占用446G數(shù)據(jù)量,壓縮完后大小為51G,開了2個(gè)進(jìn)程并行,但沒有效果,最終執(zhí)行了10小時(shí),時(shí)間是非常久的。

附:查詢大表

--查看大對(duì)象,先排除導(dǎo)出,然后再單獨(dú)導(dǎo)出
SELECT owner,tablespace_name,case SEGMENT_type
         when 'LOBSEGMENT' then
          (select table_name || '.' || column_name
             from dba_lobs t
            where t.segment_name = s.segment_name)
         else
          SEGMENT_NAME
       end as SEGMENT_NAME,
       BYTES / 1024 / 1024 MB,
       BYTES / 1024 / 1024 / 1024 GB
  FROM DBA_SEGMENTS s
 Order By 4 Desc,3 asc;

二、解題思路

1.導(dǎo)出排除大表的數(shù)據(jù)

命令參考:

expdp system/oracle@ip:1521/sidname directory=datapump_dir parallel=8 cluster=N dumpfile=exp_full0824_%U.dmp logfile=exp_full_20230824.log schemas=usrname COMPRESSION=ALL exclude=statistics exclude=TABLE:\"in\(\'table_name\'\)\"

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維
這里可以看到排除大表后整體導(dǎo)出時(shí)間下降到了17分鐘!?。?/p>

2.rowid切片導(dǎo)出大表數(shù)據(jù)

rowid切片導(dǎo)出數(shù)據(jù)是從0開始,我們需要知道rowid的分配來控制最終想執(zhí)行的并行數(shù)。

Linux代碼如下(示例):

#!/bin/bash
chunk=9
for ((i=0;i<=8;i++));
do
expdp system/oracle TABLES=tablename QUERY=tablename:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\, ${chunk}\) = ${i}\" directory=DMP dumpfile=TX_${i}.DMP logfile=TX_${i}.log &
echo $i
sleep 10
done 

Windows代碼如下(示例):

@echo off
#這里可以帶上IP地址、端口、sid
set connStr=system/oracle@ip:1521/sid_name
#這里指的并行數(shù)
set chunk=10
#sid_name
set oracle_sid=orcl
#oracle_home路徑注意bin后邊的‘\’
set oracle_home_path=d:\oracle\product\10.2.0\db_1\bin\

rem 格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
#10個(gè)并行,0~9(開始標(biāo)號(hào)、每次增加量、結(jié)束標(biāo)號(hào))
for /l %%a in (0,1,9) do (
start /b %oracle_home_path%expdp %connStr% TABLES=table_name QUERY=table_name:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\,%chunk%\) = %%a\" directory=expdpdump dumpfile=TX_%%a.DMP logfile=TX_%%a.log
timeout 10 >nul 2>nul
)

手工執(zhí)行代碼如下(示例):

#如下,打開三個(gè)窗口分別粘貼執(zhí)行,如果要開更多的進(jìn)程,需要更改3后后面的0~2
SQL> create or replace directory dmp as 'D:\dump\';
SQL> grant read,write on directory dmp to public;

expdp system/oracle tables=table_name  QUERY=table_name:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\,3\) = 0\" directory=DMP dumpfile=xxxx_0.dmp logfile=xxxx_0.log
expdp system/oracle tables=table_name  QUERY=table_name:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\,3\) = 1\" directory=DMP dumpfile=xxxx_1.dmp logfile=xxxx_1.log
expdp system/oracle tables=table_name  QUERY=table_name:\"where mod\(dbms_rowid.rowid_block_number\(rowid\)\,3\) = 2\" directory=DMP dumpfile=xxxx_2.dmp logfile=xxxx_2.log
)

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維
以上我拿一張14G數(shù)據(jù)表進(jìn)行測(cè)試,3個(gè)并行度執(zhí)行實(shí)際4分半,實(shí)際測(cè)試中切片導(dǎo)出數(shù)據(jù)也可以加壓縮參數(shù)。
給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維
對(duì)比此張圖可以看到我的切片測(cè)試已將導(dǎo)出實(shí)際提升了2倍左右,如果并行度更高的話,那么我們的整體時(shí)間會(huì)成倍降低。

3.rowid切片導(dǎo)入大表數(shù)據(jù)

導(dǎo)入前準(zhǔn)備

在導(dǎo)入大表數(shù)據(jù)之前需要做的是:

#確保大表所在的表空間存在
select table_name,tablespace from user_tables where table_name='TABLE_NAME';
#創(chuàng)建用戶以及表結(jié)構(gòu),建議使用plsql查詢
SELECT DBMS_METADATA.GET_DDL('TABLE','TABLE_NAME') from DUAL;

linux代碼如下(示例):

#!/bin/bash
for ((i=0;i<=8;i++));
do
#echo dumpfile=TX_${i}.DMP
impdp \"/ as sysdba\" directory=impdpdump dumpfile=TX_${i}.DMP logfile=impdp_TX_${i}.log DATA_OPTIONS=DISABLE_APPEND_HINT TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y CONTENT=DATA_ONLY &
sleep 10
done

windows代碼如下(示例):

@echo off

set connStr=system/oracle
set oracle_sid=orcl
set oracle_home_path=d:\oracle\product\10.2.0\db_1\bin\

rem 格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]

for /l %%a in (0,1,9) do (
rem 11g upper >start /b %oracle_home_path%impdp %connStr% directory=impdpdump dumpfile=TX_%%a.DMP logfile=imp_TX_%%a.log DATA_OPTIONS=DISABLE_APPEND_HINT TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y CONTENT=DATA_ONLY

start /b %oracle_home_path%impdp %connStr% directory=impdpdump dumpfile=TX_%%a.DMP logfile=imp_TX_%%a.log CONTENT=DATA_ONLY
timeout 10 >nul 2>nul
)

給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速,小白進(jìn)階,oracle,大數(shù)據(jù),數(shù)據(jù)庫(kù),clob,運(yùn)維
測(cè)試表導(dǎo)入成功,和切片導(dǎo)出的時(shí)間基本相同。

三、導(dǎo)出時(shí)業(yè)務(wù)卡頓如何停止

select s.inst_id,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') "DATE", s.program, s.sid, 'orakill orcl2 '||spid,'kill -9 '||spid,  
       s.status, s.username, d.job_name, p.spid, s.serial#, p.pid ,'ALTER SYSTEM KILL SESSION '||''''||s.SID||','||s.SERIAL#||',@'||s.inst_id||''''||' IMMEDIATE;' killse
  from gv$session s, gv$process p, dba_datapump_sessions d  
 where p.addr=s.paddr and s.saddr=d.saddr and s.inst_id=p.inst_id and s.inst_id=d.inst_id; 

select 'orakill orcl '||spid ,'ALTER SYSTEM KILL SESSION '||''''||t1.SID||','||t1.SERIAL#||''''||' IMMEDIATE;' killse
--,'kill -9 '||spid
                from sys.gV_$PROCESS t,gv$session t1,dba_datapump_sessions d 
                where t.addr=t1.paddr and t1.saddr=d.saddr
                and t1.Type='USER' and t1.username is not null;

select 'drop table ' || owner_name || '.' || job_name || ' purge;'  from dba_datapump_jobs where state = 'NOT RUNNING' ;

參考文獻(xiàn):https://mp.weixin.qq.com/s/pKNe2EzpB_PM0itpa4jrdA文章來源地址http://www.zghlxwxcb.cn/news/detail-682312.html

到了這里,關(guān)于給oracle邏輯導(dǎo)出clob大字段、大數(shù)據(jù)量表提提速的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • oracle邏輯備份exp導(dǎo)出指定表名時(shí)需要加括號(hào)嗎?

    Oracle 的 exp、imp、expdp、impdp 命令用于數(shù)據(jù)庫(kù)邏輯備份與恢復(fù); exp 命令用于把數(shù)據(jù)從遠(yuǎn)程數(shù)據(jù)庫(kù)server導(dǎo)出至本地,生成dmp文件。 筆者在實(shí)操中遇到: 返回以下錯(cuò)誤信息: 后將命令去掉括號(hào),改為以下形式后,命令正常執(zhí)行。 命令運(yùn)行的Oracle版本信息如下: 那么問題來了:Or

    2023年04月23日
    瀏覽(21)
  • lightdb 支持兼容Oracle的to_clob函數(shù)

    在信創(chuàng)移植的SQL語(yǔ)句中,有來源于Oracle數(shù)據(jù)庫(kù)的SQL語(yǔ)句。 在ORACLE PL/SQL包中,你可以使用TO_CLOB(character)函數(shù)將RAW、CHAR、VARCHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB值轉(zhuǎn)換為CLOB。 因此在LightDB 23.3版本中實(shí)現(xiàn)了對(duì)TO_CLOB函數(shù)的支持。 環(huán)境準(zhǔn)備 使用TO_CLOB函數(shù) 可以看出,在Oracle兼容模式下

    2024年02月10日
    瀏覽(18)
  • Oracle數(shù)據(jù)庫(kù)在指定字段后新增字段

    記錄一下數(shù)據(jù)庫(kù)中為表增加字段,且在指定字段后新增; mysql數(shù)據(jù)庫(kù)的話比較簡(jiǎn)單通過一下sql語(yǔ)句即可實(shí)現(xiàn): 而Oracle數(shù)據(jù)庫(kù)不支持上述語(yǔ)法,添加字段只能顯示到最后一位,所以如果非要添加字段到指定字段后的話可以通過新建數(shù)據(jù)表并修改表明實(shí)現(xiàn),如下面語(yǔ)句所示:

    2024年02月15日
    瀏覽(21)
  • Oracle修改帶數(shù)據(jù)的字段類型

    /*修改原字段名*/ /*添加一個(gè)和原字段同名的字段*/ /*將原來的數(shù)據(jù)更新到新字段中*/ /*刪除原來的備份字段*/

    2024年02月06日
    瀏覽(19)
  • oracle,CLOB轉(zhuǎn)XML內(nèi)存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

    oracle,CLOB轉(zhuǎn)XML內(nèi)存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

    通過kettle采集數(shù)據(jù)時(shí),表輸入的組件,查詢報(bào)錯(cuò)。 ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE”, line 272 ORA-06512: at line 1 通過 ALTER SESSION SET EVENTS ‘31156 trace name context forever, level 0x400’; 修改會(huì)話配置 或直接修改system配置 ALTER system SET EVENTS ‘31156 trace name context forever, level 0x400’

    2024年02月07日
    瀏覽(17)
  • Oracle多行數(shù)據(jù)合并為一行數(shù)據(jù),并將列數(shù)據(jù)轉(zhuǎn)為字段名

    FZ PROJECT VALUE 1 電腦 $1600 1 手機(jī) $12 1 導(dǎo)管 $1 2 電腦 $2 2 手機(jī) $22 FZ 電腦 手機(jī) 導(dǎo)管 1 $1600 $12 $1 2 $2 $22 根據(jù)FZ字段篩選并分組,MAX支持字符內(nèi)容,SUN()同樣支持,但是只能是數(shù)字類型。 此方法沒有數(shù)據(jù)庫(kù)類型限制,MySQL、Oracle、達(dá)夢(mèng)均可。 FZ PROJECT 1 電腦,手機(jī),導(dǎo)管 此方法僅僅是合

    2024年02月14日
    瀏覽(26)
  • 通過easyui實(shí)現(xiàn)動(dòng)態(tài)控制表格字段顯示、導(dǎo)出表格數(shù)據(jù)

    通過easyui實(shí)現(xiàn)動(dòng)態(tài)控制表格字段顯示、導(dǎo)出表格數(shù)據(jù)

    學(xué)過layui前端框架的都知道,layui默認(rèn)幫我們實(shí)現(xiàn)了控制表格字段顯示以及數(shù)據(jù)的導(dǎo)出功能。 1、控制表格字段顯示 2、數(shù)據(jù)導(dǎo)出 導(dǎo)出為excel 導(dǎo)出為pdf 導(dǎo)出按鈕的右邊那個(gè)按鈕就是打印pdf的 那么,easyui要怎么實(shí)現(xiàn)這些功能呢?這篇文章就要介紹一下怎么通過前端實(shí)現(xiàn)表格數(shù)據(jù)

    2024年02月14日
    瀏覽(25)
  • 存儲(chǔ)過程、觸發(fā)器、游標(biāo)、視圖、自定義函數(shù) 字段類型、字段可空、統(tǒng)計(jì)字段、邏輯刪除 權(quán)限系統(tǒng)數(shù)據(jù)庫(kù)&無(wú)限極類別設(shè)計(jì)

    在數(shù)據(jù)庫(kù)設(shè)計(jì)中,存儲(chǔ)過程、觸發(fā)器、游標(biāo)、視圖、自定義函數(shù)、字段類型、字段可空、統(tǒng)計(jì)字段、邏輯刪除以及權(quán)限系統(tǒng)和無(wú)限級(jí)類別設(shè)計(jì)都是重要的概念。下面我將逐一解釋這些概念,并提供相關(guān)的設(shè)計(jì)建議。 存儲(chǔ)過程 (Stored Procedure) 定義 :存儲(chǔ)過程是一組為了完成特定

    2024年03月09日
    瀏覽(103)
  • Oracle SQL Developer 中查看表的數(shù)據(jù)和字段屬性、錄入數(shù)據(jù)

    Oracle SQL Developer 中查看表的數(shù)據(jù)和字段屬性、錄入數(shù)據(jù)

    在Oracle SQL Developer中,選中一個(gè)表時(shí),右側(cè)會(huì)列出表的情況;第一個(gè)tab是字段的名稱、數(shù)據(jù)類型等屬性; 切換到第二個(gè)tab,顯示表的數(shù)據(jù); ? 這和sql server management studio不一樣的; 看一下部門表dept的數(shù)據(jù)如下; ? 輸入語(yǔ)句新建一個(gè)表; 切換到新建表的數(shù)據(jù)tab, 通過點(diǎn)上方圖

    2024年02月07日
    瀏覽(20)
  • Sqoop(二):Hive導(dǎo)出數(shù)據(jù)到Oracle

    把Hive中的數(shù)據(jù)導(dǎo)入Oracle數(shù)據(jù)庫(kù)。 1. 解釋一下各行代碼: 2. 案例: 3. 表多的話,把所有表名存放在文件下,循環(huán)跑批每個(gè)表 參考: https://codeleading.com/article/51121246034/#google_vignette

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包