去掉DB_DOMAIN的方法
今天下午比較鬱悶,折騰了一個下午,就是因為GLOBAL_NAME的問題。
Oracle的GLOBAL_NAME由兩個部分組成:DB_NAME和DB_DOMAIN。如果在建立資料庫的時候不指定DB_DOMAIN的值,則GLOBAL_NAME和DB_NAME的值一樣。
Oracle有一個從來沒有解決的問題,就是DB_DOMAIN一旦加上,就再也去不掉了。
不管是設定透過DB_DOMAIN的方式,還是透過ALTER DATABASE RENAME GLOBAL_NAME TO的方式。一旦GLOBAL_NAME包含了DB_DOMAIN部分。就再也無法去掉了。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
-------------------------------------------------------------------------
YTK
SQL> SHOW PARAMETER DB_DOMAIN
NAME TYPE VALUE
------------------------------------ ----------- ------------------------
db_domain string
SQL> ALTER DATABASE RENAME GLOBAL_NAME TO YTK.YANGTINGKUN;
資料庫已更改。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
-------------------------------------------------------------------------
YTK.YANGTINGKUN
SQL> ALTER DATABASE RENAME GLOBAL_NAME TO YTK;
資料庫已更改。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
-------------------------------------------------------------------------
YTK.YANGTINGKUN
而且這個問題還可能造成以前建立的資料庫鏈不可用的情況。這還不是最鬱悶的,當配置高階複製等環境時,需要將GLOBAL_NAMES引數設定為TRUE,因此如果主站點本身不帶DB_DOMAIN,則帶DB_DOMAIN的資料庫無法加入到這個複製環境中。
因為,這個時候,新增任何不帶DOMAIN的資料庫鏈,Oracle都會自動將本機的DOMAIN加上。
SQL> CREATE DATABASE LINK TESTDATA;
資料庫連結已建立。
SQL> SELECT DB_LINK FROM USER_DB_LINKS;
DB_LINK
----------------------------------------
TESTDATA.YANGTINGKUN
這就要求複製環境中不要出現不同配置的資料庫。要不然全部環境都不帶DB_DOMAIN,要不然全部環境都帶DB_DOMAIN。否則就很容易出現這個問題。
說了半天,這個DB_DOMAIN到底如何才能去掉呢。沒有常規的方法,唯一的方法是修改資料字典。
下面的方法只是實在沒有辦法的時候才使用,個人並不推薦使用這個方式。
SQL> CONN /@YTK AS SYSDBA已連線。
SQL> UPDATE SYS.PROPS$ SET VALUE$ = 'YTK' WHERE NAME = 'GLOBAL_DB_NAME';
已更新 1 行。
SQL> SELECT * FROM GLOBAL_NAME;
GLOBAL_NAME
----------------------------------------------------------------------------
YTK
SQL> COMMIT;
提交完成。
雖然透過SQL_TRACE可以看到,Oracle實際上就是這些了這個操作,不過仍然不推薦採用直接修改資料字典的方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-69235/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【轉載】去掉DB_DOMAIN的方法AI
- 去掉Excel小數點的方法Excel
- 去掉ul li 的自定義格式的方法 的方法
- php數字去掉逗號的方法PHP
- DB_DOMAIN Initialization Parameter (88)AI
- 去掉forum.php最有效方法PHP
- 詳解BOM頭以及去掉BOM頭的方法
- Oracle(b_name,db_unique_name, servie_names,db_domain修改方法)OracleAI
- Oracle修改(db_name,db_unique_name, servie_names,db_domain)方法OracleAI
- 去掉Foxmail啟動畫面的方法(轉)AI動畫
- Python中去掉字串中空格的方法有哪些?Python字串
- android應用中去掉標題欄的方法Android
- Java String 去掉特殊字元之前的內容方法Java字元
- windows10怎麼去掉小箭頭_win10電腦去掉快捷箭頭的方法WindowsWin10
- SpingMVC框架中去掉List中重複bean的方法MVC框架Bean
- Laravel 5中去掉URL中的public路徑方法Laravel
- Excel表格底色怎麼去掉?去除Excel表格底色的方法Excel
- oracle 跳脫字元去掉下劃線 _ 的使用方法Oracle字元
- oracle 轉義字元去掉下劃線 _ 的使用方法Oracle字元
- android全屏去掉title欄的多種實現方法Android
- 2.6.2.2 初始化引數DB_DOMAINAI
- win10 如何去掉待機螢幕 win10去掉待機螢幕方法Win10
- 使用SQL語句去掉重複記錄的兩種方法SQL
- 加入了trim()方法,沒有去掉多餘空格
- 轉:複製CSDN的BLOG程式碼,去掉前面行號的方法
- 怎樣把win10右下角教育版去掉_win10把右下角教育版去掉的方法Win10
- win10 去掉快捷方式的箭頭方法 win10怎麼去掉快捷方式圖示箭頭Win10
- 去掉windows下的^MWindows
- db_name,db_domain, global_name, service_name的區別AI
- 原生JS去重(一)--兩種方法去掉重複字元JS字元
- 去掉UIPickerView的彎曲弧度UIView
- win10系統去掉動態磁貼瀏覽記錄的方法Win10
- 易優CMS寶塔環境教你去掉URL中index.php的方法IndexPHP
- Win10系統下去掉工作列有問題儘管問我的方法Win10
- 去掉時間字串的時分秒字串
- 去掉input number的上下箭頭
- CSS去掉圖片底部的空白CSS
- js去掉字串兩邊的空格JS字串