资源描述:
《导入导出 Oracle 分区表数据》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、导入导出Oracle分区表数据-CUUG --**************************** --导入导出Oracle分区表数据 --**************************** 导入导入Oracle分区表数据是OracleDBA经常完成的任务之一。分区表的导入导出同样普通表的导入导出方式,只不过导入导出需要考虑到分区的特殊性,如分区索引,将分区迁移到普通表,或使用原始分区表导入到新的分区表。下面将描述使用imp/exp,impdp/expdp导入导出分区表数据。 一、分区级别的导入导出 可以导出一个或多个分区,也可以
2、导出所有分区(即整个表)。 可以导入所有分区(即整个表),一个或多个分区以及子分区。 对于已经存在数据的表,使用imp导入时需要使用参数IGNORE=y,而使用impdp,加table_exists_action=append
3、replace参数。 二、创建演示环境 1.查看当前数据库的版本 SQL>select*fromv$versionwhererownum<2; BANNER -------------------------------------------------------------------------------
4、- OracleDatabase11gEnterpriseEditionRelease11.2.0.1.0-Production 2.创建一个分区表 SQL>altersessionsetnls_date_format='yyyy-mm-dd'; SQL>CREATETABLEtb_pt( sal_dateDATENOTNULL, sal_idNUMBERNOTNULL, sal_rowNUMBER(12)NOTNULL)17 partitionbyrange(sal_date) ( partitionsal_11valuesles
5、sthan(to_date('2012-01-01','YYYY-MM-DD')), partitionsal_12valueslessthan(to_date('2013-01-01','YYYY-MM-DD')), partitionsal_13valueslessthan(to_date('2014-01-01','YYYY-MM-DD')), partitionsal_14valueslessthan(to_date('2015-01-01','YYYY-MM-DD')), partitionsal_15valueslessthan(t
6、o_date('2016-01-01','YYYY-MM-DD')), partitionsal_16valueslessthan(to_date('2017-01-01','YYYY-MM-DD')), partitionsal_othervalueslessthan(maxvalue) )nologging; 3.创建一个唯一索引 CREATEUNIQUEINDEXtb_pt_ind1 ONtb_pt(sal_date)nologging; 4.为分区表生成数据 SQL>INSERTINTOtb_pt SELECTTRUNC(SY
7、SDATE)+ROWNUM,dbms_random.random,ROWNUM FROMdual CONNECTBYLEVEL<=5000;<> SQL>commit; SQL>selectcount(1)fromtb_ptpartition(sal_11); COUNT(1) ---------- 300 SQL>selectcount(1)fromtb_ptpartition(sal_other); COUNT(1) ---------- 287317 SQL>select*fromtb_ptpartition(sal_12
8、)whererownum<3; SAL_DATESAL_IDSAL_ROW ----------------------------- 01-JAN-12-1.356E+09301 02-JAN-12-761530183302 三、使用exp/imp导出导入分区表数据 1.导出整个分区表 [oracle@node1~]$expscott/tigerfile='/u02/dmp/tb_pt.dmp'log='/u02/dmp/tb_pt.log'tables=tb_pt Export:Release11.2.0.1.0-Productio
9、nonWedMar913:52:182011 Copyright(c)1982,2009,O