1. Informações ambientais
O software de banco de dados foi instalado
primário
Versão do banco de dados: 11.2.0.3
RAC: N
Nome da instância: pri
espera
Versão do banco de dados: 11.2.0.3
RAC: N
Nome da instância: std
db_name é geralmente consistente com a biblioteca principal
Modifique o arquivo hosts
No arquivo /etc/hosts dos dois nós, adicione o mapeamento dos nomes de host e IPs de ambas as partes, respectivamente.
2. Operação da biblioteca principal
ver registros on-line
SELECT thread#, group#, bytes / 1024 / 1024
FROM v$log;
SELECT *
FROM v$logfile;
Verifique se o arquivamento de log está ativado
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /data/ebs/pri/db/apps_st/data/archive
Oldest online log sequence 5738
Current log sequence 5739
--如果没有开启则关闭数据启动到mount模式后来开启归档
SQL> alter database archivelog;
--打开数据库
SQL> alter database open;
Arquivamento obrigatório da configuração da biblioteca principal
alter database force logging;
Adicionar grupo de logs em espera
ALTER DATABASE add standby logfile GROUP 3 ('/data/ebs/pri/db/apps_st/data/log03a_std.dbf','/data/ebs/pri/db/apps_st/data/log03b_std.dbf') size 1000m;
ALTER DATABASE add standby logfile GROUP 4 ('/data/ebs/pri/db/apps_st/data/log04a_std.dbf','/data/ebs/pri/db/apps_st/data/log04b_std.dbf') size 1000m;
ALTER DATABASE add standby logfile GROUP 5 ('/data/ebs/pri/db/apps_st/data/log05a_std.dbf','/data/ebs/pri/db/apps_st/data/log05b_std.dbf') size 1000m;
Crie um arquivo de senha na biblioteca principal
#注意ORACLE_SID 大小写
orapwd file=orapwpri password=oracle force=y
scp orapwPRI [email protected]:/data/ebs/std/db/tech_st/11.2.0/dbs/orapwSTD
#保证 remote_login_passwordfile 参数 = EXCLUSIVE .
通过 sqlplus sys/oracle@pri as sysdba 来验证可以相互登录
Verifique se a biblioteca principal tem spfile ativado
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /data/ebs/pri/db/tech_st/11.2.
0/dbs/spfilePRI.ora
Definir os principais parâmetros da biblioteca
alter system set log_archive_config='dg_config=(pri,std)' scope=spfile;#pri、std分别为主库备库的sid
SQL> alter system set log_archive_dest_1='LOCATION=/data/ebs/pri/db/apps_st/data/archive valid_for=(all_logfiles,all_roles) db_unique_name=pri' scope=spfile;
System altered.#这个参数在设置的时候,都要义所属节点的文件路径和db_unique_name一致
SQL> alter system set log_archive_dest_2='SERVICE=std ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=std' scope=spfile;#这个参数在设置的时候,都要义所属节点的文件路径和db_unique_name一致
System altered.
SQL> alter system set log_archive_dest_state_1=enable scope=spfile;
System altered.
SQL> alter system set log_archive_dest_state_2=enable scope=spfile;
System altered.
SQL> alter system set log_archive_max_processes=30 scope=both;
System altered.
SQL> alter system set standby_file_management=auto scope=spfile;
System altered.
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest string
#上面这个参数可以不用设置
SQL> alter system set db_file_name_convert='/data/ebs/std/db/apps_st/data','/data/ebs/pri/db/apps_st/data' scope=spfile; #(第二个参数才是本地路径)
System altered.
SQL> alter system set log_file_name_convert='/data/ebs/std/db/apps_st/data','/data/ebs/pri/db/apps_st/data' scope=spfile; #(第二个参数才是本地路径)
System altered.
SQL> create pfile from spfile;
File created.
Modifique tnsnames.ora e listener.ora
#在tnsnames.ora最后加入
IFILE=/data/ebs/pri/db/tech_st/11.2.0/network/admin/dg_std_ifile.ora
#然后在dg_std_ifile.ora这个文件填写对端库的tns
STD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xx.xx.xx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = std)
)
)
#listener.ora
SID_LIST_PRI =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = pri_DGMGRL)#这一行是新增的,其中pri是db_unique_name
(ORACLE_HOME= /data/ebs/pri/db/tech_st/11.2.0)
(SID_NAME = PRI)
)
)
3. Configurações do banco de dados em espera
Definir parâmetros de banco de dados de espera
–Crie pfile por meio de spfile no segmento de banco de dados em espera e, em seguida, modifique os seguintes parâmetros
*.db_name='std'
*.db_unique_name='std' DG主库和备库的db_name必须一致,db_unique_name不一致
*.log_archive_config='dg_config=(pri,std)' pri主数据库SID,std备份数据库SID
*.log_archive_dest_1='location=/u01/app/oracle/arch valid_for=(all_logfiles,all_roles) db_unique_name=pri' #当前节点路径
*.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='std' #对端主库的的SID
*.fal_client='pri' #当前节点的信息
*.db_file_name_convert='/u01/app/oracle/oradata/std','/u01/app/oracle/oradata/pri' #第一个目录是对对端主库路径,第二个是当前节点路径
*.log_file_name_convert='/u01/app/oracle/oradata/std','/u01/app/oracle/oradata/pri' #第一个目录是备份数据库数据文件路径(备份服务器上有此目录),第二个是主数据库数据文件路径
*.standby_file_management='auto'
Comece a nomount no banco de dados standby
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1.0689E+10 bytes
Fixed Size 2237776 bytes
Variable Size 4798286512 bytes
Database Buffers 5872025600 bytes
Redo Buffers 16924672 bytes
SQL> show parameter db_unique_name
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
db_unique_name string
std
SQL> create spfile from pfile;
File created.
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 1.0689E+10 bytes
Fixed Size 2237776 bytes
Variable Size 4798286512 bytes
Database Buffers 5872025600 bytes
Redo Buffers 16924672 bytes
SQL> exit
Modifique tnsnames.ora e listener.ora
#在tnsnames.ora最后加入
IFILE=/data/ebs/std/db/tech_st/11.2.0/network/admin/dg_pri_ifile.ora
#然后在dg_std_ifile.ora这个文件填写对端库的tns
PRI =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxx.xx.xx.xx)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pri)
)
)
#修改listener.ora
SID_LIST_PRI =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = std_DGMGRL)#只有这一行是新增的,其中pri是db_unique_name,这个是给db_broker用的
(ORACLE_HOME= /data/ebs/pri/db/tech_st/11.2.0)
(SID_NAME = PRI)
)
)
4. Verifique a configuração com tnsping
Use tnsping db_unique_name em ambos os nós para verificar a interoperabilidade
5. Transmissão na seção de backup
[orastd@ifeng-ebs-test-db archive]$ rman target sys/oracle@pri auxiliary sys/oracle@std
Recovery Manager: Release 11.2.0.3.0 - Production on Fri Aug 20 20:39:24 2021
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: PRI (DBID=269162849)
connected to auxiliary database: PRI (not mounted)
RMAN> duplicate target database for standby from active database nofilenamecheck;
#完成后,启动到startup状态
alter database open;
Em seguida, verifique se a configuração está correta neste ponto. O próximo passo é configurar o db_broker. Esta ferramenta é equivalente a uma ferramenta de gerenciamento. Você pode alternar entre mestre e backup digitando uma linha de comandos e configurando parâmetros. Não há necessidade de bater em cada nó novamente.
6. Verifique
--切换日志测试,如果一直说明是OK的
--主库
SQL> alter system switch logfile;
SQL>select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;
--备库
SQL> select SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED, ARCHIVED from V$ARCHIVED_LOG;
Sete. Configure o corretor dg
Alterar parâmetros
#两个节点都要执行
alter system set dg_broker_start=true;
#下面任选一个节点执行
create configuration dg as primary database is pri connect identifier is pri;
add database std as connect identifier is std;
interruptor de teste
DGMGRL> show configuration
Configuration - dg
Protection Mode: MaxPerformance
Databases:
pri - Primary database
std - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
#下面这个命令时备库当主节点使用
DGMGRL> switchover to std
Performing switchover NOW, please wait...
New primary database "std" is opening...
Operation requires shutdown of instance "PRI" on database "pri"
Shutting down instance "PRI"...
ORACLE instance shut down.
Operation requires startup of instance "PRI" on database "pri"
Starting instance "PRI"...
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is "std"
DGMGRL> show configuration
Configuration - dg
Protection Mode: MaxPerformance
Databases:
std - Primary database
pri - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL>
Ocorreu um erro ao voltar:
DGMGRL> switchover to pri
Performing switchover NOW, please wait...
New primary database "pri" is opening...
Operation requires shutdown of instance "STD" on database "std"
Shutting down instance "STD"...
ORACLE instance shut down.
Operation requires startup of instance "STD" on database "std"
Starting instance "STD"...
Unable to connect to database
ORA-12545: Connect failed because target host or object does not exist
Failed.
Warning: You are no longer connected to ORACLE.
Please complete the following steps to finish switchover:
start up instance "STD" of database "std"
Visualize os logs de alerta correspondentes aos dois nós
Não viu o problema.
Observe as informações de configuração do banco de dados. Acontece que StaticConnectIdentifier é o nome do host configurado. Verifique o arquivo /etc/hosts da biblioteca principal e verifique se o nome do host não está configurado nele. Após adicioná-lo, alterne-o novamente .
DGMGRL> show database verbose std
Database - std
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds
Apply Lag: 0 seconds
Real Time Query: ON
Instance(s):
STD
Properties:
DGConnectIdentifier = 'std'
ObserverConnectIdentifier = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'OPTIONAL'
MaxFailure = '0'
MaxConnections = '1'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
LogShipping = 'ON'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyParallel = 'AUTO'
StandbyFileManagement = 'AUTO'
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '30'
LogArchiveMinSucceedDest = '1'
DbFileNameConvert = '/data/ebs/pri/db/apps_st/data, /data/ebs/std/db/apps_st/data'
LogFileNameConvert = '/data/ebs/pri/db/apps_st/data, /data/ebs/std/db/apps_st/data'
FastStartFailoverTarget = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
SendQEntries = '(monitor)'
LogXptStatus = '(monitor)'
RecvQEntries = '(monitor)'
SidName = 'STD'
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ifeng-ebs-test-db)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=std_DGMGRL)(INSTANCE_NAME=STD)(SERVER=DEDICATED)))'
StandbyArchiveLocation = '/data/ebs/std/db/apps_st/data/archive'
AlternateLocation = ''
LogArchiveTrace = '0'
LogArchiveFormat = '%t_%s_%r.dbf'
TopWaitEvents = '(monitor)'
Database Status:
SUCCESS
DGMGRL>
documentos de referência
https://www.modb.pro/doc/39007?xzs=
https://www.modb.pro/doc/38709?xzs=
https://www.modb.pro/doc/514
https://www .cnblogs.com/yhfssp/p/7815078.html