Oracle RAC Standby实施手册sql
目录数据库
1 实施环境规划 3bash
1.2 归档配置相关参数 3session
1.3 主库软件环境信息 4oracle
1 实施环境规划
DataGuard三种保护模式:最大化保护、最大有效性、最大性能。为了下降对主数据库的影响,如下采用最大性能模式进行DataGuard配置。
DataGuard配置中备数据库类型主要有三种:逻辑备数据库、物理备数据库和基于快照的备数据库,如下采用物理备数据库方式进行DataGuard配置。
DataGuard配置中的主数据库和备数据库之间数据同步是经过TCP/IP网络通讯实现的,为了尽量下降网络带宽的竞争和对现有应用程序性能问题,建议在主数据库主机和备数据库主机之间构建专属于DataGuard的网络,即须要添加新的网卡等硬件资源搭建专属于DataGuard的网络。
另外,建议在主数据库和备数据库上建立专属于DataGuard的数据库监听器,如listener_dg,监听端口为1525,若是主数据库和备数据库在不一样网段上且存在防火墙,须要在防火墙上开通1525端口。
1.1 IP地址规划
主机名 |
IP地址 |
描述 |
|
主数据库环境 |
crmdb1 |
192.168.56.210 |
公网IP地址 |
192.168.56.216 |
DG专署IP地址 |
||
crmdb2 |
192.168.56.211 |
公网IP地址 |
|
192.168.56.217 |
DG专署IP地址 |
||
备数据库环境 |
crmdg1 |
192.168.56.220 |
公网IP地址 |
192.168.56.225 |
DG专署IP地址址 |
||
crmdg2 |
192.168.56.221 |
公网IP地址 |
|
192.168.56.226 |
DG专署IP地址 |
1.2 归档配置相关参数
数据库类型 |
主机名 |
DB_UNIQUE_NAME |
INSTANCE_NAME |
Net Service Name |
主库 |
crmdb1 |
crmdb |
crmdb1 |
CRMDB_DG |
crmdb2 |
crmdb2 |
|||
备库 |
crmdg1 |
crmdg |
crmdb1 |
CRMDG_DG |
crmdb2 |
crmdb2 |
1.3 主库软件环境信息
为便于管理,主备库软件环境信息配置一致。
主库软件环境信息 |
|
数据库sys用户密码 |
主数据库和备数据库密码必须一致,设置为oracle |
Grid和数据库版本 |
11.2.0.4 |
ORACLE_SID环境变量 |
crmdb1和crmdb2 |
GRID软件ORACLE_BASE目录 |
/oracle/app/oracle |
GRID软件ORACLE_HOME目录 |
/grid/app/11.2.0.4/grid |
DB软件ORACLE_BASE目录 |
/oracle/app/oracle |
DB软件ORACLE_HOME目录 |
/oracle/app/oracle/product/11.2.0.4/db_1 |
DG专署监听器 |
LISTENER_DG |
DG专署监听器端口 |
1525 |
初始化参数 |
DB_NAME=crmdb |
DB_UNIQUE_NAME=crmdb |
|
COMPATIBLE主数据库和备数据库必须一致 |
|
归档模式 |
归档模式 |
归档目录 |
+CRMDBARCH |
1.4 备库软件环境信息
备库软件环境信息 |
|
数据库sys用户密码 |
主数据库和备数据库密码必须一致,设置为oracle |
Grid和数据库版本 |
11.2.0.4 |
ORACLE_SID环境变量 |
crmdb1和crmdb2 |
GRID软件ORACLE_BASE目录 |
/oracle/app/oracle |
GRID软件ORACLE_HOME目录 |
/grid/app/11.2.0.4/grid |
DB软件ORACLE_BASE目录 |
/oracle/app/oracle |
DB软件ORACLE_HOME目录 |
/oracle/app/oracle/product/11.2.0.4/db_1 |
DG专署监听器 |
LISTENER_DG |
DG专署监听器端口 |
1525 |
初始化参数 |
DB_NAME=crmdb |
DB_UNIQUE_NAME=crmdg |
|
COMPATIBLE主数据库和备数据库必须一致 |
|
归档模式 |
归档模式 |
归档目录 |
+CRMDGARCH |
2 Active DataGuard实施条件
实施Active DataGuard的前提条件以下:
1. 主数据库主机和备数据库主机硬件平台一致,如都为Linux 主机;
2. 主数据库和备数据库软件版本一致且都为11.2.0.4;
3. 备数据库数据库存储空间大小不小于主数据库数据库存储空间大小;
$ asmcmd
ASMCMD> lsdg
4. 主数据库数据库运行正常且工做在archivelog模式下;
$ sqlplus / as sysdba
--1. 修改并检查归档参数
SQL> alter system set log_archive_dest_1='location=+CRMDBARCH';
SQL> show parameter log_archive_dest_1;
SQL> show parameter log_archive_format;
--2. 关闭主库两各节点
SQL> shutdown immediate;
--3. 启动一各节点进行启用归档操做
SQL> startup mount;
SQL> alter database ARCHIVELOG;
SQL> alter database open;
--4. 启动另一各节点
SQL> startup;
--5. 测试归档配置结果
SQL> alter system archive log current;
5. 主数据库数据库须要启动force logging功能;
$ sqlplus / as sysdba
SQL> select FORCE_LOGGING from v$database;
SQL> alter database force logging;
6. 主数据库和备数据库sys用户的密码同样,而且密码文件必须存在且主数据库初始化参数remote_login_passwordfile必须设置为EXCLUSIVE;
3 Active DataGuard实施准备
为便于主备库切换时,应用能够进行快速切换,主备库数据库实例名名称相同。
3.1 配置DG专用监听
3.1.1 建立LISTENER_DG
经过grid登陆主/备数据库各节点主机,建立LISTENER_DG监听器。主/备数据库主机清单见:IP地址规划。
主库配置文件(crmdb1/crmdb2主机):
[grid@crmdb1 ~]$ cd $ORACLE_HOME/network/admin
[grid@crmdb1 admin]$ cp listener.ora listener.ora.`date +%Y%m%d`
[grid@crmdb1 admin]$ vi listener.ora
# ADD FOR DG
LISTENER_DG =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.216)(PORT = 1525))
)
)
SID_LIST_LISTENER_DG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = crmdb)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/db_1)
(SID_NAME = crmdb1)
)
)
红色部份内容描述:
LISTENER_DG:DG专用监听器名称
192.168.56.216:crmdb1 节点DG专署监听IP地址
1525:DG专署监听端口
crmdb:DB_UNIQUE_NAME初始化参数值
crmdb1:当前主机ORACLE_SID或INSTANCE_NAME
备库配置文件(crmdg1/crmdg2主机):
[grid@crmdg1 ~]$ cd $ORACLE_HOME/network/admin
[grid@crmdg1 admin]$ cp listener.ora listener.ora.`date +%Y%m%d`
[grid@crmdg1 admin]$ vi listener.ora
# ADD FOR DG
LISTENER_DG =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.225)(PORT = 1525))
)
)
SID_LIST_LISTENER_DG =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = crmdg)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/db_1)
(SID_NAME = crmdb1)
)
)
红色部份内容描述:
LISTENER_DG:DG专用监听器名称
192.168.56.225:crmdg1 节点DG专署监听IP地址,该参数各主机不一样
1525:DG专署监听端口
crmdg:DB_UNIQUE_NAME初始化参数值,该参数主备库不一样
crmdb1:当前主机ORACLE_SID或INSTANCE_NAME,该参数集群中各节点不一样
3.1.2 将监听加入到crs资源
主库:
[grid@crmdb1 ~]$ srvctl add listener -l LISTENER_DG -p TCP:1525
[grid@crmdb1 ~]$ srvctl start listener -l LISTENER_DG -n crmdb1
[grid@crmdb2 ~]$ srvctl start listener -l LISTENER_DG -n crmdb2
备库:
[grid@crmdg1 ~]$ srvctl add listener -l LISTENER_DG -p TCP:1525
[grid@crmdg1 ~]$ srvctl start listener -l LISTENER_DG -n crmdg1
[grid@crmdg2 ~]$ srvctl start listener -l LISTENER_DG -n crmdg2
3.2 配置TNS别名
该配置主备库相同。
[oracle@crmdb1 ~]$ cd $ORACLE_HOME/network/admin
[oracle@crmdb1 admin]$ cp tnsnames.ora tnsnames.ora.`date +%Y%m%d`
[oracle@crmdb1 admin]$ vi tnsnames.ora
CRMDB_DG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.216)(PORT = 1525))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.217)(PORT = 1525))
(CONNECT_DATA =
(SERVICE_NAME = CRMDB)
)
)
CRMDG_DG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.225)(PORT = 1525))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.226)(PORT = 1525))
(CONNECT_DATA =
(SERVICE_NAME = CRMDG)
)
)
注意:
备库的SERVICE_NAME是CRMDG,但ORACLE_SID中配置为crmdb1/crmdb2。
3.3 同步口令文件
若是须要修改sys用户的密码,则在节点crmdb1执行如下命令后再将数据库密码文件ftp到其余crmdb2、crmdg1和crmdg2节点上。
[oracle@crmdb1 ~]$ cd $ORACLE_HOME/dbs
--1. ftp到各节点,使用主机名便于整理脚本,实际操做须要主机ip地址
[oracle@crmdb1 dbs]$ scp orapwcrmdb1 crmdb2:`pwd` #复制口令文件到crmdb2
[oracle@crmdb1 dbs]$ scp orapwcrmdb1 crmdg1:`pwd` #复制口令文件到crmdg1
[oracle@crmdb1 dbs]$ scp orapwcrmdb1 crmdg2:`pwd` #复制口令文件到crmdg2
--2. 修改口令文件名称
[oracle@crmdb2 dbs]$ mv orapwcrmdb1 orapwcrmdb2 #在节点crmdb2操做
[oracle@crmdg2 dbs]$ mv orapwcrmdb1 orapwcrmdb2 #在节点crmdg2操做
--3. 修改口令文件权限(实际经过oracle用户进行ftp不须要进行该操做)
[oracle@crmdb2 dbs]$ chown oracle:oinstall orapwcrmdb2 #在节点crmdb1操做
[oracle@crmdg1 dbs]$ chown oracle:oinstall orapwcrmdb1 #在节点crmdg1操做
[oracle@crmdg2 dbs]$ chown oracle:oinstall orapwcrmdb2 #在节点crmdg2操做
3.4 测试TNS配置有效性
全部主机进行连通性测试。
[oracle@crmdb1 ~]$ tnsping CRMDB_DG
[oracle@crmdb1 ~]$ tnsping CRMDG_DG
[oracle@crmdb1 ~]$ sqlplus sys/oracle@CRMDB_DG as sysdba
[oracle@crmdb1 ~]$ sqlplus sys/oracle@CRMDG_DG as sysdba
4 配置数据库参数
DB_UNIQUE_NAME,INSTANCE_NAME,Net Service Name相关参数配置,参考归档配置相关参数。
4.1 主库参数调整
SQL> show parameter spfile;
--1. 备份主库参数文件
SQL> create pfile='/home/oracle/crmdb.pfile' from spfile;
--2. 修改主库参数文件
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(crmdb,crmdg)';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=+CRMDBARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=crmdb';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=CRMDG_DG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=crmdg';
alter system set FAL_SERVER=CRMDG_DG;
alter system set STANDBY_FILE_MANAGEMENT=AUTO;
alter system set LOG_ARCHIVE_MAX_PROCESSES=4;
alter system set DB_FILE_NAME_CONVERT='+CRMDGDATA/crmdg/','+CRMDBDATA/crmdb/' scope=spfile;
alter system set LOG_FILE_NAME_CONVERT='+CRMDGDATA/crmdg/','+CRMDBDATA/crmdb/' scope=spfile;
--3. 重启主库进行验证
SQL> shutdown immediate;
SQL> startup;
--4. 生成当前主库参数文件,用于备库参数文件模版
SQL> create pfile='/home/oracle/crmdb.primary' from spfile;
*.audit_file_dest='/oracle/app/oracle/admin/crmdb/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.control_files='+CRMDBDATA/crmdb/controlfile/current.256.960630751'
*.db_block_size=8192
*.db_create_file_dest='+CRMDBDATA'
*.db_domain=''
*.db_name='crmdb'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=crmdbXDB)'
*.open_cursors=300
*.pga_aggregate_target=1073741824
*.processes=1500
*.remote_listener='crmdb-scan:1521'
*.remote_login_passwordfile='exclusive'
*.sessions=1655
*.sga_target=4294967296
crmdb1.instance_number=1
crmdb2.instance_number=2
crmdb1.thread=1
crmdb2.thread=2
crmdb1.undo_tablespace='UNDOTBS1'
crmdb2.undo_tablespace='UNDOTBS2'
*.fal_server='CRMDG_DG'
*.log_archive_config='DG_CONFIG=(crmdb,crmdg)'
*.log_archive_dest_1='LOCATION=+CRMDBARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=crmdb'
*.log_archive_dest_2='SERVICE=CRMDG_DG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=crmdg'
*.db_file_name_convert='+CRMDGDATA/crmdg/','+CRMDBDATA/crmdb/'
*.log_file_name_convert='+CRMDGDATA/crmdg/','+CRMDBDATA/crmdb/'
*.standby_file_management='AUTO'
4.2 主库建立STANDBY日志
ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 5 ('+CRMDBDATA') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 6 ('+CRMDBDATA') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 group 7 ('+CRMDBDATA') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 group 8 ('+CRMDBDATA') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 group 9 ('+CRMDBDATA') SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE thread 2 group 10 ('+CRMDBDATA') SIZE 52428800;
STANDBY 日志文件建立原则:
1. 每一个实例的STANDBY日志文件组大于联机日志文件组数;
2. 每一个STANDBY日志文件大小与联机日志文件大小一致;
4.3 备库参数调整
将主库生成的参数文件复制一份,做为备库参数文件的模版进行修改。
[oracle@crmdb1 ~]$ cp crmdb.primary crmdg.standby
--1. DG无关的参数
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.db_block_size=8192
*.db_name='crmdb'
*.diagnostic_dest='/oracle/app/oracle'
*.open_cursors=300
*.pga_aggregate_target=809500672
*.processes=1500
*.sessions=1655
*.sga_target=2428502016
*.log_archive_max_processes=4
*.remote_login_passwordfile='exclusive'
crmdb1.undo_tablespace='UNDOTBS1'
crmdb2.undo_tablespace='UNDOTBS2'
crmdb1.instance_number=1
crmdb2.instance_number=2
*.standby_file_management='AUTO'
--2. 目录相关参数
*.audit_file_dest='/oracle/app/oracle/admin/crmdg/adump'
*.control_files='+CRMDGDATA/crmdg/controlfile/current.260.958853369'
*.db_create_file_dest='+CRMDGDATA'
--3. 网络服务相关参数
*.db_unique_name='crmdg'
*.log_archive_config='DG_CONFIG=(crmdg,crmdb)'
*.fal_server='CRMDB_DG'
*.log_archive_dest_1='LOCATION=+CRMDGARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=crmdg'
*.log_archive_dest_2='SERVICE=CRMDB_DG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=crmdb'
*.remote_listener='crmdg-cluster01-scan:1521'
*.db_file_name_convert='+CRMDBDATA/crmdb/','+CRMDGDATA/crmdg/'
*.log_file_name_convert='+CRMDBDATA/crmdb/','+CRMDGDATA/crmdg/'
备库参数文件模版:
*.audit_file_dest='/oracle/app/oracle/admin/crmdg/adump'
*.cluster_database=true
*.compatible='11.2.0.4.0'
*.db_block_size=8192
*.db_create_file_dest='+CRMDGDATA'
*.db_name='crmdb'
*.diagnostic_dest='/oracle/app/oracle'
*.open_cursors=300
*.pga_aggregate_target=809500672
*.processes=1500
*.remote_login_passwordfile='exclusive'
*.sessions=1655
*.sga_target=4294967296
*.pga_aggregate_target=1073741824
crmdb1.thread=1
crmdb2.thread=2
crmdb1.instance_number=1
crmdb2.instance_number=2
crmdb1.undo_tablespace='UNDOTBS1'
crmdb2.undo_tablespace='UNDOTBS2'
*.db_unique_name='crmdg'
*.control_files='+CRMDGDATA/crmdg/controlfile/current.260.958853369'
*.log_archive_config='DG_CONFIG=(crmdg,crmdb)'
*.log_archive_dest_1='LOCATION=+CRMDGARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=crmdg'
*.log_archive_dest_2='SERVICE=CRMDB_DG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=crmdb'
*.remote_listener='crmdg-cluster01-scan:1521'
*.fal_server='CRMDB_DG'
*.standby_file_management='AUTO'
*.db_file_name_convert='+CRMDBDATA/crmdb/','+CRMDGDATA/crmdg/'
*.log_file_name_convert='+CRMDBDATA/crmdb/','+CRMDGDATA/crmdg/'
注意:
问题:control_files 在进行RMAN DUPLICATE完成后,会发生变化,并且DUPLICATE完成后,备库使用的spfile文件包含内存信息,所以没法做为生产spfile文件使用。
建议:将DUPLICATE后的control_files参数替换建立备库时的pfile文件中的control_files参数,并经过该pfile文件,从新建立一个新的spfile文件。
4.4 建立备库所需目录
实例启动时,须要有审计日志目录,该目录须要手工在备库的2个节点(crmdg1/crmdg2)上进行建立。
[oracle@crmdg1 ~]$ mkdir -p /oracle/app/oracle/admin/crmdg/adump
4.5 DG参数检查脚本
SET LINESIZE 160;
COL NAME FOR A30;
COL VALUE FOR A80;
SELECT INST_ID, NAME, VALUE
FROM GV$PARAMETER
WHERE (NAME IN ('cluster_database',
'db_name',
'db_unique_name',
'dg_broker_start',
'dg_broker_config_file1',
'dg_broker_config_file2',
'fal_client',
'fal_server',
'archive_lag_target',
'log_archive_max_processes',
'log_archive_config',
'log_archive_trace',
'db_file_name_convert',
'log_file_name_convert',
'remote_login_password_file',
'standby_file_management',
'redo_transport_user'))
OR (NAME LIKE 'log_archive_dest%' AND UPPER(VALUE) != UPPER('ENABLE'))
ORDER BY NAME, INST_ID;
5 备库初始化
5.1 设置备库ORACLE_SID环境变量
设置备库各节点环境变量参数ORACLE_SID与主库各节点一致。
[oracle@crmdg1 ~]$ cat /home/oracle/.bash_profile | grep ORACLE_SID
5.2 启动备库数据库实例到NOMOUNT状态
将前面编辑的crmdg.standby文件,传输到备库各节点。启动备库实例到NOMOUNT状态。
[oracle@crmdg1 ~]$ sqlplus / as sysdba
SQL> startup nomount pfile='/home/oracle/crmdg.standby';
[oracle@crmdg2 ~]$ sqlplus / as sysdba
SQL> startup nomount pfile='/home/oracle/crmdg.standby';
5.3 测试主/备库数据库链接状态
主备库全部节点都进行测试操做。
[oracle@crmdb1 ~]$ sqlplus sys/oracle@CRMDG_DG as sysdba
[oracle@crmdb1 ~]$ sqlplus sys/oracle@CRMDB_DG as sysdba
5.4 执行DUPLICATE操做复制数据库
rman target sys/oracle@crmdb_dg auxiliary sys/oracle@crmdg_dg << !
run {
allocate channel ch001 type disk;
allocate channel ch002 type disk;
allocate channel ch003 type disk;
allocate channel ch004 type disk;
allocate auxiliary channel ch005 type disk;
duplicate target database for standby from active database;
release channel ch001;
release channel ch002;
release channel ch003;
release channel ch004;
release channel ch005;
}
!
5.5 建立备库参数文件
5.5.1 备库节点1完成参数文件调整工做
[oracle@crmdg1 ~]$ sqlplus / as sysdba
--1. 查看当前的控制文件参数
SQL> show parameter control_files;
SQL> shutdown immediate;
--2. 编辑建立备库参数文件,用新的控制文件替换旧的控制文件信息
[oracle@crmdg1 ~]$ vi crmdg.standby
*.control_files='+CRMDGDATA/crmdg/controlfile/current.256.958853369'
--3. 建立新spfile文件
SQL> create spfile='+CRMDGDATA/crmdg/spfilecrmdb.ora' from pfile='/home/oracle/crmdg.standby';
--4. 建立pfile文件,链接到新的参数文件
[oracle@crmdg1 ~]$ cd $ORACLE_HOME/dbs
[oracle@crmdg1 dbs]$ rm spfilecrmdb1.ora
[oracle@crmdg1 dbs]$ vi initcrmdb1.ora
spfile='+CRMDGDATA/crmdg/spfilecrmdb.ora'
5.5.2 备库节点2完成pfile文件建立工做
[oracle@crmdg2 ~]$ cd $ORACLE_HOME/dbs
[oracle@crmdg2 dbs]$ vi initcrmdb2.ora
spfile='+CRMDGDATA/crmdg/spfilecrmdb.ora'
5.6 将备库加入到crs资源
[oracle@crmdg1 ~]$ srvctl add database -d crmdg -n crmdb -o $ORACLE_HOME
[oracle@crmdg1 ~]$ srvctl add instance -d crmdg -i crmdb1 -n crmdg1
[oracle@crmdg1 ~]$ srvctl add instance -d crmdg -i crmdb2 -n crmdg2
5.7 启动备库
[oracle@crmdg1 ~]$ srvctl start database -d crmdg
5.8 启动Active DataGuard
1. 用户oracle登录crmdg1主机取消归档日志文件追加
SQL> alter database recover managed standby database cancel;
2. 用户oracle登录crmdg1主机以real-time方式同步主数据库
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE PARALLEL 8 USING CURRENT LOGFILE DISCONNECT FROM SESSION;
SQL> SELECT OPEN_MODE FROM GV$DATABASE;
3. 观察日志追加状态
SQL> SELECT thread#,max(sequence#) from v$archived_log where applied='YES' GROUP BY THREAD#;
SQL> select * from v$archive_gap;