Oracle-11g-R2

想要從 DB 連結中刪除 global_name (Oracle 11g)

  • September 24, 2015

我正在嘗試通過呼叫遠端功能DB LINKS

但是,我的全域名稱包含字元串ON,我相信它會導致錯誤。

我的錯誤是……

SQL> var tmp varchar2(2);
SQL> execute :tmp := IF_TRX_SKY.CREATEWITH@SKYLBS_LINK2.I-ON.NET('a', 1, 2, 't', 't', 'k', 'm', 'r', 'u', 's', 's', 't', 'k', '00', sysdate, 1);
BEGIN :tmp := IF_TRX_SKY.CREATEWITH@SKYLBS_LINK2.I-ON.NET('a', 1, 2, 't', 't', 'k', 'm', 'r', 'u', 's', 's', 't', 'k', '00', sysdate, 1); END;

                                                  *
ERROR at line 1:
ORA-06550: line 1, column 52:
PLS-00103: Encountered the symbol "ON" when expecting one of the following:
( - + case mod new null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue avg count current max min prior sql stddev sum
variance execute forall merge time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string> pipe
<an alternatively-quoted string literal with character set specification>
<an alternatively-quoted SQ

我假設如果我刪除.I-ON.NET了一部分,它會起作用。

我怎樣才能刪除/逃避這個?Oracle 文件說明GLOBAL_NAME了複製所需的內容。那麼如何在不刪除的情況下呼叫這個遠端函式GLOBAL_NAME呢?

這是我要創建的創建語句DB LINKS

SQL> CREATE PUBLIC DATABASE LINK SKYLBS_LINK2                     
 2  CONNECT TO ICE
 3  IDENTIFIED BY ICE1234
 4  USING 'ORCL';

Database link created.

這就是我所擁有的

NAME                             TYPE        VALUE                 
---------------------------- ----------- ----------------
global_names                    boolean      FALSE

僅供參考,我無法更改配置文件或重新啟動數據庫,因為我沒有權限。

概括:

  • 如何刪除GLOBAL_NAMEDB LINKS從未在我的創建語句中寫過的內容。
  • 如何執行包含禁止字元串的遠端功能

從 DB_LINKS 中刪除 DB_DOMAIN。

ALTER SYSTEM SET global_names = false SCOPE = SPFILE;
ALTER SYSTEM SET db_domain = '' SCOPE = SPFILE;
UPDATE GLOBAL_NAME SET GLOBAL_NAME = [Name without db_domain];

然後重新啟動,DB 和 Listener。

但是,我仍然不知道如何將它與域一起使用。

引用自:https://dba.stackexchange.com/questions/115993