Oracle 10g 多執行個體配置一例

來源:互聯網
上載者:User

標籤:oracle   多執行個體   

背景: 一次甲方組織的部署方案討論會上,各開發商都提出了自己的伺服器要求,甲方只給一台資料庫先臨時過渡使用,要求整合幾家應用oracle資料庫; 我公司做為技術整合方雖然提出各種建議,最終無果,於是提出兩種方案:  
第一種:一個oracle資料庫執行個體中多方案(使用者)方式部署,一個應用程式指派一個資料庫帳號(使用者)。    
第二種:一個是採用多執行個體方式部署,一個應用一個單獨執行個體。

兩種方案各有利弊;因各開發商都說自己資料敏感,於是提出選擇了多執行個體部署的方案,多執行個體的方式就是在一個oracle資料庫伺服器建立多個資料庫執行個體,同時運行,應用程式資料庫層面互不干擾。 多執行個體建立方式很多種,這裡以兩個執行個體為例:

(1) 一個資料庫執行個體建立好後,再直接採用DBCA建立另一個執行個體,適合全新安裝,比較方便快速。  
(2) 通過現有一個執行個體資料庫複製一個資料庫執行個體。    
(3) 通過rman備份恢複在本機恢複一個資料庫執行個體。

安裝多執行個體需要注意的問題,記憶體佔用量大,兩個資料庫執行個體都要各自分配SGA,PGA等記憶體,對兩個執行個體記憶體的分配注意控制,以免過多分配記憶體對主機系統造成影響。  
本文第二種方式部署多執行個體,僅只做安裝測試,對於sga記憶體配置等內容本例忽略掉了, 通過本文對資料庫的物理結構進行了一次複習,該方式對11g for linux版本一樣適用。

1. 資料庫環境(1) 現在一個資料庫情況

作業系統版本  : OEL5.8 x64  
資料庫版本    : Oracle 10.2.0.5 x64    
資料庫名      : orcl    
資料庫SID     : orcl    
執行個體名        : orcl    
資料庫檔案路徑: /u01/app/oracle/oradata/orcl/

(2) 待複製的資料庫

資料庫名      : abc  
資料庫SID     : abc    
執行個體名        : abc    
資料庫檔案路徑: /u01/app/oracle/oradata/abc/    
說明:兩個資料庫執行個體採用不同目錄結構與資料庫名稱。

 

2. 準備abc執行個體的目錄結構

# su - oracle  
$ mkdir -p /u01/app/oracle/admin/abc/{adump,bdump,cdump,dpdump,udump,pfile} 
$ mkdir -p /u01/app/oracle/oradata/abc/

 

3. 準備abc執行個體的參數檔案

通過現有orcl執行個體的參數檔案進行修改。

$ sqlplus /nolog  
SQL> conn / as sysdba;    
SQL> create pfile from spfile;    
SQL> host cp $ORACLE_HOME/dbs/initorcl.ora $ORACLE_HOME/dbs/initabc.ora    
SQL> host vi $ORACLE_HOME/dbs/initabc.ora

#將orcl改為abc執行個體,注意路徑是否正確。 abc.__db_cache_size=293601280 abc.__java_pool_size=4194304 abc.__large_pool_size=4194304 abc.__shared_pool_size=117440512 abc.__streams_pool_size=0 *.audit_file_dest=‘/u01/app/oracle/admin/abc/adump‘ *.background_dump_dest=‘/u01/app/oracle/admin/abc/bdump‘ *.compatible=‘10.2.0.5.0‘ *.control_files=‘/u01/app/oracle/oradata/abc/control01.ctl‘,‘/u01/app/oracle/oradata/abc/control02.ctl‘,‘/u01/app/oracle/oradata/abc /control03.ctl‘ *.core_dump_dest=‘/u01/app/oracle/admin/abc/cdump‘ *.db_block_size=8192 *.db_domain=‘‘ *.db_file_multiblock_read_count=16 *.db_name=‘abc‘ *.db_recovery_file_dest=‘/u01/app/oracle/flash_recovery_area‘ *.db_recovery_file_dest_size=2147483648 *.dispatchers=‘(PROTOCOL=TCP) (SERVICE=abcXDB)‘ *.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=141557760 *.processes=150 *.remote_login_passwordfile=‘EXCLUSIVE‘ *.sga_target=425721856 *.undo_management=‘AUTO‘ *.undo_tablespace=‘UNDOTBS1‘ *.user_dump_dest=‘/u01/app/oracle/admin/abc/udump‘

 

4. 建立控制檔案SQL語句

由於控制檔案中包括資料庫檔案位置,執行個體名等資料,需要重新根據新的執行個體名與資料檔案及檔案路徑建立控制檔案。  
根據control檔案追蹤檔案建立控制檔案。

SQL> alter database backup controlfile to trace;  
# 查看剛才建立的跟綜檔案的檔案名稱:    
SQL> oradebug setmypid    
SQL> oradebug tracefile_name    
/u01/app/oracle/admin/orcl/udump/orcl_ora_4044.trc

SQL> ! cat /u01/app/oracle/admin/orcl/udump/orcl_ora_4044.trc

# 按如下格式,如果有其它資料檔案,可以按此格式加入。
CREATE CONTROLFILE set DATABASE "ABC" RESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ‘/u01/app/oracle/oradata/abc/redo01.log‘ SIZE 50M,
GROUP 2 ‘/u01/app/oracle/oradata/abc/redo02.log‘ SIZE 50M,
GROUP 3 ‘/u01/app/oracle/oradata/abc/redo03.log‘ SIZE 50M
-- STANDBY LOGFILE
DATAFILE
‘/u01/app/oracle/oradata/abc/system01.dbf‘,
‘/u01/app/oracle/oradata/abc/undotbs01.dbf‘,
‘/u01/app/oracle/oradata/abc/sysaux01.dbf‘,
‘/u01/app/oracle/oradata/abc/users01.dbf‘
CHARACTER SET ZHS16GBK
;

 

5. 建立密碼檔案

$ orapwd file=$ORACLE_HOME/dbs/orapwabc password=oracle entries=10

 

6. 多執行個體監聽與服務名配置(1) 添加靜態監聽配置,實現單IP,多執行個體

$ vi $ORACLE_HOME/network/admin/listener.ora  
SID_LIST_LISTENER =    
  (SID_LIST =    
    (SID_DESC =    
      (SID_NAME = PLSExtProc)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (PROGRAM = extproc)    
    )    
    (SID_DESC =    
      (SID_NAME = orcl)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (SID_NAME = orcl)    
    )    
    (SID_DESC =    
      (SID_NAME = abc)    
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)    
      (SID_NAME = abc)    
    )    
  )

LISTENER =  
  (DESCRIPTION_LIST =    
    (DESCRIPTION =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))    
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    
    )    
  )

(2) 命令服務配置

$ vi $ORACLE_HOME/network/admin/tnsnames.ora  
ABC =    
  (DESCRIPTION =    
    (ADDRESS_LIST =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))    
    )    
    (CONNECT_DATA =    
      (SID = abc)    
      (SERVICE = DEDICATED)    
    )    
  )

ORCL =  
  (DESCRIPTION =    
    (ADDRESS_LIST =    
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.233.150)(PORT = 1521))    
    )    
    (CONNECT_DATA =    
      (SID = orcl)    
      (SERVICE = DEDICATED)    
    )    
  )

EXTPROC_CONNECTION_DATA =  
  (DESCRIPTION =    
    (ADDRESS_LIST =    
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))    
    )    
    (CONNECT_DATA =    
      (SID = PLSExtProc)    
      (PRESENTATION = RO)    
    )    
  )

$ lsnrctl stop  
$ lsnrctl start

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 14-11014 22:07:31

Copyright (c) 1991, 2010, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.5.0 - Production  
System parameter file is /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora    
Log messages written to /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log    
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))    
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521)))  
STATUS of the LISTENER    
------------------------    
Alias                     LISTENER    
Version                   TNSLSNR for Linux: Version 10.2.0.5.0 - Production    
Start Date                14-11014 22:07:31    
Uptime                    0 days 0 hr. 0 min. 0 sec    
Trace Level               off    
Security                  ON: Local OS Authentication    
SNMP                      OFF    
Listener Parameter File   /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora    
Listener Log File         /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log    
Listening Endpoints Summary...    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1)(PORT=1521)))    
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))    
Services Summary...    
Service "PLSExtProc" has 1 instance(s).    
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...    
Service "abc" has 1 instance(s).    
  Instance "abc", status UNKNOWN, has 1 handler(s) for this service...    
Service "orcl" has 1 instance(s).    
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...    
The command completed successfully

 

7. 拷貝orcl執行個體的資料檔案(1) 資料庫必須在一致性狀態下進行拷貝,需要關閉orcl資料庫執行個體。

$ sqlplus / as sysdba;  
SQL> shutdown immediate;    
SQL> quit

(2) 拷貝orcl執行個體的所有資料檔案

