注册
DCP学习笔记分享
技术分享/ 文章详情 /

DCP学习笔记分享

我是白。 2025/07/04 34 0 0

选择题常见知识点

配置

ARCH_SPACE_LIMIT:仅对本地归档有效,用于控制归档健使用大小
初始页大小推荐:8K
ENABLE_REMOTE_OSAUTH=0 禁用远程OS验证,只允许本机验证
RLOG_APPEND_LOGIC=2 逻辑日志操作记录所有信息
扩展数据库重做日志文件:OPEN
SQL查询结果集和PL/SQL函数结果集缓,RS_CAN_CACHE=1且USE_PIN_POOL=1或2
order by 默认asc升序。必须放在select最后
备机归档模式应配置有:本地,实时,异步归档
SVR_LOG:打开跟踪日志
下层查询中间结果较小应该启用:OUTER_JOIN_FLATING_FLAG
HUGE基本单位:文件
跳跃扫描:全选
本地归档:最多可以设置8个
查询列表最多可包含:2048个字段
ENABLE_AUDIT :2 实时侵害规则
运行时候,不可修改:RS_CACHE_TABLES

兼容

兼容db2 大小写敏感,空串与NULL不等价
兼容SQL SERVER:大小写不敏感+空串与NULL不等价

权限

视图对象权限:UPDATE、SELECT、GRANT
DB_POLICY_ADMIN包含的权限:CREATE USER、LABEL DATABASE、 SELECT ANY DICTIONARY
RESOURCE角色包含的权限有:CREATE SCHEMA、CREATE TABLE、CREATE VIEW
PUBLIC角色包含的权限:SELECT TABLE、UPDATE TABLE 、SELECT VIEW
存储对象过程权限:EXECUTE、GRANT
DB_POLICY_OPER角色包含权限有:LABEL DATABASE
DB_AUDIT_ADMIN角色包含的权限有:CREATE USER,AUDIT DATABASE
存储过程:EXECUTE,GRANT

索引

局部索引:不能用于hash,合并分区会耗时,局部索引失效,全部需要重建,仅范围分区表支持拆分分区
全文索引:必须在基表定义,可以在堆表分区表定义。
TO_CHAR和UPPER可以用作函数索引

故障状态切换、守护进程

守护进程作用不包括:控制数据守护状态,REPO日志重做,他的作用是同步
主机故障时,备机守护进程状态/备机故障时,监视器看主机守护进程:OPEN-FA-OPEN
主机故障时,监视器看主机守护状态:OPEN→STARTUP
备机故障后,重加入数据守护,主机守护进程状态变化为:OPEN-RECOVERY-OPEN

集群部署

规划

数据守护节点规划:

dwp 10.11.26.109 ---主机 dws 10.11.26.110 ---备机 dwm 10.11.26.230 ---监视器 数据守护端口规划: 数据库名 实例名 PORT_NUM MAL_INST_DW_PORT MAL_HOST MAL_PORT MAL_DW_PORT GRP1_RT_01 GRP1_RT_01 5236 45101 10.11.26.109 55101 65101 GRP1_RT_02 GRP1_RT_02 5236 45121 10.11.26.110 55121 65121 密码: Dameng_123

初始化、启动

# (IP: 10.11.26.109 实例名:GRP1_RT_01): su - dmdba # 主 /data/dm8/bin/dminit PATH=/data/dm8 INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=0 SYSDBA_PWD=Dameng_123 # 托管system服务 # 退回root权限 exit /data/dm8/script/root/dm_service_installer.sh -t DMSERVER -dm_ini /data/dm8/data/DAMENG/dm.ini -p GRP1_RT_01 # 注册服务 /data/dm8/root/dm_service_installer.sh -t dmserver -p GRP1_RT_01 -dm_ini /dm8/data/GRP1_RT_01/dm.ini # 启动 systemctl start DmServiceGRP1_RT_01.service systemctl start DmAPService.service # 备 (IP: 10.11.26.110 实例名:GRP1_RT_02): /data/dm8/bin/dminit path=/data/dm8 DB_NAME=GRP1_RT_02 INSTANCE_NAME=GRP1_RT_01 PAGE_SIZE=8 EXTENT_SIZE=16 LOG_SIZE=500 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng_123 su - root /data/dm8/script/root/dm_service_installer.sh -t dmserver -p GRP1_RT_02 -dm_ini /data/dm8/GRP1_RT_02/dm.ini # 启动 systemctl start DmServiceGRP1_RT_02.service systemctl start DmAPService.service

备份恢复

# 关机 systemctl start DmServiceGRP1_RT_01.service systemctl start DmServiceGRP1_RT_02.service # 主库执行备份 /data/dm8/bin/dmrman CTLSTMT="BACKUP DATABASE '/data/dm8/GRP1_RT_01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/data/dm8/backup'" # 从主传到备 scp -r /data/dm8/backup/ root@10.11.26.110:/data/dm8/ # 备机器执行恢复 /data/dm8/bin/dmrman CTLSTMT="RESTORE DATABASE '/data/dm8/GRP1_RT_02/dm.ini' FROM BACKUPSET '/data/dm8/backup'" /data/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dm8/GRP1_RT_02/dm.ini' FROM BACKUPSET '/data/dm8/backup'" /data/dm8/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dm8/GRP1_RT_02/dm.ini' UPDATE DB_MAGIC"

