exp/imp参数说明

exp参数
关键字 说明 (默认值) 关键字 说明 (默认值)
————————————————————————–
USERID 用户名/口令 FULL 导出整个文件 (N)
BUFFER 数据缓冲区大小 OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP) TABLES 表名列表
COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y) INCTYPE 增量导出类型
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)
LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)
ROWS 导出数据行 (Y) PARFILE 参数文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)

OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK 每 x 行显示进度 (0)
FILESIZE 每个转储文件的最大大小
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间
QUERY 用于导出表的子集的 select 子句
RESUMABLE 遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查
TABLESPACES 要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名

imp参数
关键字 说明 (默认值) 关键字 说明 (默认值)
————————————————————————–
USERID 用户名/口令 FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小 FROMUSER 所有者用户名列表
FILE 输入文件 (EXPDAT.DMP) TOUSER 用户名列表
SHOW 只列出文件内容 (N) TABLES 表名列表
IGNORE 忽略创建错误 (N) RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y) INCTYPE 增量导入类型
INDEXES 导入索引 (Y) COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y) PARFILE 参数文件名
LOG 屏幕输出的日志文件 CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
FEEDBACK 每 x 行显示进度 (0)
TOID_NOVALIDATE 跳过指定类型 ID 的验证
FILESIZE 每个转储文件的最大大小
STATISTICS 始终导入预计算的统计信息
RESUMABLE 在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME 用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
COMPILE 编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION 导入流的一般元数据 (Y)
STREAMS_INSTANTIATION 导入流实例化元数据 (N)
DATA_ONLY 仅导入数据 (N)

下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户

发表在 逻辑备份/恢复 | 评论关闭

Oracle分区表管理

1、添加分区
1.1)增加分区(add partition)
语法是:alter table xxx add partition…
Alter table t_range add partition p5 values less than (50) [tablespace users];
–50 要大于之前分区的所有值
Alter table t_list add partition p5 values (7,8,9) [tablespace users];
–7,8,9均不能在之前分区中出现
Alter table t_hash add partition [p5] [tablespace users];
–添加hash分区

1.2)添加子分区
Alter table xxx modify partition p1 add subpartition …
增加RANGE-HASH子分区
ALTER TABLE diving MODIFY PARTITION locations_us
ADD SUBPARTITION us_locs5 TABLESPACE us1;
说明:Range,list增加分区不会影响索引(包括global 跟local),HASH增加分区会让数据重新分配,产生IO,如果不指定update indexes 选项则会导致有数据移动的索引unusable,需要重新编译。
当然,我们说的对索引的影响都是在表中有数据的情况下,没数据当然影响不到索引了。

2、合并分区
2.1)HASH分区或子分区
Alter table xxx coalesce partion [update indexes];
Alter table xxx modify partition p1 coalesce subpartition;
合并一次会减少一个分区(最少能减少到1个),数据重新分配,产生IO,有数据移动的索引失效(如果不指定update indexes的话).

2.2)非HASH分区
Alter table xxx merge partitions/subpartitions p1,p2 into partiton/subpartition p3 [TABLESPACE tablespace_name];
表分区必须是相邻的。
跟COALESCE一样,会产生IO,数据量大的话,IO也是相当大的。
同样可以用UPDATE INDEXES 避免索引失效
alter table dinya_test merge partitions part_01,part_02 into partition part_02;

3、删除分区(drop partition)
Alter table xxx drop partition ppp;
删除子分区:
Alter table xxx drop subpartition ppp;
此功能hash不支持。同时要注意,删除分区会同时删除该分区内数据。
同样,如果不指定update indexes的话该操作会导致GLOBAL索引失效,而LOCAL不会,因为对应的LOCAL索引分区也被删除了嘛,其他分区的LOCAL不会受到影响。

4、交换分区(exchange partition)
Alter table tb1 exchange partition/subpartition p1 with table tb2;
据说是采用了更改数据字典的方式,所以速度比较快。
可以是分区跟非分区表交换,子分区跟非分区表交换,组合分区跟分区表交换。
alter table t_partition_range exchange partition t_range_p2
with table t_partition_range_tmp;
将t_range_p2与t_partition_range_tmp的数据互迁移
注意点:
涉及交换的两表之间表结构必须一致,除非附加with validation子句;
如果是从非分区表向分区表做交换,非分区表中的数据必须符合分区表中指定分区的规则,除非附加without validation子句;
如果从分区表向分区表做交换,被交换的分区的数据必须符合分区规则,除非附加without validation子句;
Global索引或涉及到数据改动了的global索引分区会被置为unusable,除非附加update indexes子句。

5、拆分分区
功能与MERGE PARTITIONS相反。通常我们会用来拆分MAXVALUE/DEFAULT分区。
Range partition:
Alter table xxx split partition/subpartition p1 at (15) into (partition/subpartition p1_new1,partition/subpartition p1_new2);
List partition:
Alter table xxx split partition/subpartition p1 values(15,16) into (partition/subpartition p1_new1,partition/subpartition p1_new2);
原分区中符合新值定义的记录会存入第一个分区,其他存入第二个分区,当然,在新分区后面可以指定属性,比如TABLESPACE。
HASH分区不适用。
会产生IO
同样,可用update indexes 来避免索引失效
alter table timestamps split partition p1 at (to_date(’2003-01-01′,’yyyy-mm-dd’))into (partition px tablespace ts3, partition py tablespace ts3);
将P1分区拆分成PX,PY两个分区,分界点是to_date(’2003-01-01′,’yyyy-mm-dd’)

6、修改LIST分区—ADD VALUES
Alter table xxx modify partition/subpartition p1 add values(7,9);
要注意的是,增加的VALUES不能在其他分区列的VALUES值中存在,也不能在DEFAULT分区(如果有的话)中有相应VALUES.
不会影响索引

7、修改LIST 分区—DROP VALUES
Alter table xxx modify partition/subpartition p1 drop values(8,9);
同样,删除的values 不能存在记录.
不会影响索引

8、截断分区
跟TRUNCATE TABLE一样,截断该分区内的数据。
Alter table xxx truncate partition/subpartition p1;
同样,可用update indexes 来避免索引失效

9、移动分区
Alter table xxx move partition/subpartition p1 …;
有些功能比如改变分区表空间,modify partition就做不到,此时就可以用move partition来做
Alter table tab move partition p_tab tablespace tbl update indexes;
可用update indexes 来避免索引失效

10、修改分区默认属性(modify default attributes)
修改表属性:alter table xxx modify default attributes …
修改分区属性(适用于组合分区):alter table xxx modify default attributes for partition p1 …
只对以后添加的分区产生影响,适用于所有分区,其中hash分区只能修改表空间属性。
如:Alter table xxx modify default attributes tablespace users;

建立Oracle分区表

发表在 Oracle | 评论关闭

查询Oracle分区表相关信息

显示数据库所有分区表的信息:
select * from DBA_PART_TABLES;

显示表分区信息/显示数据库所有分区表的详细分区信息:
select * from DBA_TAB_PARTITIONS

显示子分区信息/显示数据库所有组合分区表的子分区信息:
select * from DBA_TAB_SUBPARTITIONS

显示分区列/显示数据库所有分区表的分区列信息:
select * from DBA_PART_KEY_COLUMNS

显示子分区列/显示数据库所有分区表的子分区列信息:
select * from DBA_SUBPART_KEY_COLUMNS

显示数据库所有分区表索引的信息:
SELECT * FROM dba_part_indexes;

发表在 Oracle | 评论关闭