CUUG 筆記ORACLE db_name instance_name gobal_name service_name db_unique_name分析

murkey發表於2013-12-29


一個資料庫和相應的一些名字
oracle相關名字
db_name
db_unique_name
global_name
instance_name
service_name






DB_NAME:建立時候指定,記錄在控制檔案中,不容易修改,如果修改需要重建控制檔案


如何修改資料庫的名字
1、重新獲得重建控制檔案的語句
alter database backup controlfile to trace;
需要利用resetlog的選項像
2、修改名字


CREATE CONTROLFILE REUSE set DATABASE "ORCL123" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'C:\APP\YANWEI\ORADATA\ORCL\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 'C:\APP\YANWEI\ORADATA\ORCL\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 'C:\APP\YANWEI\ORADATA\ORCL\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  'C:\APP\YANWEI\ORADATA\ORCL\SYSTEM01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\SYSAUX01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\UNDOTBS01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\USERS01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\EXAMPLE01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\FDA01.DBF',
  'C:\APP\YANWEI\ORADATA\ORCL\FDA02.DBF'
CHARACTER SET ZHS16GBK


3.正常關閉啟動nomount


4.需要修改初始化引數檔案


============================================================================
db_unique_name


,用在DG。配置DG,設定別名,一般和資料庫名字一致的
修改了之後,service_name就會跟著改變




service_name:oracle監聽對外提供的名字
這個也可以單獨修改;


檢視監聽的時候service也跟著改變;準確來說是多一個service來監聽修改了service_name,之前例項監聽的還存在,名字和db_unique_name一致


========================================================================


instance_name
export ORACLE_SID=orcl2
重啟DB之後就發現修改成功
檢視監聽就發現例項名字也修改了。程式名字也修改了


也可以修改初始化引數的名字來修改例項名


===============================================================




global_name:
當GLOBAL_NAMES引數設定為TRUE時,使用DATABASE LINK時,DATABASE LINK的名稱必須與被連線庫的GLOBAL_NAME一致。


1、更改global_names 為true;
        SQL> alter system set global_names=true;--慎重
2、檢視global_names屬性
SQL> show parameter global_name;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
global_names                         boolean     FALSE
3、修改global_name
SQL> conn sys/sys as sysdba
已連線。
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
ORCL.US.ORACLE.COM
SQL> update props$ set value$ = 'orcl' where name = 'GLOBAL_DB_NAME';
已更新 1 行。
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
orcl


create database link test_link connect to test identified by test using 'DMDB';  DMDB為TNSname設定


可以看到,連結仍然可以用。如果在DMDB庫上建立連結到XJ庫上,可以觀察到同樣的結果。可以得出一個結論:global_names引數設定為FALSE,影響的是建立資料庫連結的那個庫對資料庫連結的使用。也就是說,如果一個庫(例項)的global_names引數設值為TRUE,則該庫連線其他庫的資料庫連結,其名稱必須要與被連線的庫的global_name相同:


如果在GLOBAL_NAMES設定為TRUE的情況下,如果要建多個資料庫連結到同一個庫,怎麼辦呢?因為資料庫連結的名稱必須與目標庫的GLOBAL_NAME相同。可以按如下的方法:


以下是程式碼片段:


SQL> create database linkdmdb@link1connect to test identified by test using 'dmdb'; 
資料庫連結已建立。 
SQL> create database linkdmdb@link2connect to test identified by test using 'dmdb'; 
資料庫連結已建立。 
SQL> select * fromdual@dmdb ; 



SQL> select * fromdual@dmdb@link1 ; 



SQL> select * fromdual@dmdb@link2 ; 


X
 


  也就是在GLOBAL_NAME後面加上@再加上一個標識。這樣就能夠建立多個資料庫連結到同一目標庫上了。


http://www.cnblogs.com/songdavid/articles/2166988.html






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/500314/viewspace-1065334/,如需轉載,請註明出處,否則將追究法律責任。

相關文章