oracle資料庫分割槽的備份和恢復

2021-06-22 11:47:19 字數 2974 閱讀 8516

1 檢視建立表空間時指定的資料檔案

show parameter db_create_file

2 設定表空間位址

alter system set db_create_file_dest ='/opt/oracle/product/oradata/orcl'

3 建立6個表空間,3個給表分割槽,三給分割槽索引

create tablespace p1;

create tablespace p2;

create tablespace p3;

create tablespace p1_idx;

create tablespace p2_idx;

create tablespace p3_idx;

4 建立分割槽表

create table t(id int, name varchar2(1000)) partition by range(id)

(partition p1 values less than(10000) tablespace p1,

partition p2 values less than(20000) tablespace p2,

partition p3 values less than(maxvalue) tablespace p3

);5 建立索引分割槽

create index t_idx on t(id) local

(partition p1 tablespace p1_idx,

partition p2 tablespace p2_idx,

partition p3 tablespace p3_idx);/

6 檢視分割槽與分割槽索引和表空間的對應關係

select partition_name,tablespace_name from user_segments where segment_name='t';

select partition_name,tablespace_name from user_segments where segment_name='t_idx';

7 向分割槽表中插入資料

begin

for i in 1..3 loop

insert into t select object_id*i,object_name from dba_objects where object_id<10000;

end loop;

commit;

end;

/8 檢視分割槽表中的資料

select 'p1',count(*) from t partition(p1)

union

select 'p2',count(*) from t partition(p2)

union

select 'p3',count(*) from t partition(p3)

9 將分割槽p1以及p1索引所在的表空間設定為唯讀

alter tablespace p1 read only;

alter tablespace p1_idx read only;

10 建立資料庫物件--目錄,用於匯出和匯入時設定路徑

create directory tts as '/bak';

11 嘗試對錶空間進行匯出

cd /opt/oracle/product/11.1.0/bin

expdp viexpress_bbb/iflytek directory=tts dumpfile=tts_p1.dmp transport_tablespaces=p1,p1_idx logfile=tts_p1.log

由於表空間的物件並非是自包含,

12 建立乙個臨時表和臨時表索引

create table t_temp as select * from t where 1=2;

create index t_temp_idx on t_temp(id);

select segment_name,tablespace_name from user_segments where segment_name in ('t_temp','t_temp_idx');

13 進行分割槽交換

alter table  t exchange partition p1 with table t_temp including indexes;

14 獲得匯出檔案的資料檔案路徑

select file_name from dba_data_files where tablespace_name in ('p1', 'p1_idx');

15 拷貝資料檔案到指定的備份檔案路徑

cp /opt/oracle/product/oradata/orcl/orcl/datafile/*_p1_*.dbf /bak/

14 進行表空間匯出

expdp viexpress_bbb/iflytek directory=tts dumpfile=tts_p1.dmp transport_tablespaces=p1,p1_idx logfile=tts_p1.log

15 刪除已經兩個表空間p1和p1_idx

drop tablespace p1 including contents;

drop tablespace p1_idx including contents;

16 最後在/bak路徑下就儲存了所有的歸檔資料

1 匯入臨時表和它的索引資料 

cp /bak/tts_p1.dmp .

impdp viexpress_bbb/iflytek directory=tts dumpfile=tts_p1.dmp transport_datafiles='/bak/o1_mf_p1_9swvl7ms_.dbf','/bak/o1_mf_p1_idx_9swvnp1z_.dbf' logfile=imp_tts.log

2 將資料交換到分割槽表中

alter table t exchange partition p1 with table t_temp including indexes;

oracle資料庫分割槽

numtoyminterval和numtoyminterval是日期轉換函式,作用 可以將數字轉換成相應的日期單位時間 1.numtoyminterval n char expr char expr 日期描述,可以是year和month。通常當我們使用add month新增月時,如果輸入是本月月底的...

Oracle資料庫的分割槽

實現了均勻的負載值分配,增加 hash 分割槽可以重新分配資料 建立create table table name empno number,ename varchar 20 partition by hash empno partition p1,partition p2 檢視分割槽結構 sele...

oracle備份和還原資料庫

一 備份 1.1指定版本匯出,命令列執行如下語句,其中檔名自定義 expdp userid 管理員賬號 密碼 資料庫ip 埠 備份的資料庫名稱 as sysdba schemas 要備份的表空間名稱 dumpfile 自定義的檔名.dmp logfile 自定義的檔名.log directory d...