成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

單機DG的搭建

IT那活兒 / 2055人閱讀
單機DG的搭建

點擊上方“IT那活兒”,關注后了解更多內容,不管IT什么活兒,干就完了?。?!


Data Guard不只是一個備份恢復的工具,某些情況下它甚至可以與primary數(shù)據(jù)庫完全一模一樣。

但是,它存在的目的并不僅僅是為了恢復數(shù)據(jù),應該說它的存在是為了確保企業(yè)數(shù)據(jù)的高可用性,數(shù)據(jù)保護以及災難恢復。



01


dg提供全面的服務包括:
創(chuàng)建,維護,管理以及監(jiān)控standby數(shù)據(jù)庫,確保數(shù)據(jù)安全,管理員可以通過將一些操作轉移到standby數(shù)據(jù)庫執(zhí)行的方式改善數(shù)據(jù)庫性能 ,構建高可用的企業(yè)數(shù)據(jù)庫應用環(huán)境。
在Data Gurad 環(huán)境中,至少有兩個數(shù)據(jù)庫:
  • 一個處于Open 狀態(tài)對外提供服務,這個數(shù)據(jù)庫叫作Primary Database;

  • 第二個處于恢復狀態(tài),叫作Standby Database。 

運行時Primary Database 對外提供服務,用戶在Primary Database 上進行操作,操作被記錄在聯(lián)機日志和歸檔日志中,這些日志通過網絡傳遞給Standby Database。 
這個日志會在Standby Database 上重演,從而實現(xiàn)Primary Database 和Standby Database 的數(shù)據(jù)同步。
如果是可預見因素需要關閉Primary Database,比如軟硬件升級,可以把Standby Database 切換為Primary Database 繼續(xù)對外服務,這樣即減少了服務停止時間,并且數(shù)據(jù)不會丟失。
如果異常原因導致Primary Database 不可用,也可以把Standby Database 強制切換為Primary Database繼續(xù)對外服務,這時數(shù)據(jù)損失都和配置的數(shù)據(jù)保護級別有關系。
因此Primary 和Standby 只是一個角色概念,并不固定在某個數(shù)據(jù)庫中。

02


2.1 DG有三大保護模式:
  • Maximum Availability 
  • Maximum Performance 
  • Maximum Protection
2.1.1 最大性能模式(Maximum Performance)
1)該模式是默認模式,可以保證主數(shù)據(jù)庫的最高可用性;
2)保證主庫運行過程中不受備庫的影響,主庫事務正常提交,不因備庫的任何問題影響到主庫的運行;
4)優(yōu)點:避免了備庫對主數(shù)據(jù)庫的性能和可用性影響;
5)缺點:如果與主庫提交的事務相關的恢復數(shù)據(jù)沒有發(fā)送到備庫,這些事務數(shù)據(jù)將被丟失,不能保證數(shù)據(jù)無損失;
如果不設置,數(shù)據(jù)庫默認是最大性能模式。
通常工作在LGWR ASYNC方式下 或 ARCH方式下,它是一種異步的,所以數(shù)據(jù)不能保證完全一致,一旦異步發(fā)送數(shù)據(jù)過程中異常,或者主庫出現(xiàn)異常,備庫會有一小部分數(shù)據(jù)損失。
2.1.2 最大可用模式(Maximum Availability)
1)該模式提供了僅次于“最大保護模式”的數(shù)據(jù)保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫不會關閉,而是臨時降低到“最大性能模式”模式,直到問題得到處理;
該模式只能工作在LGWR SYNC方式下。
需要說明的是,即使設置了系統(tǒng)為最大可用模式,但是沒有LGWR SYNC方式的配置支持,它會默認轉為最大性能模式。
2.1.3 最大保護模式(Maximum Protection)
1)這種模式提供了最高級別的數(shù)據(jù)保護能力;
2)要求至少一個物理備庫收到重做日志后,主庫的事務才能夠提交;
3)主庫找不到合適的備庫寫入時,主庫會自動關閉,防止未受保護的數(shù)據(jù)出現(xiàn);
4)優(yōu)點:該模式可以保證備庫沒有數(shù)據(jù)丟失;
5)缺點:主庫的自動關閉會影響到主庫的可用性,同時需要備庫恢復后才能提交,對網絡等客觀條件要求非常的高,主庫的性能會因此受到非常大的沖擊。
2.2 查看當前保護模式:
select protection_mode,protection_level from v$database;


