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然后在一个VARCHAR2(21)的字段上创建了一个单键值非唯一的索引,耗时1小时30分钟,创建索引时用了nologging选项,并行度为4.
4951.14user 669.39system 15:30:02elapsed 10%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (21112major+649765minor)pagefaults 0swaps
以下记录一下创建这个索引消耗的临时表空间等信息.
最终创建的索引,大小大约为1.5G:
SQL> select segment_name,bytes/1024/1024 MB from user_segments where segment_name='IDX_DEST_MDN';创建中使用的临时表空间大约8G左右:
SEGMENT_NAME MB
--------------- ----------
IDX_DEST_MDN 1555.5
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)
