資料泵報錯ORA-39149
在利用NETWORK_LINK方式匯出的時候,出現了這個錯誤。
詳細錯誤資訊如下:
bash-3.00$ expdp yangtk/yangtk directory=d_temp dumpfile=jiangsu.dp network_link=test113 logfile=jiangsu.log tables=cat_org
Export: Release 11.1.0.6.0 - 64bit Production on 星期二, 16 9月, 2008 17:08:22
Copyright (c) 2003, 2007, Oracle. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31631: 需要許可權
ORA-39149: 無法將授權使用者連結到非授權使用者
檢查Oracle的錯誤手冊:
ORA-39149: cannot link privileged user to non-privileged user
Cause: A Data Pump job initiated be a user with EXPORT_FULL_DATABASE/IMPORT_FULL_DATABASE roles specified a network link that did not correspond to a user with equivalent roles on the remote database.
Action: Specify a network link that maps users to identically privileged users in the remote database.
錯誤描述的比較清楚,不過這個錯誤很難理解,難道一個許可權大的使用者不能透過資料庫鏈匯出一個許可權小的使用者。
當然,瞭解了這個錯誤的原因,其實問題很容易解決。在本地建立一個新使用者,不要授權EXP_FULL_DATABASE/IMP_FULL_DATABASE角色,就可以匯出:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 9月 16 16:53:48 2008
Copyright (c) 1982, 2007, Oracle. All rights reserved.
連線到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> col grantee format a15
SQL> col granted_role format a15
SQL> select grantee, granted_role from dba_role_privs
2 where grantee = 'YANGTK';
GRANTEE GRANTED_ROLE
--------------- ---------------
YANGTK CONNECT
YANGTK RESOURCE
YANGTK DBA
SQL> drop user test cascade;
使用者已刪除。
SQL> create user test identified by test
2 default tablespace users
3 quota unlimited on users;
使用者已建立。
SQL> grant connect to test;
授權成功。
SQL> grant create table, create database link to test;
授權成功。
SQL> grant read, write on directory d_temp to test;
授權成功。
SQL> conn test/test
已連線。
SQL> create database link test113 connect to jiangsu identified by jiangsu
2 using '172.0.2.113/test';
資料庫連結已建立。
SQL> select * from global_name@test113;
GLOBAL_NAME
--------------------------------------------------------------------------------
TEST
SQL> exit
從 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
使用這個使用者就執行匯出了:
bash-3.00$ expdp yangtk/yangtk directory=d_temp dumpfile=jiangsu.dp network_link=test113 logfile=jiangsu.log tables=cat_org
Export: Release 11.1.0.6.0 - 64bit Production on 星期二, 16 9月, 2008 17:08:22
Copyright (c) 2003, 2007, Oracle. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31631: 需要許可權
ORA-39149: 無法將授權使用者連結到非授權使用者
bash-3.00$ expdp test/test directory=d_temp dumpfile=jiangsu.dp network_link=test113 logfile=jiangsu.log tables=cat_org
Export: Release 11.1.0.6.0 - 64bit Production on 星期二, 16 9月, 2008 17:09:10
Copyright (c) 2003, 2007, Oracle. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "TEST"."SYS_EXPORT_TABLE_01": test/******** directory=d_temp dumpfile=jiangsu.dp network_link=test113 logfile=jiangsu.log tables=cat_org
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 6 MB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 TABLE_EXPORT/TABLE/COMMENT
處理物件型別 TABLE_EXPORT/TABLE/TRIGGER
處理物件型別 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 匯出了 "JIANGSU"."CAT_ORG" 4.390 MB 31827 行
已成功載入/解除安裝了主表 "TEST"."SYS_EXPORT_TABLE_01"
******************************************************************************
TEST.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/data/jiangsu.dp
作業 "TEST"."SYS_EXPORT_TABLE_01" 已於 17:09:57 成功完成
如果可以修改遠端的使用者,那麼更簡單,只需要給遠端使用者授權EXP_FULL_DATABASE角色就可以了:
-bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on Tue Sep 16 17:16:27 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options
SQL> select global_name from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
TEST
SQL> grant exp_full_database to jiangsu;
Grant succeeded.
下面再次使用yangtk執行匯出:
bash-3.00$ expdp yangtk/yangtk directory=d_temp dumpfile=jiangsu1.dp network_link=test113 logfile=jiangsu.log tables=cat_org
Export: Release 11.1.0.6.0 - 64bit Production on 星期二, 16 9月, 2008 17:19:25
Copyright (c) 2003, 2007, Oracle. All rights reserved.
連線到: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
啟動 "YANGTK"."SYS_EXPORT_TABLE_01": yangtk/******** directory=d_temp dumpfile=jiangsu1.dp network_link=test113 logfile=jiangsu.log tables=cat_org
正在使用 BLOCKS 方法進行估計...
處理物件型別 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 6 MB
處理物件型別 TABLE_EXPORT/TABLE/TABLE
處理物件型別 TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/INDEX
處理物件型別 TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理物件型別 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理物件型別 TABLE_EXPORT/TABLE/COMMENT
處理物件型別 TABLE_EXPORT/TABLE/TRIGGER
處理物件型別 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 匯出了 "JIANGSU"."CAT_ORG" 4.390 MB 31827 行
已成功載入/解除安裝了主表 "YANGTK"."SYS_EXPORT_TABLE_01"
******************************************************************************
YANGTK.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/data/jiangsu1.dp
作業 "YANGTK"."SYS_EXPORT_TABLE_01" 已於 17:19:45 成功完成
問題倒是很容易解決,只是不理解Oracle為什麼處理不了這麼簡單的問題。而且關鍵的是,Oracle似乎沒有把這個問題當作bug。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-2145420/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料泵匯入分割槽表統計資訊報錯(七)
- 資料泵匯入分割槽表統計資訊報錯(二)
- 資料泵匯入分割槽表統計資訊報錯(四)
- 資料泵匯入分割槽表統計資訊報錯(三)
- 資料泵匯入分割槽表統計資訊報錯(六)
- 資料泵匯入分割槽表統計資訊報錯(五)
- 資料泵匯出資料包錯處理
- 轉oracle資料泵匯出時報錯Oracle
- 資料泵
- 資料泵報錯ora-39002 ora-39070 ora-39087
- 一次oracle 11g 資料泵 報錯 的解決過程Oracle
- 資料泵匯出時報錯ORA-1422錯誤
- ORACLE 資料泵Oracle
- oracle資料泵Oracle
- ORACLE 資料泵impdp匯入報錯之ORA-31693 ORA-04098Oracle
- 資料泵匯出出現ORA-4030錯誤
- 殺停資料泵
- oracle 資料泵解析Oracle
- 資料泵的使用
- 資料泵 impdp 操作
- 資料泵檔案
- 資料泵小bug
- oracle之資料泵Oracle
- 資料泵引數檔案用於執行資料泵命令
- 資料泵匯出出現ORA-31617錯誤
- 資料庫升級之-資料泵資料庫
- 使用資料泵impdp匯入資料
- 資料泵造成的資料損失
- Impdp資料泵匯入
- Oracle 資料泵的使用Oracle
- oracle 資料泵引數Oracle
- 資料泵用法筆記筆記
- 資料泵匯出出現ORA-31623錯誤
- oracle之 資料泵dump檔案存放nfs報ORA-27054OracleNFS
- 資料庫升級報錯資料庫
- 資料泵重建使用者
- 資料泵匯出匯入
- 正確停止資料泵程式