傳輸表空間及問題處理
今天試驗表空間傳輸,從一個庫PROD 傳輸表空間到repos
假定表employees 在tbs4表空間裡
SQL> select table_name,tablespace_name from user_tables where tablespace_name='TBS4';
TABLE_NAME TABLESPACE_NAME
------------------------------ ------------------------------
EMPLOYEES TBS4
------------------------------ ------------------------------
EMPLOYEES TBS4
當然employees 表裡有一些constaints什麼的。
表空間傳輸,可以用dbms_tts.transport_set_check('TBS4',TRUE);
然後用transport_set_violations來查詢傳輸是否有可行。
發現有一些關聯的constraint(外來鍵等)的影響
spool 如下指令碼
SQL> select 'alter table employees disable constraint '||constraint_name ||' CASCADE;' from user_constraints where table_name='EMPLOYEES';
'ALTERTABLEEMPLOYEESDISABLECONSTRAINT'||CONSTRAINT_NAME||'CASCADE;'
--------------------------------------------------------------------------------
alter table employees disable constraint EMP_LAST_NAME_NN CASCADE;
alter table employees disable constraint EMP_EMAIL_NN CASCADE;
alter table employees disable constraint EMP_HIRE_DATE_NN CASCADE;
alter table employees disable constraint EMP_JOB_NN CASCADE;
alter table employees disable constraint EMP_SALARY_MIN CASCADE;
alter table employees disable constraint EMP_EMAIL_UK CASCADE;
alter table employees disable constraint EMP_EMP_ID_PK CASCADE;
alter table employees disable constraint EMP_MANAGER_FK CASCADE;
alter table employees disable constraint EMP_JOB_FK CASCADE;
alter table employees disable constraint EMP_DEPT_FK CASCADE;
alter table employees disable constraint SYS_C003327 CASCADE;
--------------------------------------------------------------------------------
alter table employees disable constraint EMP_LAST_NAME_NN CASCADE;
alter table employees disable constraint EMP_EMAIL_NN CASCADE;
alter table employees disable constraint EMP_HIRE_DATE_NN CASCADE;
alter table employees disable constraint EMP_JOB_NN CASCADE;
alter table employees disable constraint EMP_SALARY_MIN CASCADE;
alter table employees disable constraint EMP_EMAIL_UK CASCADE;
alter table employees disable constraint EMP_EMP_ID_PK CASCADE;
alter table employees disable constraint EMP_MANAGER_FK CASCADE;
alter table employees disable constraint EMP_JOB_FK CASCADE;
alter table employees disable constraint EMP_DEPT_FK CASCADE;
alter table employees disable constraint SYS_C003327 CASCADE;
'ALTERTABLEEMPLOYEESDISABLECONSTRAINT'||CONSTRAINT_NAME||'CASCADE;'
--------------------------------------------------------------------------------
alter table employees disable constraint SYS_C003328 CASCADE;
alter table employees disable constraint SYS_C003329 CASCADE;
--------------------------------------------------------------------------------
alter table employees disable constraint SYS_C003328 CASCADE;
alter table employees disable constraint SYS_C003329 CASCADE;
13 rows selected.
執行就可以去除constraint的問題了。
執行就可以去除constraint的問題了。
檢查沒問題就可以傳輸了。
首先把tbs4置為只讀狀態
alter tablespace tbs4 read only;
exp \'sys/oracle@PROD as sysdba\' file=hr_PROD.dmp transport_tablespace=y
tablespaces=tbs4
匯出源資料檔案來
然後scp到目標庫的機器上,資料檔案tbs04.db也複製到對應的目錄下
在目標庫上執行
imp \'sys/oracle123@repos as sysdba\' file=hr_PROD.dmp transport_tablespace=y tablespaces=tbs4 datafiles=/u01/app/db/oradata/repos/tbs04.dbf
執行過後,似乎一切都ok了,新建一個分割槽表,結構和employees一模一樣。
SQL> create table emp_part partition by range(hire_date)
(
PARTITION p1 VALUES LESS THAN(TO_DATE('01/01/1980','DD/MM/YYYY')) tablespace tbs1,
PARTITION p2 VALUES LESS THAN(TO_DATE('01/01/1990','DD/MM/YYYY')) tablespace tbs2,
PARTITION p3 VALUES LESS THAN(TO_DATE('01/01/2000','DD/MM/YYYY')) tablespace tbs3,
PARTITION p4 VALUES LESS THAN(TO_DATE('01/01/2010','DD/MM/YYYY')) tablespace tbs4,
PARTITION p5 VALUES LESS THAN(maxvalue) tablespace tbs1
)
as select * from employees where rownum<1; 2 3 4 5 6 7 8 9
as select * from employees where rownum<1
*
ERROR at line 9:
ORA-28110: policy function or package HR.RLS_F has error
(
PARTITION p1 VALUES LESS THAN(TO_DATE('01/01/1980','DD/MM/YYYY')) tablespace tbs1,
PARTITION p2 VALUES LESS THAN(TO_DATE('01/01/1990','DD/MM/YYYY')) tablespace tbs2,
PARTITION p3 VALUES LESS THAN(TO_DATE('01/01/2000','DD/MM/YYYY')) tablespace tbs3,
PARTITION p4 VALUES LESS THAN(TO_DATE('01/01/2010','DD/MM/YYYY')) tablespace tbs4,
PARTITION p5 VALUES LESS THAN(maxvalue) tablespace tbs1
)
as select * from employees where rownum<1; 2 3 4 5 6 7 8 9
as select * from employees where rownum<1
*
ERROR at line 9:
ORA-28110: policy function or package HR.RLS_F has error
這個表中可能還有原來的函式
--檢查一下是否存在
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='FUNCTION' AND OBJECT_NAME ='RLS_F';
OBJECT_NAME
--------------------------------------------------------------------------------
RLS_F
--------------------------------------------------------------------------------
RLS_F
--重新編譯一下就可以了。
SQL> alter function HR.RLS_F compile;
Function altered.
最後一定記住把傳輸後的表空間置為read write.
最後一定記住把傳輸後的表空間置為read write.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28389881/viewspace-1267559/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle系統表空間過大問題處理Oracle
- MySQL 傳輸表空間MySql
- mysql之 表空間傳輸MySql
- 刪除UNDO表空間並處理ORA-01548問題
- 【XTTS】Oracle傳輸表空間xtts增量方式TTSOracle
- 對Oracle分割槽表進行表空間遷移並處理ORA-14511問題Oracle
- sysaux 表空間爆滿處理方法UX
- MySQL傳輸表空間的簡單使用方法MySql
- 18_深入解析Oracle undo原理(2)_undo表空間使用率100%問題處理Oracle
- oracle sysaux表空間滿了處理辦法OracleUX
- oracle中undo表空間丟失處理方法Oracle
- 用傳輸表空間跨平臺遷移資料
- UNDO表空間空間回收及切換
- 處理Linux刪除檔案後空間未釋放的問題Linux
- 表空間利用率及表空間的補充
- Oracle排程作業引起的空間驟增問題處理記錄Oracle
- interval 分割槽表clob預設表空間指定問題
- [20210528]oracle大表空間預分配問題.txtOracle
- 二、Git 問題彙總及處理Git
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 臨時表空間ORA-1652問題解決
- sqlldr標準輸出未處理導致批處理掛起問題SQL
- 16、表空間 建立表空間
- 關於丟失表空間資料檔案的處理方式
- vue使用的props元件傳值問題處理Vue元件
- Laravel 處理 MySQL geometry 空間型別LaravelMySql型別
- React TSLint中常見的問題及處理方法React
- 關於時間 PHP 處理包遇到的問題時間序列化差值問題PHP
- Jenkins臨時空間不足處理辦法Jenkins
- OGG相關的CPATURE導致SYSAUX表空間異常暴增處理UX
- Centos7 配置靜態ip及問題處理CentOS
- Docker使用Calico網路模式配置及問題處理Docker模式
- RDSforSQLserver空間問題排查彙總SQLServer
- Linux下處理時間同步相關問題彙總Linux
- SYSTEM 表空間管理及備份恢復
- golang json處理問題GolangJSON
- [git] git問題處理Git