03


3.1 搭建前準備:
  • 操作系統(tǒng):Centos7.9

  • 數(shù)據(jù)庫版本11.2.0.4

  • 主庫IP:192.168.13.30   pri    SID=pri

  • 備庫IP:192.168.13.40   std    SID=std

3.2 查看數(shù)據(jù)庫角色以及是否開啟強制日志:
select name,log_mode,force_logging from v$database;
開啟主庫強制日志:

alter database force logging;

復制密碼文件給備庫并改名(此步驟只在主庫上做)(注意改名):
[oracle@pri dbs]$ scp orapwpri 192.168.13.40:$ORACLE_HOME/dbs/orapwstd

3.3 創(chuàng)建redolog日志組(此步驟只在主庫上做):
[oracle@pri dbs]$ cd /home/oracle/u01/app/oracle/oradata/
[oracle@pri oradata]$ mkdir standbylog
[oracle@pri oradata]$ sqlplus / as sysdba
查看standby 日志組的信息:
SQL> set pagesize 100
SQL>  col member for a60
SQL> select group#,member from v$logfile order by group#;
修改主庫的pfile參數(shù)文件(此步驟只在主庫上做):
SQL> show parameter spfile;
SQL> create pfile from spfile;
修改主庫的pfile(注意目錄結構修改前請仔細對比):
[oracle@pri dbs]$ vi initpri.ora


pri.__db_cache_size=2919235584
pri.__java_pool_size=33554432
pri.__large_pool_size=50331648
pri.__oracle_base=/home/oracle/u01/app/oracle#ORACLE_BASE set from environment
pri.__pga_aggregate_target=1241513984
pri.__sga_target=3724541952
pri.__shared_io_pool_size=0
pri.__shared_pool_size=687865856
pri.__streams_pool_size=0
*.audit_file_dest=/home/oracle/u01/app/oracle/admin/pri/adump
*.audit_trail=db
*.compatible=11.2.0.4.0
*.control_files=/home/oracle/u01/app/oracle/oradata/pri/control01.ctl,/home/oracle/u01/app/oracle/fast_recovery_area/pri/control02.ctl
*.db_block_size=8192
*.db_domain=
*.db_name=pri
*.db_recovery_file_dest=/home/oracle/u01/app/oracle/fast_recovery_area
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest=/home/oracle/u01/app/oracle
*.dispatchers=(PROTOCOL=TCP) (SERVICE=priXDB)
*.open_cursors=300
*.pga_aggregate_target=1240465408
*.processes=150
*.remote_login_passwordfile=EXCLUSIVE
*.sga_target=3721396224
*.undo_tablespace=UNDOTBS1
*.db_unique_name=pri
*.log_archive_config=dg_config=(pri,std)
*.log_archive_dest_1=location=/home/oracle/u01/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=pri
*.log_archive_dest_2=service=std valid_for=(online_logfiles,primary_role) db_unique_name=std
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_max_processes=4
*.fal_server=std
*.fal_client=pri
*.db_file_name_convert=/home/oracle/u01/app/oracle/oradata/std,/home/oracle/u01/app/oracle/oradata/pri
*.log_file_name_convert=/home/oracle/u01/app/oracle/oradata/std,/home/oracle/u01/app/oracle/oradata/pri
*.standby_file_management=auto


