回覆列表
  • 1 # 變餅檔

      1、Oracle11g預設對空表不分配segment,故使用exp匯出Oracle11g資料庫時,空表不會匯出。

      2、設定deferred_segment_creation 引數為FALSE後,無論是空表還是非空表,都分配segment。

      在sqlplus中,執行如下命令:

      SQL>alter system set deferred_segment_creation=false;

      檢視:

      SQL>show parameter deferred_segment_creation;

      該值設定後只對後面新增的表產生作用,對之前建立的空表不起作用。

      3、可以使用手工為空表分配Extent的方式,來解決匯出之前建立的空表的問題。說明如下:

      3.1 使用ALLOCATE EXTENT的說明

      使用ALLOCATE EXTENT可以為資料庫物件分配Extent。其語法如下:

      -----------

      ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE "filename" | INSTANCE integer }

      -----------

      可以針對資料表、索引、物化檢視等手工分配Extent。

      ALLOCATE EXTENT使用樣例:

      ALLOCATE EXTENT

      ALLOCATE EXTENT(SIZE integer [K | M])

      ALLOCATE EXTENT(DATAFILE "filename")

      ALLOCATE EXTENT(INSTANCE integer)

      ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE "filename")

      ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)

      針對資料表操作的完整語法如下:

      -----------

      ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE "filename" | INSTANCE integer})]

      -----------

      故,需要構建如下樣子簡單的SQL命令:

      -----------

      alter table aTabelName allocate extent

      -----------

      3.2 構建對空表分配空間的SQL命令,

      查詢當前使用者下的所有空表(一個使用者最好對應一個預設表空間)。命令如下:

      -----------

      SQL>select table_name from user_tables where NUM_ROWS=0;

      -----------

      根據上述查詢,可以構建針對空表分配空間的命令語句,如下:

      -----------

      SQL>Select "alter table "||table_name||" allocate extent;" from user_tables where num_rows=0

      -----------

      批次輸出上述生成的SQL語句,建立C:\createsql.sql,其內容如下:

      -----------

      set heading off;

      set echo off;

      set feedback off;

      set termout on;

      spool C:\allocate.sql;

      Select "alter table "||table_name||" allocate extent;" from user_tables where num_rows=0;

      spool off;

      -----------

      執行C:\createsql.sql,命令如下:

      -----------

      SQL>@ C:\createsql.sql;

      -----------

      執行完畢後,得到C:\allocate.sql檔案。

      開啟該檔案會看到,已經得到對所有空表分配空間的命令SQL語句。

      3.4 執行SQL命令,對空表分配空間:

      執行C:\allocate.sql,命令如下:

      -----------

      SQL>@ C:\allocate.sql;

      -----------

      執行完畢,表已更改。

      3.4 此時執行exp命令,即可把包括空表在內的所有表,正常匯出。

      另外:Oracle11g中,對密碼是大小寫敏感的,即密碼中的字母是區分大小寫的。

      在Oracle10g中及以前,密碼中的字母大小寫無所謂。

  • 2 # 李祁oop

    1、獲取幫助:exp help=y

    2. 匯出一個完整資料庫exp user/pwd@instance file=path full=y示例:exp system/system@xc file = c:/hehe full =

    3、匯出一個或一組指定使用者所屬的全部表、索引和其他物件exp system/manager file=seapark log=seapark owner=seaparkexp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)示例:exp system/system@xc file=c:/hehe owner=uep4、匯出一個或多個指定表exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table)5、匯入一個數據庫檔案imp username/password@orcl file=F:/work/ahsxmgl/db/ahsxmgl0630.DMP full=y

  • 中秋節和大豐收的關聯?
  • 汽車空檔滑行傷變速箱嗎?