ORACLE DATAGURARD配置手记
經過多次實踐,參閱網上N多文章……最后還是配不成,可能本人悟性太低,無法體會高手的筆記。最終還是在前輩的幫助下完成。特用最平實的手法記錄下來,以便如吾輩菜鳥能
看得懂。
運行Data Guard的條件?
1、 在主庫和從庫的所有機器上必須安裝同一個版本的Oracle企業版。?
2、 主庫必須運行在歸檔模式下。?
3、 主庫和從庫的操作系統必須一樣(允許版本不同),從庫可以使用與主庫不同的目錄結構。?
4、 主從庫硬件系統的體系結構必須相同。比如:主庫運行在64位的Sun Sparc系統上,如果從庫是32位的Linux Intel系統就不允許。主從庫硬件的配置可以不同,比如:CPU數量、內存大小、存儲配置等。?
5、 主從庫可以是單實例的數據庫,也可以是多實例的RAC數據庫。?
6、 每個主從庫必須有它自己的控制文件。?
7、 如果把主從庫放在了一個系統里,則必須調整初始化參數。?
8、 只要使用Data Guard就要保持主庫是FORCE LOGGING模式,如果在主庫上使用了no logging操作不生成日志,因此數據也不會傳遞到從庫。 9、 管理主從庫的用戶必須具有SYSDBA權限。
主庫:win2003 server ora9i(9.2.0.1.0) 192.168.3.135主機名:data580 SID:PRIMARY?
從庫:win2003 server ora9i(9.2.0.1.0) 192.168.3.136 主機名:data380 SID:STANDBY?
1、主庫和從庫的Oracle 安裝的時候都選擇相同的安裝路徑 E:\oracle\ora92 ;并且先不要安裝數據庫,即在安裝過程中“數據庫配置”一項下面選擇“只安裝軟件”;?
2、在主庫上使用DBCA(Database Configuration Assistant)建一個數據庫,SID設為PRIMARY;?
3、設置主庫歸檔路徑為e:\oracle\ora92\database\Archive :
?? Sql>alter system set log_archive_dest_1='LOCATION=e:\oracle\ora92\database\Archive MANDATORY' scope=both;?
4、將主庫實例、數據庫關閉,然后啟動實例,但不打開數據庫,只啟動到數據庫掛載模式:?
?? Sql>shutdown immediate; Sql>startup mount;?
5、將主庫設置成歸檔狀態和自動歸檔模式:?
?? Sql>alter database archivelog;?
?? Sql>alter system set log_archive_start=true scope=spfile;?
6、在主庫上面創建從庫的控制文件standby.ctl :?
?? Sql>alter database create standby controlfile as 'e:\oracle\oradata\standby.ctl';?
7、在主庫上面創建從庫的初始化參數文件standby.ora(將其拷貝回從庫后轉換成從庫的 spfile):?
?? Sql>create pfile='e:\oracle\oradata\standby.ora' from spfile;?
8、查看主庫的數據文件及其的位置: Sql>select name from v$datafile; 記下查詢結果中的數據文件的位置。?
9、關閉實例:?
?? Sql>shutdown immediate;?
10、將第6步中的standby.ctl、第7步中的standby.ora和第8步驟中的數據文件、還有E:\oracle\oradata\PRIMARY路徑下面的聯機日志文件(REDO.LOG)、E:\oracle\ora92\database里面的口令文件PWDPRIMARY.ora備份出來,拷貝到從庫中;在從庫中創建路徑E:\oracle\oradata\PRIMARY ,存放standby.ctl、數據文件、聯機日志文件;創建路徑
E:\oracle\admin\PRIMARY ,在里面創建空文件夾bdump、cdump、udump、create、pfile ;將standby.ora 放到E盤根目錄下面;將口令文件PWDPRIMARY.ora更名為PWDSTANDBY.ora ,放到從庫的E:\oracle\ora92\database下面。?
11、回到主庫,啟動主庫實例和數據庫:?
?? Sql>startup?
12、轉回到從庫,手動創建服務OracleServiceSTANDBY:?
??? oradim -new -sid STANDBY -startmode manual
??? 設置環境變量:在環境變量的“Administrator的用戶變量”一欄里面新建一個值,變量名為ORACLE_SID ,變量值為STANDBY(服務名)。?
13、創建從庫監聽器OracleOraHome92TNSListener:進入Net Configuration Assistant ,使用“監聽程序配置”來創建從庫的監聽器,同時會在E:\oracle\ora92\network\admin下面生成listener.ora文件;?
14、配置本地NET服務名:進入Net Configuration Assistant ,使用“本地NET服務名配置”來配置,同時會在E:\oracle\ora92\network\admin下面生成tnsnames.ora文件;?
15、配置主從庫的tnsnames.ora ,都將里面的內容設置成如下內容:?
STANDBY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.136)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PRIMARY) ) )
PRIMARY = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.135)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = PRIMARY) ) )?
16、修改E根目錄下面的初始化參數文件standby.ora ,里面的全部內容如下(刪除了原來的control_files參數,將instance_name改成了STANDBY,最后面的7行粗體部分是新添加的內容):?
*.aq_tm_processes=1?
*.background_dump_dest='e:\oracle\admin\PRIMARY\bdump'?
*.compatible='9.2.0.0.0'?
*.core_dump_dest='e:\oracle\admin\PRIMARY\cdump'?
*.db_block_size=8192?
*.db_cache_size=728760320?
*.db_domain=''?
*.db_file_multiblock_read_count=16?
*.db_name='PRIMARY'?
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PRIMARYXDB)','(PROTOCOL=TCP)'?
*.fast_start_mttr_target=300?
*.hash_join_enabled=TRUE?
*.instance_name='STANDBY'?
*.java_pool_size=20971520?
*.job_queue_processes=10?
*.large_pool_size=143654912?
*.log_archive_dest_1='LOCATION=e:\oracle\ora92\database\Archive MANDATORY'?
*.log_archive_start=TRUE?
*.open_cursors=300?
*.pga_aggregate_target=324009984?
*.processes=150?
*.query_rewrite_enabled='FALSE'?
*.remote_login_passwordfile='EXCLUSIVE'?
*.shared_pool_size=242221056?
*.sort_area_size=52428800?
*.star_transformation_enabled='FALSE'?
*.timed_statistics=TRUE?
*.undo_management='AUTO'?
*.undo_retention=10800?
*.undo_tablespace='UNDOTBS1'?
*.user_dump_dest='e:\oracle\admin\PRIMARY\udump'?
*.standby_file_management=AUTO?
*.remote_archive_enable=TRUE?
*.lock_name_space='standby'?
*.fal_server='primary'?
*.fal_client='standby'?
*.standby_archive_dest='e:\oracle\ora92\database\Archive'?
*.control_files='e:\oracle\oradata\primary\STANDBY.CTL'?
17、進入sqlplus將standby.ora創建成從庫的spfile :?
??? Sql>create spfile from pfile='e:\standby.ora';?
18、啟動從庫的實例,并且將從庫設置成standby模式:?
??? Sql>startup nomount; Sql>alter database mount standby database;?
19、在從庫啟動日志應用服務:?
??? Sql>alter database recover managed standby database disconnect from session;?
20、轉到主庫,啟動到物理從庫的歸檔:?
??? Sql>ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=PRIMARY' SCOPE=BOTH;?
??? Sql>ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH;?
21、校驗Data Guard的運轉:?
??? 主庫,歸檔當前日志:?
??? SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;?
??? 從庫,校驗歸檔日志是否正常接收:?
??? SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;?
??? 從庫,查看新的歸檔日志是否正常用于恢復:?
??? SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;?
SEQUENCE# APP --------- ---?
8 YES?
9 YES?
10 YES?
11 YES?
如果都是像以上那樣的內容,都是YES的話,那就成功了。也可以分別查看主從庫的E:\oracle\ora92\database\archive文件夾里面的內容,如果從庫的和主庫的內容一致,就算data guard配置成功了。?
22、這個時候從庫只是將日志文件拿過來存放起來,但并沒有執行日志文件,所以在主庫上所做的操作無法在從庫上得到結果,即無法在從庫上查詢數據。要在從庫上查詢數據,要執行以下語句:在從庫上用sysdba 用戶連接  
Sql>alter database recover managed standby database disconnect from session ;?
Sql>alter database recover managed standby database cancel ;?
Sql>alter database open read only ;
?查詢數據即可。查詢完成以后,需要恢復從庫為恢復模式。
Sql>alter database recover managed standby database disconnect from session ;?
這個功能的可以用來查詢前一天(或者前若干時間)以前的數據,比如報表之類的,因為今天只能查詢昨天以前的報表,對數據的同步性的要求不是那么嚴格。查詢完后一定要將從庫設回恢復模式。
轉載于:https://www.cnblogs.com/hllnj2008/p/4028861.html
總結
以上是生活随笔為你收集整理的ORACLE DATAGURARD配置手记的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Myecplise Tomcat 启动很
 - 下一篇: eclipse常用的快捷键