关于国产数据库的归档那些事
什么是归档
数据库可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。
设置归档
方法1:修改dm.ini的ARCH_INI=1
配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/DSC/ARCH/DSC02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 1024
ARCH_INCOMING_PATH = /home/dmdba/data/DSC/DSC02/arch_remote
配置中比较重要的参数
ARCH_TYPE:LOCAL/REMOTE/REALTIME/TIMELY/ ASYNC、分别表示本地归档/远程归档/实时归档/即时归档/异步归档
ARCH_FILE_SIZE:单个归档日志的大小,缺省为 1024MB,即 1G
ARCH_SPACE_LIMIT:归档空间的上限,0是无限的
ARCH_TIMER_NAME :定时器名称,仅对异步归档有效
重启数据库,才能生效
方法2:
SQL> alter database mount;
SQL> alter database add archivelog 'type=local,dest= /home/dmdba/data/DSC/arch,file_size=64,space_limit=10240';
SQL>
SQL> alter database open;
SQL>
校验归档
1.Select * from V$archived_log;
ARCH_TYPE是归档类型
FIRST_CHANGE#
日志文件所记录日志的最小 LSN 值
NEXT_CHANGE#
日志文件所记录日志的最大 LSN 值
FIRST_TIME
日志文件所记录的日志的起始时间
NEXT_TIME
日志文件所记录的日志的截止时间
2.命令行工具校验归档
./dmrachk
遇到的问题
1.环境是主备
归档权限是root权限
报错信息:
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_open at (/data/jq/trunc_ent/dta/fil.c: 2905) error! desc: Permission denied, path: /home/dmdba/stzh/dmarch/ARCHIVE_LOCAL1_20200603094620899_0.log, code: 13
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_open at (/data/jq/trunc_ent/dta/fil.c: 2905) error! desc: Permission denied, path: /home/dmdba/stzh/dmarch/ARCHIVE_LOCAL1_20200603094620899_0.log, code: 13
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_open at (/data/jq/trunc_ent/dta/fil.c: 2905) error! desc: Permission denied, path: /home/dmdba/stzh/dmarch/ARCHIVE_LOCAL1_20200603094620568_0.log, code: 13
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_open at (/data/jq/trunc_ent/dta/fil.c: 2905) error! desc: Permission denied, path: /home/dmdba/stzh/dmarch/ARCHIVE_LOCAL1_20200603094620899_0.log, code: 13
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_write_by_offset [pwrite] error! handle: 14, offset: 0, bytes_to_write: 4096, bytes_writen:-1, code: 9, desc: Bad file descriptor
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_trunc [ftruncate] error! handle: 14, offset: 1091072, code: 22, desc: Invalid argument
2020-06-03 09:48:52.442 [INFO] database P0000002736 main_thread rfil_close_low set arch rfil[/home/dmdba/stzh/dmarch/ARCHIVE_LOCAL1_20200603094620899_0.log]'s sta to inactive, next_seq = 32793, handle = 14
2020-06-03 09:48:52.442 [ERROR] database P0000002736 main_thread os_file_write_by_offset [pwrite] error! handle: 14, offset: 0, bytes_to_write: 4096, bytes_writen:-1, code: 9, desc: Bad file descriptor
原因:归档日志权限是root的,然后dmdba一直没有权限改动,所以实例日志一直刷这个错误,然后又没有权限发送给备库,没有权限删除,然后日志刷久库就挂掉了。
2.环境是(DSC+异步备机)-718的问题
2020-07-19 01:53:31.210 [ERROR] database P0000038630 T0000000000000038670 rafil_collect_by_dsc_seqno failed, rfil(/opt/dmdb/dmarch/arch/ARCHIVE_LOCAL1_0x22E25F7A[0]_2020-07-16_17-06-13.log)->arch_seq(29557659), pkg_seq(29392774)
2020-07-19 01:53:31.210 [ERROR] database P0000038630 T0000000000000038670 rarch_sync_process, rafil_collect_by_dsc_seqno failed, code=-718
2020-07-19 01:53:31.210 [ERROR] database P0000038630 T0000000000000038670 rarch_local_arch_send, rarch_sync_process failed, code:-718!
原因:dsc节点的归档还没发成功给异步备机就被删掉了,dsc节点的实例日志报-718错误,然后可以在监视器看到异步备机的flsn不再增长。(dsc节点和异步备机服务器的性能不能相差太多)