手工創(chuàng)建/home/oracle/u01/app/oracle/arch:
此目錄是上面配置文件里面后加的:
[oracle@pri dbs]$ mkdir -p /home/oracle/u01/app/oracle/arch
用修改過的pfile重新創(chuàng)建一個spfile,用于重啟數(shù)據(jù)庫(此步驟只在主庫上做):
SQL> shu immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL>  alter database open;
查看是否啟用歸檔模式:
SQL>  archive log list
查看當前數(shù)據(jù)庫是否使用spfile啟動:
SQL>  show parameter spfile;
3.4 添加靜態(tài)監(jiān)聽(主庫、備庫都要做)
主庫配置監(jiān)聽:
[oracle@pri dbs]$ vi /home/oracle/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.30)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = pri)
(ORACLE_HOME = /home/oracle/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = pri)
)
)

ADR_BASE_LISTENER = /home/oracle/u01/app/oracle
~
[oracle@pri dbs]$ vi /home/oracle/u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
pri =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.30)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pri)
)
)

std =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.40)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = std)
)
)



備庫配置監(jiān)聽:
[oracle@std dbs]$ vi /home/oracle/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.13.40)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = std)
(ORACLE_HOME = /home/oracle/u01/app/oracle/product/11.2.0/db_1)
(SID_NAME = std)
)
)

ADR_BASE_LISTENER = /home/oracle/u01/app/oracle

