oracle 19c 單機ADG部署


19c 單機ADG部署
前提:主庫安裝數據庫,備庫只安裝oracle軟件即可。
1.DG基礎環境
oracle 主庫ip:10.10.98.131 ORACLE_SID:orcl db_name='orcl' 主機名:sentry
oracle 主庫ip:10.10.98.132 ORACLE_SID:orclst db_name='orcl' 主機名:sentryst

2.主庫開啟強制歸檔以及開啟歸檔模,以及修改主庫初始化參數
①開啟強制歸檔
alter database force logging;
select force_logging from v$database;
②初始化參數
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(ORCL,ORCLST)' scope=both sid='*';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=/u01/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL' scope=spfile;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=ORCLST LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLST' scope=both sid='*';
alter system set FAL_CLIENT='ORCL' scope=both sid='*';
alter system set FAL_SERVER='ORCLST' scope=both sid='*';
alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both sid='*';
alter system set DB_FILE_NAME_CONVERT='/u01/oradata/ORCLST','/u01/oradata/ORCL'scope=spfile sid='*';
alter system set LOG_FILE_NAME_CONVERT='/u01/oradata/ORCLST','/u01/oradata/ORCL' scope=spfile sid='*';
③開啟歸檔,開啟歸檔需要重啟數據庫。

3.主庫添加standby redo logfile(連接到CDB$ROOT中執行)
添加規則:創建standby日志組,個數是源日志個數+1再與實例數的積,size不能小於原來日志的大小

SQL> select thread#,group#,members,bytes,bytes/1024/1024 from v$log;

THREAD# GROUP# MEMBERS BYTES BYTES/1024/1024
---------- ---------- ---------- ---------- ---------------
1 1 1 209715200 200
1 2 1 209715200 200
1 3 1 209715200 200

alter database add standby logfile group 4 ('/u01/oradata/ORCL/redo04.log') size 200M;
alter database add standby logfile group 5 ('/u01/oradata/ORCL/redo05.log') size 200M;
alter database add standby logfile group 6 ('/u01/oradata/ORCL/redo06.log') size 200M;
alter database add standby logfile group 7 ('/u01/oradata/ORCL/redo07.log') size 200M;

SQL> select group#,status,type,member from v$logfile;

4.主庫和備庫監聽配置以及TNS配置(主備庫tns一樣),保證防火牆關閉
主庫:listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.131)(PORT = 1521))
)
)


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = orcl)
)
)
主庫:tnsname.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

ORCLST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.132)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclst)
)
)
備庫:listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.132)(PORT = 1521))
)
)


SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orclst)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = orclst)
)
)
備庫:tnsname.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.131)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)

ORCLST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.98.132)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orclst)
)
)
注意:配置完畢再主備庫互相訪問數據庫查看連接情況。

5.主庫創建pfile以及cpoy創建好的pfile和口令文件到備庫對應位置
主庫:
create pfile=init202009024.ora from spfile;
cd $ORACLE_HOME/dbs
scp init202009024.ora oracle@10.10.98.132:/u01/app/oracle/product/19.0.0/dbhome_1/dbs
scp orapworcl oracle@10.10.98.132:/u01/app/oracle/product/19.0.0/dbhome_1/dbs/orapworclst
查看主庫生成的init202009024.ora
----------------------------------------------------------------
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=1224736768
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=0
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/app/oracle/'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=436207616
orcl.__sga_target=1728053248
orcl.__shared_io_pool_size=83886080
orcl.__shared_pool_size=385875968
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/oradata/ORCL/control01.ctl','/u01/oradata/ORCL/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/oradata/ORCLST','/u01/oradata/ORCL'
*.db_name='orcl'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.enable_pluggable_database=true
*.fal_client='ORCL'
*.fal_server='ORCLST'
*.log_archive_config='DG_CONFIG=(ORCL,ORCLST)'
*.log_archive_dest_1='LOCATION=/u01/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCL'
*.log_archive_dest_2='SERVICE=ORCLST LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLST'
*.log_file_name_convert='/u01/oradata/ORCLST','/u01/oradata/ORCL'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=410m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1638m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
----------------------------------------------------------------

6.備庫修改init202009024.ora文件
mkdir /u01/app/oracle/admin/orclst/adump


-----------------------------------------------------------------
orcl.__data_transfer_cache_size=0
orcl.__db_cache_size=1224736768
orcl.__inmemory_ext_roarea=0
orcl.__inmemory_ext_rwarea=0
orcl.__java_pool_size=0
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/app/oracle/'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=436207616
orcl.__sga_target=1728053248
orcl.__shared_io_pool_size=83886080
orcl.__shared_pool_size=385875968
orcl.__streams_pool_size=0
orcl.__unified_pga_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orclst/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/oradata/ORCLST/control01.ctl','/u01/oradata/ORCLST/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/u01/oradata/ORCL','/u01/oradata/ORCLST'
*.db_name='orcl'
*.db_unique_name='orclst'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclstXDB)'
*.enable_pluggable_database=true
*.fal_client='ORCLST'
*.fal_server='ORCL'
*.log_archive_config='DG_CONFIG=(ORCL,ORCLST)'
*.log_archive_dest_1='LOCATION=/u01/oradata/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=ORCLST'
*.log_archive_dest_2='SERVICE=ORCL LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL'
*.log_file_name_convert='/u01/oradata/ORCL','/u01/oradata/ORCLST'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=410m
*.processes=320
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1638m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'
----------------------------------------------------------------------------------

