oracle DG模式搭建詳解

oracle DG搭建

安裝環境

    在主機1上安裝數據庫軟件,並建監聽和實例,在主機2上安裝數據庫軟件,並建監聽,但不建實例,dg搭建之後數據會同步過去。

 

 數據庫參數優化(也可在spfile文件統一修改)

注:scope=spfile表示更改spfile文件的值,重啓數據庫後才能生效

sga,pga配置

sga:(內存大小*80%)*80% = 128G * 80% * 80% = 82G;

pga:(內存大小*80%)*20% = 128G * 80% * 80% = 20G;

alter system set sga_max_size=82000m scope=spfile;

alter system set sga_target=82000m scope=spfile;

alter system set pga_aggregate_target=20000m scope=spfile;

JOB_QUEUE_PROCESSES參數

JOB_QUEUE_PROCESSES參數是job的進程個數,默認是0;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=20;

共享池大小

Shared pool是SGA中最關鍵的內存片段,共享池主要由庫緩存(共享SQL區和PL/SQL區)和數據字典緩存組成。其中庫緩存的作用是存放頻繁使用的sql,pl/sql代碼以及執行計劃。數據字段緩存用於緩存數據字典。在內存空間有限的容量下,數據庫系統根據一定的算法決定何時釋放共享池中的sql,pl/sql代碼以及數據字典信息。所以shared_pool_size不能太小,否則執行效率會很低。

alter system set shared_pool_size=15000m scope = spfile;

 數據庫最大連接數

數據庫的最大可支持的連接數,根據公司邏輯庫的實際情況1500足夠了

alter system set processes=1500 scope = spfile;

 數據文件個數

db_files參數限制了數據庫數據文件總的個數,datafiles數目達到db_files指定後數據庫不能添加新的數據文件

alter system set db_files=1000 scope=spfile;

 遊標參數

OPEN_CURSORS 指定一個會話一次最多可以擁有的遊標數,不夠無法使用遊標,過大不會增加系統開銷

alter system set open_cursors=2000 scope=both;

alter system set session_cached_cursors=500 scope=spfile;

默認密碼期限

Oracle數據庫密碼期限是180,把它改成無限制

ALTER  PROFILE  DEFAULT  LIMIT  PASSWORD_LIFE_TIME  UNLIMITED;

 數據庫連接超時時間

默認是60秒,60秒沒連接,會報錯,把它設置成0

LSNRCTL> set inbound_connect_timeout 0

LSNRCTL> set save_config_on_stop on 生效

關閉審計

oracle 11g推出了審計功能,這個功能會針對很多操作都產生審計文件.aud,日積月累下來這些文件也很多,考慮到實際情況,將審計功能關閉

alter system set audit_trail=none scope = spfile;

重啓數據庫

上述修改都需重啓數據庫生效

SQL>shutdown immediate

SQL>startup;

主數據庫配置(192.168.8.173)

 開啓歸檔與強制LOGGING

Oracle dg模式需要保證主從庫一致,需要傳輸archive log和redo log到從庫,如果不是歸檔模式無法保證主從庫的數據一致。

SQL> select log_mode,force_logging from v$database;

 LOG_MODE     FOR 

 ------------     --- 

 ARCHIVELOG     NO 

SQL> ALTER DATABASE FORCE LOGGING; 

 創建redo和standy redo日誌

    根據公司平臺情況創建6個redo日誌組,每個大小1G,創建standby日誌組的個數是原日誌組個數+1再與thread的積,size不能小於原日誌文件的大小,所以這裏創建7個standby redo。

redo log創建和刪除

1:select * from v$log; 查看redo日誌狀態

2:alter system switch logfile; 將當前redo日誌切到下一個執行

3:alter database add logfile group 6 ('/oracle/oradata/dbxxx/redo06.log') size 1024m reuse;

添加新的redo日誌

4: alter database drop logfile group 1; 刪除redo日誌組(慎用)

standby redo log 的創建只是在logfile前加一個standby

    1.alter database add standby logfile group 7('/oracle/oradata/dbxxx/standyredo01.log') size 1024m reuse;

創建主庫密碼文件

Data Guard 配置中所有數據庫必須都擁有獨立的密碼文件,並且必須保證同一個 Data Guard 配置中所有數據庫服務器的 SYS 用戶擁有相同密碼以保證redo 數據的順利傳輸,因爲 redo 傳輸服務通過認證的網絡會話來傳輸redo 數據,而會話使用包含在密碼文件中的SYS 用戶密碼來認證。

orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=xxxx entries=1 force=y

SPFILE文件配置(128G內存數據庫)

注:數據庫啓動時加載spfile文件,需對參數進行調整,以及主備配置

SQL> create pfile='/oracle/product/11.2/dbs/initdbxxx.ora' from spfile;

vi /oracle/product/11.2/dbs/initdbxxx.ora

dbxxx.__db_cache_size=66035122176

dbxxx.__java_pool_size=536870912

dbxxx.__large_pool_size=536870912

dbxxx.__oracle_base='/oracle'#ORACLE_BASE set from environment

dbxxx.__pga_aggregate_target=21474836480

dbxxx.__sga_target=83751862272

dbxxx.__shared_io_pool_size=0

dbxxx.__shared_pool_size=15569256448

dbxxx.__streams_pool_size=536870912

*.audit_file_dest='/oracle/admin/dbxxx/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/oracle/oradata/dbxxx/control01.ctl','/oracle/flash_recovery_area/dbxxx/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_files=1000

*.db_name='dbxxx'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=20971520000

*.DB_UNIQUE_NAME='dbxxxpr'    *.diagnostic_dest='/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbxxxXDB)'

*.FAL_CLIENT='dbxxxpr'  

*.FAL_SERVER='dbxxxdg'  

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbxxxpr,dbxxxdg)'

*.log_archive_dest_1='location=/oracle/oradata/dbxxx/archivelog'

*.log_archive_dest_2='SERVICE=dbxxxdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbxxxdg'   

*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'    

*.LOG_ARCHIVE_FORMAT='log%t_%s_%r.arc'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=1000

*.pga_aggregate_target=20971520000

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.session_cached_cursors=500

*.sessions=1655

*.sga_target=83751862272

*.STANDBY_FILE_MANAGEMENT='AUTO'

*.undo_tablespace='UNDOTBS1'

SPFILE文件替換

spfiledbxxx.ora複製initdbxxx.ora

rm $ORACLE_HOME/dbs/spfiledbxxx.ora

SQL> create spfile from pfile='/oracle/product/11.2.0/dbs/initdbxxx.ora';

tns文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

dbxxxpr =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = server173)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dbxxx)

    )

  )

 

dbxxxdg =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.174)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dbxxx)  

    )

  )

 

listener文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = server173)(PORT = 1521))

    )

  )

ADR_BASE_LISTENER = /oracle

SAVE_CONFIG_ON_STOP_LISTENER = ON

INBOUND_CONNECT_TIMEOUT_LISTENER = 0

 

備數據庫配置(192.168.8.174)

文件複製

將主數據庫/oracle/product/10.2/network/admin下的網絡配置文件(tnsnames.ora,listener.ora),和/oracle/product/10.2/dbs下的密碼文件orapwdbxxx和initdbxxx.ora拷貝scp到備數據庫相同目錄下,scp不行的話用sz下載,rz上傳。

initdbxxx.ora參數配置

注:主備切換對應的名稱正好相反,其他配置一樣

修改initdbxxx.ora文件:

dbxxx.__db_cache_size=66035122176

dbxxx.__java_pool_size=536870912

dbxxx.__large_pool_size=536870912

dbxxx.__oracle_base='/oracle'#ORACLE_BASE set from environment

dbxxx.__pga_aggregate_target=21474836480

dbxxx.__sga_target=83751862272

dbxxx.__shared_io_pool_size=0

dbxxx.__shared_pool_size=15569256448

dbxxx.__streams_pool_size=536870912

*.audit_file_dest='/oracle/admin/dbxxx/adump'

*.audit_trail='db'

*.compatible='11.2.0.0.0'

*.control_files='/oracle/oradata/dbxxx/control01.ctl','/oracle/flash_recovery_area/dbxxx/control02.ctl'

*.db_block_size=8192

*.db_domain=''

*.db_files=1000

*.db_name='dbxxx'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=20971520000

*.DB_UNIQUE_NAME='dbxxxdg'

*.diagnostic_dest='/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbxxxXDB)'

*.FAL_CLIENT='dbxxxdg'

*.FAL_SERVER='dbxxxpr'

*.local_listener='for_db'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dbxxxpr,dbxxxdg)'

*.log_archive_dest_1='location=/oracle/oradata/dbxxx/archivelog'

*.log_archive_dest_2='SERVICE=dbxxxpr LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dbxxxpr'

*.LOG_ARCHIVE_DEST_STATE_2='ENABLE'

*.LOG_ARCHIVE_FORMAT='log%t_%s_%r.arc'

*.nls_language='SIMPLIFIED CHINESE'

*.nls_territory='CHINA'

*.open_cursors=1000

*.pga_aggregate_target=20971520000

*.processes=1500

*.remote_login_passwordfile='EXCLUSIVE'

*.session_cached_cursors=500

*.sessions=1655

*.sga_target=83751862272

*.STANDBY_FILE_MANAGEMENT='AUTO'

*.undo_tablespace='UNDOTBS1'


創建相關目錄

mkdir -p /oracle/fast_recovery_area/dbxxx

mkdir -p /oracle/admin/dbxxx

cd /oracle/admin/dbxxx

mkdir -p adump  dpdump  pfile

mkdir -p /oracle/oradata/dbxxx/

mkdir -p /oracle/oradata/dbxxx/archivelog

tns文件配置

修改/oracle/product/10.2/network/admin目錄下的tnsnames.ora文件,配置如下:

dbxxxdg =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = server174)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dbxxx)

    )

  )

 

dbxxxpr =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.173)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dbxxx)  

    )

  )

listener文件配置

vi $ORACLE_HOME/network/admin/tnsnames.ora ,配置如下:

SID_LIST_LISTENER =  

  (SID_LIST =  

    (SID_DESC =  

      (GLOBAL_DBNAME = dbxxx)  

      (ORACLE_HOME = /oracle/product/10.2)  

      (SID_NAME = dbxxx)  

    )  

  )

 

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = server174)(PORT = 1521))

    )

  )

 

ADR_BASE_LISTENER = /oracle

 

啓動備庫到nomount

SQL> conn /as sysdba

SQL> create spfile from pfile='/oracle/product/11.2.0/dbs/initgdqxt.ora';

SQL> startup nomount

 

備數據庫還原

[oracle@server174 ~]$ rman target sys/****@dbxxxpr auxiliary sys/****@dbxxxdg

RMAN> duplicate target database for standby nofilenamecheck from active database;

 

切換到同步模式

SQL> alter database open;

SQL> alter database recover managed standby database using current logfile disconnect from session;

 

發佈了69 篇原創文章 · 獲贊 56 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章