日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?

發布時間:2023/12/4 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【引言】

今天有同事問了一個問題,在Oracle 11g下,為啥exp方式導出一個用戶的數據表,在imp后卻發現有些表并沒有遷移過來。經查閱官方文檔,發現和Oracle11g及12c +版本相對于10g,有一個新特性deferred_segment_creation(延遲段創建)造成的。

該參數的作用為:

oracle 11g中,當創建的表無數據時,不進行segment分配,以節省存儲空間。

為了理解啥原理,這里再復習下Oracle的幾個概念:

1. tablespace: 一個數據庫劃分為一個或多個邏輯單位,該邏輯單位成為表空間;每一個表空間可能包含一個或多個Segment;

2. Segments: Segment指在tablespace中為特定邏輯存儲結構分配的空間。每一個段是由一個或多個extent組成。包括數據段、索引段、回滾段和臨時段

3. Extents: 一個 extent 由一系列連續的 Oracle blocks 組成。通過extent 來給segment分配空間。

4. Data Blocks:Oracle 最小I/O存儲單位,一個 data block 對應一個或多個分配給data file的操作系統塊;默認為8KB,此參數在創建實例時可以修改,如做數倉庫一般修改為64KB以上,為的是一次能從存儲中多讀取一些數據進內存,提升處理速度。

來張圖更直觀:

Oracle10g之前的版本,table 創建時,默認創建了一個data segment,這個data segment含有min extents 指定的extents 數,每個extent 據表空間的存儲參數分配一定數量的blocks。

Oracle11g及12c以后版本,有了一個新特性參數deferred_segment_creation(延遲段創建),默認為true;該參數表示:創建表時,如為空沒有數據插入則不分配segment,如果為false,則在創建表示創建一個data segment;

注意sys用戶除外,它會自動分配空間,普通用戶不會自動創建。

了解了如上deferred_segment_creation特性;

有同學會說:把deferred_segment_creation修改為flase不就行了。

注意:

deferred_segment_creation修改為flase后,只對新建的空表起作用,之前空表依舊無法正常導出,除非把之前的所有空表做一次segment段分配處理。

怎么做?

把所有的空表segment?create 處理,通過sql手動方法實現

步驟如下:

步驟1:--查詢所有的空表

select table_name from user_tables where NUM_ROWS=0;

步驟2:--拼接sql,批量生成修改語句

select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

步驟3:--利用exp/imp命令重新執行導出和導入操作即可。

步驟4:--修改deferred_segment_creation修改為flase,規避后續再次出現此類問題。

這里注意,步驟2會出現一種現象:

步驟2查出來的有些空表,在視圖user_tables中的num_rows不等于0(原因:表中以前有數據,刪除后oracle沒有統計,視圖user_tables中數據沒有更新),故通過步驟2的sql并不能為所有的空表分配數據段。

怎么辦?

執行一遍統計信息搜集即可。

select 'analyze table '||table_name||' compute statistics;' from user_tables;

analyze table tablename compute statistics;

等同于 analyze table tablename compute statistics for table for all indexes for all columns;

for table的統計信息存在于視圖:user_tables 、all_tables、dba_tables

for all indexes的統計信息存在于視圖:user_indexes 、all_indexes、dba_indexes

for all columns的統計信息存在于視圖:user_tab_columns、all_tab_columns、dba_tab_columns

執行完后,視圖user_tables中的num_rows值會做更新,此時再執行步驟2,能夠給所有空表分配數據段

然而,在執行 analyze table tablename compute statistics 時,oracle會報object statictis are locked (這些表的統計被鎖了),通過如下方式解鎖:

select 'exec dbms_stats.unlock_table_stats('||'''OWNNAME'''||','''||table_name||''');' from user_tables?where table_block=’DISABLED’;

以下是UNLOCK_TABLE_STATS Procedure介紹

This procedure unlocks the statistics on the table.

Syntax

DBMS_STATS.UNLOCK_TABLE_STATS (

???ownname ???VARCHAR2,

???tabname ???VARCHAR2);

Parameters

Table 141-98 UNLOCK_TABLE_STATS Procedure Parameters

Parameter

Description

ownname

The name of the schema

tabname

The name of the table

Usage Notes

When statistics on a table is locked, all the statistics depending on the table, including table statistics, column statistics, histograms and statistics on all dependent indexes, are considered to be locked.

The?SET_*,?DELETE_*,?IMPORT_*,?GATHER_*?procedures that modify statistics in the dictionary of an individual table, index or column will raise an error if statistics of the object is locked.

Procedures that operates on multiple objects (such as?GATHER_SCHEMA_STATS) will skip modifying the statistics of an object if it is locked. Many procedures have force argument to override the lock.

?歡迎關注個人微信公眾號“一森咖記”

? ?

近期熱文

你可能也會對以下話題感興趣。點擊鏈接便可查看。

  • Oracle ADG同步技術,DBA必備的一種“后悔藥”

  • OpenJDK和Oracle JDK有什么區別和聯系?

  • 神技_如何快捷下載Oracle補丁的方法?!

  • 趨勢篇:oracle 11g,12c,18c,19c之support lifetime

  • Configuring Kernel Parameters about SHMMAX on HP

  • 對recursive calls的深刻理解

  • Centos能不能替換RHEL?

  • RAC1 服務器要重啟,喂:RAC2你先頂一下,咋搞?!

  • 對recursive calls的深刻理解

  • OpenJDK和Oracle JDK有什么區別和聯系?

  • Centos能不能替換RHEL?

  • PLSQL Developer中控制結果集表格自動提交

  • alter table T1 add column新增字段執行時間超長,咋回事?

  • Oracle 11g 異機rman恢復報錯ORA-27302:failure occurred at: sskgpcreates

  • 年末總結_聊一聊數據庫行業的“繼往開來”

  • Materialized view物化視圖的一個簡單應用場景

  • 干貨:RHEL7.2生產環境下雙節點12c RAC搭建實操

  • 【干貨篇】在國內外數據庫百家爭鳴的時代,DBA們該何去何從?

  • LINUX環境:MySQL和Oracle開機自啟動,咋搞?Logminer:oracle人為誤操作之恢復神器

  • What:ASM自動脫落了

  • 實操:12C RAC環境下的ADG同步庫搭建

  • “神器”:Oracle日志采集分析工具——TFA

  • Oracle Rac:關閉透明大頁的原因及方法

  • 實操篇:Oracle 19c的安裝部署

  • 淺談MySQL三種鎖:全局鎖、表鎖和行鎖

  • Oracle如何訪問MySql:透明網關

總結

以上是生活随笔為你收集整理的clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。