3.5 主備庫開啟監(jiān)聽并測試網絡聯(lián)通性:
[oracle@pri dbs]$ lsnrctl start
[oracle@pri dbs]$ tnsping pri
[oracle@pri dbs]$ tnsping std
3.6 主庫端把pfile拷貝給備庫端的$ORACLE_HOME/dbs目錄下,并重命名:
[oracle@pri dbs]$ scp initpri.ora 192.168.13.40:$ORACLE_HOME/dbs/initstd.ora
3.7 備庫端進行修改(注意目錄結構):
[oracle@std dbs]$ vi initstd.ora
pri.__db_cache_size=2919235584
pri.__java_pool_size=33554432
pri.__large_pool_size=50331648
pri.__oracle_base=/home/oracle/u01/app/oracle#ORACLE_BASE set from environment
pri.__pga_aggregate_target=1241513984
pri.__sga_target=3724541952
pri.__shared_io_pool_size=0
pri.__shared_pool_size=687865856
pri.__streams_pool_size=0
*.audit_file_dest=/home/oracle/u01/app/oracle/admin/pri/adump
*.audit_trail=db
*.compatible=11.2.0.4.0
*.control_files=/home/oracle/u01/app/oracle/oradata/pri/control01.ctl,/home/oracle/u01/app/oracle/fast_recovery_area/pri/control02.ctl
*.db_block_size=8192
*.db_domain=
*.db_name=pri
*.db_recovery_file_dest=/home/oracle/u01/app/oracle/fast_recovery_area
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest=/home/oracle/u01/app/oracle
*.dispatchers=(PROTOCOL=TCP) (SERVICE=priXDB)
*.open_cursors=300
*.pga_aggregate_target=1240465408
*.processes=150
*.remote_login_passwordfile=EXCLUSIVE
*.sga_target=3721396224
*.undo_tablespace=UNDOTBS1
*.db_unique_name=pri
*.log_archive_config=dg_config=(pri,std)
*.log_archive_dest_1=location=/home/oracle/u01/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=pri
*.log_archive_dest_2=service=std valid_for=(online_logfiles,primary_role) db_unique_name=std
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
pri.__db_cache_size=1392508928
pri.__java_pool_size=16777216
pri.__large_pool_size=33554432
pri.__oracle_base=/home/oracle/u01/app/oracle#ORACLE_BASE set from environment
pri.__pga_aggregate_target=620756992
pri.__sga_target=1862270976
pri.__shared_io_pool_size=0
pri.__shared_pool_size=402653184
pri.__streams_pool_size=0
*.audit_file_dest=/home/oracle/u01/app/oracle/admin/std/adump
*.audit_trail=db
*.compatible=11.2.0.4.0
*.control_files=/home/oracle/u01/app/oracle/oradata/std/control01.ctl,/home/oracle/u01/app/oracle/oradata/std/control02.ctl
*.db_block_size=8192
*.db_domain=
*.db_name=pri
*.db_recovery_file_dest=/home/oracle/u01/app/oracle/fast_recovery_area
*.db_recovery_file_dest_size=4385144832
*.diagnostic_dest=/home/oracle/u01/app/oracle
*.dispatchers=(PROTOCOL=TCP) (SERVICE=stdXDB)
*.open_cursors=300
*.pga_aggregate_target=2423259136
*.processes=150
*.remote_login_passwordfile=EXCLUSIVE
*.sga_target=4294967296
*.undo_tablespace=UNDOTBS1
*.db_unique_name=std
*.log_archive_config=dg_config=(pri,std)
*.log_archive_dest_1=location=/home/oracle/u01/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=std
*.log_archive_dest_2=service=pri valid_for=(online_logfiles,primary_role) db_unique_name=pri
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_max_processes=4
*.fal_server=pri
*.fal_client=std
*.db_file_name_convert=/home/oracle/u01/app/oracle/oradata/pri,/home/oracle/u01/app/oracle/oradata/std
*.log_file_name_convert=/home/oracle/u01/app/oracle/oradata/pri,/home/oracle/u01/app/oracle/oradata/std
*.standby_file_management=auto
3.8 備庫操作:
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/admin/std/adump
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/oradata/std/
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/fast_recovery_area
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/arch
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/diag/rdbms/std/std/trace
[oracle@std dbs]$ mkdir -pv /home/oracle/u01/app/oracle/oradata/standbylog
用修改后的pfile創(chuàng)建一個spfile,用于啟動數(shù)據(jù)庫(備庫端做):
SQL>  create spfile from pfile;
SQL>  startup nomount;
利用RMAN在備庫上恢復主庫(備庫端做):
[oracle@std dbs]$ rman target sys/123456@pri auxiliary sys/123456@std
RMAN> duplicate target database for standby from active database nofilenamecheck;
錄備庫啟用日志:
SQL> select status from v$instance;
SQL> alter database recover managed standby database disconnect from session;
分別查看主庫和備庫的Current log sequence歸檔序列號是否一致:
SQL> archive log list
開啟備庫:
SQL> alter database recover managed standby database cancel;
SQL> shu immediate
SQL> alter database mount standby database;
SQL>  alter database open read only;
SQL>  alter database recover managed standby database using current logfile disconnect from session;
查看日志是否同步:
SQL> archive log list
3.9 主備切換
查看主備角色:
SQL> select switchover_status,database_role,open_mode from v$database;
主庫切備庫:
SQL> alter database commit to switchover to physical standby;
切完之后,主庫會變成備庫并關閉,用備庫的方式打開新備庫,查詢狀態(tài):
備庫切主庫:
alter database commit to switchover to primary;
回切:


end



本文作者:王 剛

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/129649.html

相關文章

  • 19C?DG?Broker配置和測試

    19C?DG?Broker配置和測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏2941
  • DG備庫讀寫測試方案

    DG備庫讀寫測試方案 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; margin:0...

    IT那活兒 評論0 收藏856
  • Redis單機搭建

    摘要:因為是在虛擬機上面模擬搭建,所以我們可以設置六個不同的端口來模擬六臺虛擬機。官網然后將壓縮包上傳的虛擬機的服務器上,這里我用的是版本。把這了的改為接下來執(zhí)行執(zhí)行這條命令就可以后臺啟動了查看進程是否啟動成功好了,單機版的版的已經搭建成功了。 首先放一張Redis的架構圖: showImg(https://segmentfault.com/img/remote/14600000174635...

    CODING 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<