1. Экологическая информация
Программное обеспечение базы данных было установлено
начальный
Версия базы данных: 11.2.0.3
RAC: N
Имя экземпляра: pri
поддерживать
Версия базы данных: 11.2.0.3
RAC: N
Имя экземпляра: std
db_name в целом соответствует основной библиотеке
Измените файл hosts
В файле /etc/hosts двух узлов добавьте сопоставление имен хостов и IP-адресов обеих сторон соответственно.
2. Работа с основной библиотекой
просматривать онлайн-журналы
SELECT thread#, group#, bytes / 1024 / 1024
FROM v$log;
SELECT *
FROM v$logfile;
Убедитесь, что архивирование журнала включено
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;
Обязательное архивирование конфигурации главной библиотеки
alter database force logging;
Добавить резервную группу журналов
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;
Создайте файл паролей в основной библиотеке
#注意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 来验证可以相互登录
Проверьте, включен ли spfile в основной библиотеке.
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /data/ebs/pri/db/tech_st/11.2.
0/dbs/spfilePRI.ora
Задайте основные параметры библиотеки
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.
Измените tnsnames.ora и 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. Параметры резервной базы данных
Задайте параметры резервной базы данных
– Создайте pfile через spfile в сегменте резервной базы данных, а затем измените следующие параметры.
*.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'
Начать nomount в резервной базе данных
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
Измените tnsnames.ora и 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. Проверьте конфигурацию с помощью tnsping
Используйте tnsping db_unique_name на обоих узлах для проверки совместимости.
5. Передача на резервном участке
[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;
Затем убедитесь, что конфигурация в порядке на этом этапе.Следующий шаг — настроить db_broker.Этот инструмент эквивалентен инструменту управления.Вы можете переключаться между активным и резервным, введя строку команд и настроив параметры. Нет необходимости снова стучать по каждому узлу.
6. Подтвердить
--切换日志测试,如果一直说明是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;
7. Настройка брокера dg
Изменить параметры
#两个节点都要执行
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;
тестовый переключатель
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>
Произошла ошибка при обратном переключении:
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"
Просмотр журналов предупреждений, соответствующих двум узлам
Не увидел проблемы.
Посмотрите информацию о конфигурации базы данных.Бывает, что StaticConnectIdentifier является настроенным именем хоста.Проверьте файл /etc/hosts основной библиотеки и обнаружите, что в нем не настроено имя хоста.Добавив его,переключите его снова.
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>
справочные документы
https://www.modb.pro/doc/39007?xzs=
https://www.modb.pro/doc/38709?xzs=
https://www.modb.pro/doc/514
https://www.modb.pro/doc/514 .cnblogs.com/yhfssp/p/7815078.html