$ cp /u01/app/oracle/oradata/orcl/*.dbf /u01/app/oracle/oradata/abc/  
$ ll /u01/app/oracle/oradata/abc/    
total 738672    
-rw-r----- 1 oracle oinstall 262152192 Nov 14 22:12 sysaux01.dbf    
-rw-r----- 1 oracle oinstall 461381632 Nov 14 22:12 system01.dbf    
-rw-r----- 1 oracle oinstall  20979712 Nov 14 22:12 temp01.dbf    
-rw-r----- 1 oracle oinstall  26222592 Nov 14 22:12 undotbs01.dbf    
-rw-r----- 1 oracle oinstall   5251072 Nov 14 22:12 users01.dbf    
$

 

8. 正啟開始建立abc執行個體(1) 通過abc SID啟動資料庫

[[email protected] ~]$ export ORACLE_SID=abc  
[[email protected] ~]$ sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.5.0 - Production on 14 22:18:52 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Connected to an idle instance.

SQL>

(2) 啟動abc執行個體到nomount狀態

因為有abc執行個體的pfile參數檔案,可以將資料庫啟動到nomount狀態.

SQL> startup nomount;  
ORACLE instance started.

Total System Global Area  427819008 bytes  
Fixed Size                  2096792 bytes    
Variable Size             125829480 bytes    
Database Buffers          293601280 bytes    
Redo Buffers                6291456 bytes    
SQL>

(3) 在nomount狀態下建立產生控制檔案,手動複製粘貼上面建立的產生控制檔案語句。

SQL> CREATE CONTROLFILE set DATABASE "ABC" RESETLOGS NOARCHIVELOG  
    MAXLOGFILES 16    
    MAXLOGMEMBERS 3    
    MAXDATAFILES 100    
    MAXINSTANCES 8    
    MAXLOGHISTORY 292    
LOGFILE    
  GROUP 1 ‘/u01/app/oracle/oradata/abc/redo01.log‘  SIZE 50M,    
  GROUP 2 ‘/u01/app/oracle/oradata/abc/redo02.log‘  SIZE 50M,    
  GROUP 3 ‘/u01/app/oracle/oradata/abc/redo03.log‘  SIZE 50M    
-- STANDBY LOGFILE    
DATAFILE    
  ‘/u01/app/oracle/oradata/abc/system01.dbf‘,    
  ‘/u01/app/oracle/oradata/abc/undotbs01.dbf‘,    
  ‘/u01/app/oracle/oradata/abc/sysaux01.dbf‘,    
  ‘/u01/app/oracle/oradata/abc/users01.dbf‘    
CHARACTER SET ZHS16GBK    
18  ;

Control file created.

SQL>    
SQL>

(4) resetlogs啟動資料庫

resetlogs啟動資料庫同時重建建立redo記錄檔。

SQL> alter database open resetlogs;

Database altered.

(5) 通過abc執行個體的pfile檔案建立spfile檔案

SQL> create spfile from pfile;

(6) 添加一個臨時資料檔案

SQL> alter tablespace temp add tempfile ‘/u01/app/oracle/oradata/abc/temp01.dbf‘

 

9. 更改Oracle資料庫DBID(1)在nid之前必須要shutdown immediate一次再mount狀態;

SQL> shutdown immediate;  
SQL> startup mount;    
SQL> quit

(2) nid修改資料庫名

[[email protected] ~]$ nid target=sys

DBNEWID: Release 10.2.0.5.0 - Production on 14 22:46:50 2014

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

Password:    
Connected to database ABC (DBID=1390560469)

Connected to server version 10.2.0

Control Files in database:  
    /u01/app/oracle/oradata/abc/control01.ctl    
    /u01/app/oracle/oradata/abc/control02.ctl    
    /u01/app/oracle/oradata/abc/control03.ctl

Change database ID of database ABC? (Y/[N]) => y

Proceeding with operation  
Changing database ID from 1390560469 to 1819805470    
    Control File /u01/app/oracle/oradata/abc/control01.ctl - modified    
    Control File /u01/app/oracle/oradata/abc/control02.ctl - modified    
    Control File /u01/app/oracle/oradata/abc/control03.ctl - modified    
    Datafile /u01/app/oracle/oradata/abc/system01.dbf - dbid changed    
    Datafile /u01/app/oracle/oradata/abc/undotbs01.dbf - dbid changed    
    Datafile /u01/app/oracle/oradata/abc/sysaux01.dbf - dbid changed    
    Datafile /u01/app/oracle/oradata/abc/users01.dbf - dbid changed    
    Datafile /u01/app/oracle/oradata/abc/temp01.dbf - dbid changed    
    Control File /u01/app/oracle/oradata/abc/control01.ctl - dbid changed    
    Control File /u01/app/oracle/oradata/abc/control02.ctl - dbid changed    
    Control File /u01/app/oracle/oradata/abc/control03.ctl - dbid changed    
Instance shut down

(3) 驗證資料庫名修改,最終修改成功。

$ sqlplus /nolog  
SQL> conn / as sysdba;    
SQL> startup mount;    
SQL> alter database open resetlogs;    
SQL> select dbid,name from v$database;

      DBID NAME     
---------- ---------    
1819805470 ABC      

SQL>

 

10. 配置執行個體開機自啟動(1) 配置oracle開機啟動,加入abc執行個體自啟動開關項

# vi /etc/oratab    
orcl:/u01/app/oracle/product/10.2.0/db_1:Y    
abc:/u01/app/oracle/product/10.2.0/db_1:Y

 

(2) 設定開機啟動

# vi /etc/rc.local    
#!/bin/sh    
su - oracle -c "lsnrctl start"    
su - oracle -c "dbstart"

 

(3) 登入到資料庫伺服器上手動的啟動與關閉資料庫執行個體方法

進入orcl執行個體的方法;  
$ export ORACLE_SID=orcl    
$ sqlplus /nolog    
SQL> conn /as sysdba    
SQL> startup;

進入abc執行個體的方法;  
$ export ORACLE_SID=abc    
$ sqlplus /nolog    
SQL> conn /as sysdba    
SQL> startup

本文出自 “koumm的linux技術部落格” 部落格,請務必保留此出處http://koumm.blog.51cto.com/703525/1576685

Oracle 10g 多執行個體配置一例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.