eygle.com   eygle.com
eygle.com  
 

« September 26, 2009 | Blog首页 | September 30, 2009 »



September 29, 2009

工作记录: 2亿记录的导入及索引创建

作者:eygle

出处:http://blog.eygle.com

昨天做了这样一个工作,将一个2.2亿记录的分区导入一台 2 CPU (2 cores per cpu)的主机:
model name      : Intel(R) Xeon(R) CPU            5130  @ 2.00GHz

这个过程大约用了15个小时的时间,非常漫长:
229052056 rows imported
4951.14user 669.39system 15:30:02elapsed 10%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (21112major+649765minor)pagefaults 0swaps
然后在一个VARCHAR2(21)的字段上创建了一个单键值非唯一的索引,耗时1小时30分钟,创建索引时用了nologging选项,并行度为4.

以下记录一下创建这个索引消耗的临时表空间等信息.
最终创建的索引,大小大约为1.5G:
SQL> select segment_name,bytes/1024/1024 MB from user_segments where segment_name='IDX_DEST_MDN';

SEGMENT_NAME            MB
--------------- ----------
IDX_DEST_MDN        1555.5
创建中使用的临时表空间大约8G左右:

SQL> SELECT
  2      b.tablespace          tablespace_name
  3    , a.username            username
  4    , a.sid                 sid
  5    , a.serial#             serial_id
  6    , b.contents            contents
  7    , b.segtype             segtype
  8    , b.extents             extents
  9    , b.blocks              blocks
 10    , (b.blocks * c.value)  bytes
 11  FROM
 12      v$session     a
 13    , v$sort_usage  b
 14    , (select value from v$parameter
 15       where name = 'db_block_size') c
 16  WHERE
 17        a.saddr = b.session_addr
 18  /

Tablespace Name Username           SID   Serial# Contents  Segment Type  Extents       Blocks            Bytes
--------------- --------------- ------ --------- --------- ------------ -------- ------------ ----------------
TEMP            SMS                152     34899 TEMPORARY SORT            1,747      223,616    1,831,862,272
                SMS                146     37002 TEMPORARY SORT            1,768      226,304    1,853,882,368
                SMS                142        86 TEMPORARY SORT            1,755      224,640    1,840,250,880
                SMS                137     28754 TEMPORARY SORT            1,778      227,584    1,864,368,128
                SMS                134        42 TEMPORARY SORT               16        2,048       16,777,216
***************                                                         -------- ------------ ----------------
sum                                                                        7,064      904,192    7,407,140,864


创建中使用的表空间临时段信息如下:
SQL> select segment_name,segment_type,bytes/1024/1024 MB,blocks from user_segments where segment_type='TEMPORARY';

SEGMENT_NAME                   SEGMENT_TYPE                 MB       Blocks
------------------------------ -------------------- ---------- ------------
12.261516                      TEMPORARY                  1280      163,840
8.25484                        TEMPORARY                  1280      163,840
6.2459148                      TEMPORARY                  1313      168,064
12.261772                      TEMPORARY                  1344      172,032
                                                    ---------- ------------
sum                                                       5217      667,776
工作信息,记录供参考。

-The End-


Posted by eygle at 7:59 PM | Comments (0)


Oracle impdp的ignore及 fromuser / touser 功能

作者:eygle

出处:http://blog.eygle.com

在使用impdp时,会发现,有很多参数选项与imp不同,比如说,找不到了fromuser和touser参数,也找不到了ignore参数,indexes等参数也不再存在。

当然这些功能都还在,而且更加强大,impdp有了不少新的替代参数。
以下三个参数极大的增强了用户转换及表空间转换的操作:
REMAP_DATAFILE        Redefine datafile references in all DDL statements.
REMAP_SCHEMA          Objects from one schema are loaded into another schema.
REMAP_TABLESPACE      Tablespace object are remapped to another tablespace.

REMAP_SCHEMA可以定义用户的切换,其格式为:
remap_schema=old_schema_name:new_schema_name

REMAP_TABLESPACE可以定义切换对象的不同表空间,其格式为:
rempa_tablesapce=old_tablespace_name:new_tablespace_name

以前类似IGNORE的忽略创建错误,可以使用CONTENT参数:
CONTENT               Specifies data to load where the valid keywords are:
                              (ALL), DATA_ONLY, and METADATA_ONLY.

如果数据结构已经存在可以指定CONTENT=DATA_ONLY,仅导入数据。

而关于索引的排除,可以使用EXCLUDE参数:
EXCLUDE               Exclude specific object types, e.g. EXCLUDE=TABLE:EMP.

IMPDP导入时忽略索引可以使用类似: EXCLUDE=CONSTRAINT EXCLUDE=INDEX

如果导入时遇到如下错误,就需要调整REMAP_SCHEMA参数:
ORA-39146: schema "SMS_MT" does not exist

遇到如下错误,那就需要制定REMAP_TABLESPACE参数:
ORA-00959: tablespace 'SMS_MT' does not exist

今天使用的参数是:
impdp sms4/sms4 dumpfile=08.dmp directory=impdp TABLES=smsmg REMAP_SCHEMA=SMS:SMS4 REMAP_TABLESPACE=SMS_MT:SMS CONTENT=DATA_ONLY PARALLEL=8 EXCLUDE=CONSTRAINT EXCLUDE=INDEX

记录一下供参考。

-The End-






Posted by eygle at 8:22 AM | Comments (4)



CopyRight © 2004-2008 eygle.com, All rights reserved.