修改主库配置

# 修改主库 vi /data/dm8/GRP1_RT_01/dm.ini INSTANCE_NAME = GRP1_RT_01 PORT_NUM = 5236 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 vi /data/dm8/GRP1_RT_01/dmarch.ini (注:arch_dest备机写主机实例,主机写备机实例) [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = GRP1_RT_02 #实时归档目标实例名 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/dm8/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 vi /data/dm8/GRP1_RT_01/dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间 [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 10.11.26.109 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 55101 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 10.11.26.109 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致 MAL_DW_PORT = 65101 MAL_INST_DW_PORT = 45101 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 10.11.26.110 MAL_PORT = 55121 MAL_INST_HOST = 10.11.26.220 MAL_INST_PORT = 5236 MAL_DW_PORT = 65121 MAL_INST_DW_PORT = 45121 vi /data/dm8/data/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45331 #守护系统唯一 OGUID 值 INST_INI = /data/dm8/GRP1_RT_01/dm.ini #dm.ini 文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dm8/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 # 主库启动,mount方式 /data/dm8/bin/dmserver /data/dm8/GRP1_RT_01/dm.ini mount disql SYSDBA/Dameng_123@10.11.26.109:5236 SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL>sp_set_oguid(453331); SQL>alter database primary; SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改备库配置

B 机器里 dmmal.ini、dmwatcher.ini 与 A 机器 GRP1_RT_01 的 dmmal.ini、dmwatcher.ini 相同,参照 A 机器 dmmal.ini、dmwatcher.ini 文件进行配置。 vi /data/dm8/GRP1_RT_02/dm.ini INSTANCE_NAME = GRP1_RT_02 PORT_NUM = 5236 DW_INACTIVE_INTERVAL = 60 ALTER_MODE_STATUS = 0 ENABLE_OFFLINE_TS = 2 MAL_INI = 1 ARCH_INI = 1 RLOG_SEND_APPLY_MON = 64 vi /data/dm8/GRP1_RT_02/dmarch.ini (注:arch_dest备机写主机实例,主机写备机实例) [ARCHIVE_REALTIME] ARCH_TYPE = REALTIME ARCH_DEST = GRP1_RT_01 [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /data/dm8/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ## 修改dmwatcher.ini vi /data/dm8/data/DAMENG/dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = AUTO #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 10 #远程守护进程故障认定时间 INST_ERROR_TIME = 10 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45331 #守护系统唯一 OGUID 值 INST_INI = /data/dm8/GRP1_RT_02/dm.ini #dm.ini 文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dm8/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 vi /data/dm8/GRP1_RT_02/dmmal.ini MAL_CHECK_INTERVAL = 5 MAL_CONN_FAIL_INTERVAL = 5 [MAL_INST1] MAL_INST_NAME = GRP1_RT_01 MAL_HOST = 10.11.26.109 MAL_PORT = 55101 MAL_INST_HOST = 10.11.26.109 MAL_INST_PORT = 5236 MAL_DW_PORT = 65101 MAL_INST_DW_PORT = 45101 [MAL_INST2] MAL_INST_NAME = GRP1_RT_02 MAL_HOST = 10.11.26.110 MAL_PORT = 55121 MAL_INST_HOST = 10.11.26.110 MAL_INST_PORT = 5236 MAL_DW_PORT = 65121 MAL_INST_DW_PORT = 45121 # 启动备库,mount方式 /data/dm8/bin/dmserver /data/dm8/GRP1_RT_02/dm.ini mount SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL>sp_set_oguid(453331); SQL>alter database standby; SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

启动/注册守护服务

# root账户执行 # 启主守护进程 /data/dm8/bin/dmwatcher /data/dm8//GRP1_RT_01/dmwatcher.ini /data/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dm8/GRP1_RT_01/dmwatcher.ini # 启备守护进程 /data/dm8/bin/dmwatcher /data/dm8/GRP1_RT_02/dmwatcher.ini /data/dm8/script/root/dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /data/dm8/GRP1_RT_02/dmwatcher.ini # 如需删除重建 /data/dm8/script/root/dm_service_uninstaller.sh -n DmServiceGRP1_RT_01 /data/dm8/script/root/dm_service_uninstaller.sh -n DmWatcherServiceWatcher

在第三台机器配置监视器

如无资源,可使用备机器配置监视器

vi /data/dm8/bin/dmmonitor.ini

/data/dm8/script/root/dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /data/dm8/bin/dmmonitor.ini MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切) MON_LOG_PATH = /dm8/data/log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB [GRP1] MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 10.11.26.109:5326 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT MON_DW_IP = 10.11.26.110:5326 进入终端 ./dmmonitor path=/data/dm8/data/DAMENG/dmmoitor.ini

# 主从同步测试
```bash
# 主机器
set schema xxx;
create table t1(id int);
insert into values(1);
commit;
# 从机器
set schema xx;
select * from t1;

主备切换

切换操作
进入监视器

# 查看当前状态 show # 切换 switchover # 登录 login sysdba Dameng_123 # 确认切换 switchover # 确认切换后情况 show 如下图 10.11.26.109 为standby, 110 为primary # 切换回去 switchover # show 确认是否109为primary ,110 为standby

关停顺序

1、关闭监视器
2、关闭备库守护进程
3、关闭主库守护进程
4、关闭主库实例
5、关闭备库实例

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服