7.備庫用init202009024.ora啟動到nomount
startup pfile=init202009024.ora nomount;

8.duplicate開始,在備庫通過rman進行復制備庫
rman target sys/oracle@ORCL auxiliary sys/oracle@ORCLST

run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate auxiliary channel c4 type disk;
allocate auxiliary channel c5 type disk;
allocate auxiliary channel c6 type disk;
duplicate target database for standby from active database nofilenamecheck;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
}
或者:duplicate target database for standby from active database nofilenamecheck dorecover;

9.查看備庫數據庫狀態
select open_mode from v$database;
OPEN_MODE
-------------
MOUNTED

把備庫啟動到open only下:
alter database open read only;
在備庫啟動數據庫到恢復管理模式,並開始准備從主庫接受日志的傳輸:
alter database recover managed standby database using current logfile disconnect from session;

10.主庫檢查LNS進程:
select process,status from v$managed_standby;
如果沒有LNS進程,則需要檢查DG環境。

11.檢查主備庫角色和其他信息
備庫:
select database_role,protection_mode,open_mode from v$database;

主庫:
select database_role,open_mode from gv$database;

12.在備庫查看data guard為那種日志接受方式:
select process,client_process,sequence#,status from v$managed_standby;


13.檢查主備庫sequence#
select max(sequence#) from v$archived_log;
select sequence#,name,standby_dest,applied,deleted from v$archived_log where archived='YES' order by sequence# desc;

14.檢查日志隊列是否正常傳輸
select sequence#,applied,first_time,next_time from v$archived_log order by sequence#;

檢查兩邊的日志同步情況:
select sequence# from v$archived_log where applied='YES';

 

注意:備庫需要重新創建spfile文件,否則關閉數據庫以后重啟會找不到參數文件而報錯。語句:create spfile from pfile='$ORACLE_HOME/dbs/init202009024.ora';


************************************************************************************************************************
******************* 方法二,利用主庫rman的備份集做ADG ********************************
******************* 如下 ********************************
************************************************************************************************************************


銜接上述方法的第7步驟,7之前都是一樣的操作。
1.登錄主庫用rman做全備
rman target /

RMAN> run {
allocate channel c1 type disk;
allocate channel c2 type disk;
sql‘ alter system archive log current‘;
backup database format ‘/home/oracle/rman/full_db_%U‘;
sql‘ alter system archive log current‘;
backup archivelog all format ‘/home/oracle/rman/archlog_%U‘;
backup current controlfile for standby format ‘/home/oracle/rman/controlfile_%U‘;;
release channel c1;
release channel c2;
}

2.將以上備份出來的備份集傳到備庫
scp /home/oracle/rman_bak/* oracle@10.10.98.132:/home/oracle/rman_bak/

3.備庫用init202009024.ora啟動到nomount
startup pfile=init202009024.ora nomount;

4.備庫restore控制文件
rman target /
restore standby controlfile from ‘/home/oracle/rman_bak/controlfile_0ew9gd_1_1‘;

 

 

5.備庫做控制文件恢復成功以后打開數據庫到mount狀態
alter database mount;

加載備份集

RMAN> catalog start with '/home/oracle/backup';  ----此目錄為你備端存放備份集的目錄

6.備庫開始恢復數據庫
restore database;

 

 

 

 

7.恢復成功以后打開備庫數據導open
alter database open;

8.查看備庫數據庫狀態
SQL> select name,db_unique_name,open_mode from v$database;

OPEN_MODE
-------- -----
READ ONLY

9.備庫執行日志實時利用。
alter database recover managed standby database using current logfile disconnect;

ADG搭建完畢,查看狀態測試同步情況即可!!

 

 

在rac到rac部署adg遇到的問題:

restore恢復完成以后有些日志顯示:

+DATA/MUST_RENAME_THIS_LOGFILE_2.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_2.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_1.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_1.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_3.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_3.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_4.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_4.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_5.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_5.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_6.232423.43523

+DATA/MUST_RENAME_THIS_LOGFILE_6.232423.43523

則通過重新rename

alter database rename file '+DATA/MUST_RENAME_THIS_LOGFILE_2.232423.43523' to '+DATA/redo2_01.log';

alter database rename file '+DATA/MUST_RENAME_THIS_LOGFILE_2.232423.43523' to '+DATA/redo2_02.log';

alter database rename file '+DATA/MUST_RENAME_THIS_LOGFILE_1.232423.43523' to '+DATA/redo1_01.log';

alter database rename file '+DATA/MUST_RENAME_THIS_LOGFILE_1.232423.43523' to '+DATA/redo1_02.log';

以此類推。。。。修改完成啟動alter database open;

 

在改完名字以后,在open到只讀庫時候會報錯:

ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '+DATA/MUST_RENAME_THIS_DATAFILE_1.23423.123112'

可以檢查archive_dest是否配置的正確,如果正確的話。可以是太舊最近的日志沒有追上來,可以先打開應用日志,等一段時間在open到只讀庫就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM