分区表需要数据备份吗oracle,Oracle 分区表数据的导入与导出(1)
--****************************
-- 導(dǎo)入導(dǎo)出 Oracle 分區(qū)表數(shù)據(jù)
--****************************
導(dǎo)入導(dǎo)入Oracle 分區(qū)表數(shù)據(jù)是Oracle DBA 經(jīng)常完成的任務(wù)之一。分區(qū)表的導(dǎo)入導(dǎo)出同樣普通表的導(dǎo)入導(dǎo)出方式,只不過導(dǎo)入導(dǎo)出需要考
慮到分區(qū)的特殊性,如分區(qū)索引,將分區(qū)遷移到普通表,或使用原始分區(qū)表導(dǎo)入到新的分區(qū)表。下面將描述使用imp/exp,impdp/expdp導(dǎo)入導(dǎo)出
分區(qū)表數(shù)據(jù)。
有關(guān)分區(qū)表的特性請(qǐng)參考:
有關(guān)導(dǎo)入導(dǎo)出工具請(qǐng)參考:
有關(guān)導(dǎo)入導(dǎo)出的官方文檔請(qǐng)參考:
一、分區(qū)級(jí)別的導(dǎo)入導(dǎo)出
可以導(dǎo)出一個(gè)或多個(gè)分區(qū),也可以導(dǎo)出所有分區(qū)(即整個(gè)表)。
可以導(dǎo)入所有分區(qū)(即整個(gè)表),一個(gè)或多個(gè)分區(qū)以及子分區(qū)。
對(duì)于已經(jīng)存在數(shù)據(jù)的表,使用imp導(dǎo)入時(shí)需要使用參數(shù)IGNORE=y,而使用impdp,加table_exists_action=append | replace 參數(shù)。
二、創(chuàng)建演示環(huán)境
1.查看當(dāng)前數(shù)據(jù)庫的版本
SQL> select * from v$version where rownum < 2;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
2.創(chuàng)建一個(gè)分區(qū)表
SQL> alter session set nls_date_format='yyyy-mm-dd';
SQL> CREATE TABLE tb_pt (
sal_date DATE NOT NULL,
sal_id NUMBER NOT NULL,
sal_row NUMBER(12) NOT NULL)
partition by range(sal_date)
(
partition sal_11 values less than(to_date('2012-01-01','YYYY-MM-DD')) ,
partition sal_12 values less than(to_date('2013-01-01','YYYY-MM-DD')) ,
partition sal_13 values less than(to_date('2014-01-01','YYYY-MM-DD')) ,
partition sal_14 values less than(to_date('2015-01-01','YYYY-MM-DD')) ,
partition sal_15 values less than(to_date('2016-01-01','YYYY-MM-DD')) ,
partition sal_16 values less than(to_date('2017-01-01','YYYY-MM-DD')) ,
partition sal_other values less than (maxvalue)
) nologging;
3.創(chuàng)建一個(gè)唯一索引
CREATE UNIQUE INDEX tb_pt_ind1
ON tb_pt(sal_date) nologging;
4.為分區(qū)表生成數(shù)據(jù)
SQL> INSERT INTO tb_pt
SELECT TRUNC(SYSDATE)+ROWNUM, dbms_random.random, ROWNUM
FROM dual
CONNECT BY LEVEL<=5000;
SQL> commit;
SQL> select count(1) from tb_pt partition(sal_11);
COUNT(1)
----------
300
SQL> select count(1) from tb_pt partition(sal_other);
COUNT(1)
----------
2873
SQL> select * from tb_pt partition(sal_12) where rownum < 3;
SAL_DATE SAL_ID SAL_ROW
--------- ---------- ----------
01-JAN-12 -1.356E+09 301
02-JAN-12 -761530183 302
三、使用exp/imp導(dǎo)出導(dǎo)入分區(qū)表數(shù)據(jù)
1.導(dǎo)出整個(gè)分區(qū)表
[oracle@node1 ~]$ exp scott/tiger file='/u02/dmp/tb_pt.dmp' log='/u02/dmp/tb_pt.log' tables=tb_pt
Export: Release 11.2.0.1.0 - Production on Wed Mar 9 13:52:18 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing o
Export done in US7ASCII character set and AL16UTF16 NCHAR character set
server uses ZHS16GBK character set (possible charset conversion)
About to export specified tables via Conventional Path ...
. . exporting table TB_PT
. . exporting partition SAL_11 300 rows exported
. . exporting partition SAL_12 366 rows exported
. . exporting partition SAL_13 365 rows exported
. . exporting partition SAL_14 365 rows exported
. . exporting partition SAL_15 365 rows exported
. . exporting partition SAL_16 366 rows exported
. . exporting partition SAL_OTHER 2873 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings.
[oracle@node1 ~]$ oerr exp 00091
00091, 00000, "Exporting questionable statistics."
// *Cause: Export was able export statistics, but the statistics may not be
// usuable. The statistics are questionable because one or more of
// the following happened during export: a row error occurred, client
// character set or NCHARSET does not match with the server, a query
// clause was specified on export, only certain partitions or
// subpartitions were exported, or a fatal error occurred while
// processing a table.
// *Action: To export non-questionable statistics, change the client character
// set or NCHARSET to match the server, export with no query clause,
// export complete tables. If desired, import parameters can be
// supplied so that only non-questionable statistics will be imported,
// and all questionable statistics will be recalculated.
在上面的導(dǎo)出中出現(xiàn)了錯(cuò)誤提示,即EXP-00091,該錯(cuò)誤表明exp工具所在的環(huán)境變量中的NLS_LANG與DB中的NLS_CHARACTERSET不一致
盡管該錯(cuò)誤對(duì)最終的數(shù)據(jù)并無影響,但調(diào)整該參數(shù)來避免異常還是有必要的。因此需要將其設(shè)置為一致即可解決上述的錯(cuò)誤提示。
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
[oracle@node1 ~]$ export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'
經(jīng)過上述設(shè)置之后再次導(dǎo)出正常,過程略。
2.導(dǎo)出單個(gè)分區(qū)
[oracle@node1 ~]$ exp scott/tiger file='/u02/dmp/tb_pt_sal_16.dmp' log='/u02/dmp/tb_pt_sal_16.log' tables=tb_pt:sal_16
Export: Release 11.2.0.1.0 - Production on Wed Mar 9 13:52:38 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing o
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
About to export specified tables via Conventional Path ...
. . exporting table TB_PT
. . exporting partition SAL_16 366 rows exported
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings
在上面的導(dǎo)出過程中再次出現(xiàn)了統(tǒng)計(jì)信息錯(cuò)誤的情況,因此采取了對(duì)該對(duì)象收集統(tǒng)計(jì)信息,但并不能解決該錯(cuò)誤,但在exp命令行中增
加statistics=none即可,如下:
[oracle@node1 ~]$ exp scott/tiger file='/u02/dmp/tb_pt_sal_16.dmp' log='/u02/dmp/tb_pt_sal_16.log' /
> tables=tb_pt:sal_16 statistics=none
如果要導(dǎo)出多個(gè)分區(qū),則在tables參數(shù)中增加分區(qū)數(shù)。如:tables=(tb_pt:sal_15,tb_pt:sal_16)
3.使用imp工具生成創(chuàng)建分區(qū)表的DDL語句
[oracle@node1 ~]$ imp scott/tiger tables=tb_pt indexfile='/u02/dmp/cr_tb_pt.sql' /
> file='/u02/dmp/tb_pt.dmp' ignore=y
Export: Release 11.2.0.1.0 - Production on Wed Mar 9 13:54:38 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing o
Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
. . skipping partition "TB_PT":"SAL_11"
. . skipping partition "TB_PT":"SAL_12"
. . skipping partition "TB_PT":"SAL_13"
. . skipping partition "TB_PT":"SAL_14"
. . skipping partition "TB_PT":"SAL_15"
. . skipping partition "TB_PT":"SAL_16"
. . skipping partition "TB_PT":"SAL_OTHER"
Import terminated successfully without warnings.
4.導(dǎo)入單個(gè)分區(qū)(使用先前備份的單個(gè)分區(qū)導(dǎo)入文件)
SQL> alter table tb_pt truncate partition sal_16; --導(dǎo)入前先將分區(qū)實(shí)現(xiàn)truncate
Table truncated.
SQL> select count(1) from tb_pt partition(sal_16);
COUNT(1)
----------
0
SQL> ho imp scott/tiger tables=tb_pt:sal_16 file='/u02/dmp/tb_pt_sal_16.dmp' ignore=y
Export: Release 11.2.0.1.0 - Production on Wed Mar 9 13:55:39 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing o
Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
. importing SCOTT's objects into SCOTT
. importing SCOTT's objects into SCOTT
. . importing partition "TB_PT":"SAL_16"
IMP-00058: ORACLE error 1502 encountered
ORA-01502: index 'SCOTT.TB_PT_IND1' or partition of such index is in unusable state
Import terminated successfully with warnings.
收到了ORA-01502錯(cuò)誤,下面查看索引的狀態(tài),并對(duì)其重建索引后再執(zhí)行導(dǎo)入
SQL> select index_name ,status from dba_indexes where table_name='TB_PT'; --查看索引的狀態(tài)
INDEX_NAME STATUS
------------------------------ --------
TB_PT_IND1 UNUSABLE
SQL> alter index TB_PT_IND1 rebuild online; --重建索引
Index altered.
SQL> ho imp scott/tiger tables=tb_pt:sal_16 file='/u02/dmp/tb_pt_sal_16.dmp' ignore=y --再次導(dǎo)入成功
Export: Release 11.2.0.1.0 - Production on Wed Mar 9 13:56:15 2011
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing o
Export file created by EXPORT:V11.02.00 via conventional path
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
. importing SCOTT's objects into SCOTT
. importing SCOTT's objects into SCOTT
. . importing partition "TB_PT":"SAL_16" 366 rows imported
Import terminated successfully without warnings.
SQL> select count(*) from tb_pt partition(sal_16);
COUNT(*)
----------
366
總結(jié)
以上是生活随笔為你收集整理的分区表需要数据备份吗oracle,Oracle 分区表数据的导入与导出(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 织梦会员登录PHP,DEDECMS会员登
- 下一篇: c语言 常量字符串数组,C语言常量以及字