如何在程序里得到db2 hadr的状态

如何在程序里得到db2 hadr的状态,第1张

说明:
下面的代码演示了如何利用日志还原功能,将主数据中的数据变化及时反馈到备用数据库中
备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。
--/
--首先,创建一个演示用的数据库(主数据库)
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_testmdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_testldf')
GO
--对数据库进行备份
BACKUP DATABASE Db_test TO DISK='c:\test_databak' WITH FORMAT
GO
--把数据库还原成备用数据库(演示主数据库与这个备用数据库之间的同步)
RESTORE DATABASE Db_test_bak FROM DISK='c:\test_databak'
WITH REPLACE,STANDBY='c:\db_test_bakldf'
,MOVE 'Db_test_DATA' TO 'c:\Db_test_datamdf'
,MOVE 'Db_test_LOG' TO 'c:\Db_test_logldf'
GO
--启动 SQL Agent 服务
EXEC masterxp_cmdshell 'net start sqlserveragent',no_output
GO
--创建主服务器数据训与备用服务器数据库之间同步的作业
DECLARE @jogid uniqueidentifier
EXEC msdbsp_add_job
@job_id = @jogid OUTPUT,
@job_name = N'数据同步处理'
--创建同步处理步骤
EXEC msdbsp_add_jobstep
@job_id = @jogid,
@step_name = N'数据同步',
@subsystem = 'TSQL',
@command = N'
--主数据库中进行日志备份
BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--备用数据库中还原主数据库的日志备份(应用主数据库中的最新变化
--实际应该时主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,并且备份文件应该放在主服务器和备用都能访问的共享目录中
RESTORE LOG Db_test_bak FROM DISK=''c:\test_logbak'' WITH STANDBY=''c:\test_logldf''',
@retry_attempts = 5,
@retry_interval = 5
--创建调度(每分钟执行一次)
EXEC msdbsp_add_jobschedule
@job_id = @jogid,
@name = N'时间安排',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1
-- 添加目标服务器
EXEC msdbdbosp_add_jobserver
@job_id = @jogid,
@server_name = N'(local)'
GO
--通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成
--下面开始测试是否能实现同步
--在主数据库中创建一个测试用的表
CREATE TABLE Db_testdboTB_test(ID int)
GO
--等待1分钟30秒(由于同步的时间间隔设置为1分钟,所以要延时才能看到效果)
WAITFOR DELAY '00:01:30'
GO
--查询一下备用数据库,看看同步是否成功
SELECT FROM Db_test_bakdboTB_test
/--结果:
ID
-----------
(所影响的行数为 0 行)
--/
--测试成功
GO
--最后删除所有的测试
DROP DATABASE Db_test,Db_test_bak
EXEC msdbsp_delete_job @job_name=N'数据同步处理'
GO
/===========================================================/
/--服务器档机处理说明
使用这种方式建立的数据库同步,当主数据库不可用时(例如,主数据库损坏或者停机检修)
可以使用以下两种方法使备用数据库可用。
--/
--1 如果主数据库损坏,无法备份出最新的日志,可以直接使用下面的语句使备用数据库可读写(丢失最近一次日志还原后的所有数据)。
RESTORE LOG Db_test_bak WITH RECOVERY
--2 如果主数据库可以备份出最新日志,则可以使用下面的语句。
--先备份主数据库的最新的事务日志
BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写(升级为主数据库)
RESTORE LOG Db_test_bak FROM DISK='c:\test_logbak'

前面四种:
数据库应用开发 (application development)
除了基本的SQL方面的知识,还要对开发流程,软件工程,各种框架和开发工具等等
数据库应用开发这个方向上的机会最多,职位最多,薪水一般
数据建模专家 (data modeler)
除了基本的SQL方面的知识,非常熟悉数据库原理,数据建模
负责将用户对数据的需求转化为数据库物理设计和物理设计
这个方向上在大公司(金融,保险,研究,软件开发商等)有专门职位,
在中小公司则可能由程序员承担。
商业智能专家 (business intelligence - BI)
主要从商业应用,最终用户的角度去从数据中获得有用的信息,
涉及OLAP (online analytical processing)
需要使用SSRS, cognos, crystal report等报表工具,或者其他一些数据挖掘,统计方面的软件工具
这个方面我不熟悉,不敢乱说(以免被拍砖,呵呵)
数据构架师 (Data Architect)
主要从全局上制定和控制关于数据库在逻辑这一层的大方向,
也包括数据可用性,扩展性等长期性战略,
协调数据库的应用开发,建模,DBA之间的工作。
这个方向上在大公司(金融,保险,研究,软件开发商等)有专门职位,
在中小公司或者没有这个职位,或者由开发人员,DBA负责。
前面五种:
数据库管理员 (database administrator - DBA)
数据库的安装,配置,调优,备份/恢复,监控,自动化等,
协助应用开发(有些职位还要求优化SQL,写存储过程和函数等)
这个方向上的职位相对少一些,但一般有点规模的公司还是会有这样的职位
数据仓库专家 (data warehouse - DW)
应付超大规模的数据,历史数据的存储,管理和使用,
和商业智能关系密切,很多时候BI和DW是放在一个大类里面的,
但是我觉得DW更侧重于硬件和物理层上的管理和优化。
存储工程师 (storage engineer)
专门负责提供数据存储方案,使用各种存储技术满足数据访问和存储需求,
和DBA的工作关系比较密切。
对高可用性有严格要求(比如通信,金融,数据中心等)的公司通常有这种职位,
这种职位也非常少。
性能优化工程师 (performance engineer)
专长数据库的性能调试和优化,为用户提供解决性能瓶颈方面的问题。
我知道至少IBM, 微软和Oracle都有专门的数据库性能实验室(database performance lab),
也有专门的性能优化工程师,负责为其数据库产品和关键应用提供这方面的技术支持。
对数据库性能有严格要求的公司(比如金融行业)可能会有这种职位。
因为针对性很强,甚至要求对多种数据库非常熟悉,所以职位极少。
高级数据库管理员 (senior DBA)
在DBA的基础上,还涉及上面3种职位的部分工作,具体包括下面这些:
对应用系统的数据(布局,访问模式,增长模式,存储要求等)比较熟悉。
对性能优化非常熟悉,可以发现并优化从SQL到硬件I/O,网络等各个层面上的瓶颈
对于存储技术相对熟悉,可能代替存储工程师的一些工作,
对数据库的高可用性技术非常熟悉(比如MSSQL的集群,ORACLE RAC/FailSafe, IBM的DPF, HADR等)
对大规模数据库有效进行物理扩展(比如表分区)或者逻辑扩展(比如数据库分区,联合数据库等)
熟悉各种数据复制技术,比如单向,双向,点对点复制技术,以满足应用要求。
灾难数据恢复过程的建立,测试和执行
这种职位一般只在对数据库要求非常高并且规模非常大(比如金融,电信,数据中心等)的公司需要,
而且这种公司一般有一个专门独立负责数据库的部门或组。
这种职位非常少。

说明:
下面的代码演示了如何利用日志还原功能,将主数据库中的数据变化及时反馈到备用数据库中
备用数据库的数据可以随时用于查询,但不能被更新(备用数据库只读)。
--/
--首先,创建一个演示用的数据库(主数据库)
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_testmdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_testldf')
GO
--对数据库进行备份
BACKUP DATABASE Db_test TO DISK='c:\test_databak' WITH FORMAT
GO
--把数据库还原成备用数据库(演示主数据库与这个备用数据库之间的同步)
RESTORE DATABASE Db_test_bak FROM DISK='c:\test_databak'
WITH REPLACE,STANDBY='c:\db_test_bakldf'
,MOVE 'Db_test_DATA' TO 'c:\Db_test_datamdf'
,MOVE 'Db_test_LOG' TO 'c:\Db_test_logldf'
GO
--启动 SQL Agent 服务
EXEC masterxp_cmdshell 'net start sqlserveragent',no_output
GO
--创建主服务器数据训与备用服务器数据库之间同步的作业
DECLARE @jogid uniqueidentifier
EXEC msdbsp_add_job
@job_id = @jogid OUTPUT,
@job_name = N'数据同步处理'
--创建同步处理步骤
EXEC msdbsp_add_jobstep
@job_id = @jogid,
@step_name = N'数据同步',
@subsystem = 'TSQL',
@command = N'
--主数据库中进行日志备份
BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--备用数据库中还原主数据库的日志备份(应用主数据库中的最新变化
--实际应该时主数据库备份与备用数据库的还原作业应该分别在主服务器和备用服务器上建立,并且备份文件应该放在主服务器和备用都能访问的共享目录中
RESTORE LOG Db_test_bak FROM DISK=''c:\test_logbak'' WITH STANDBY=''c:\test_logldf''',
@retry_attempts = 5,
@retry_interval = 5
--创建调度(每分钟执行一次)
EXEC msdbsp_add_jobschedule
@job_id = @jogid,
@name = N'时间安排',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1
-- 添加目标服务器
EXEC msdbdbosp_add_jobserver
@job_id = @jogid,
@server_name = N'(local)'
GO
--通过上述处理,主数据库与备用数据库之间的同步关系已经设置完成
--下面开始测试是否能实现同步
--在主数据库中创建一个测试用的表
CREATE TABLE Db_testdboTB_test(ID int)
GO
--等待1分钟30秒(由于同步的时间间隔设置为1分钟,所以要延时才能看到效果)
WAITFOR DELAY '00:01:30'
GO
--查询一下备用数据库,看看同步是否成功
SELECT FROM Db_test_bakdboTB_test
/--结果:
ID
-----------
(所影响的行数为 0 行)
--/
--测试成功
GO
--最后删除所有的测试
DROP DATABASE Db_test,Db_test_bak
EXEC msdbsp_delete_job @job_name=N'数据同步处理'
GO
/===========================================================/
/--服务器档机处理说明
使用这种方式建立的数据库同步,当主数据库不可用时(例如,主数据库损坏或者停机检修)
可以使用以下两种方法使备用数据库可用。
--/
--1 如果主数据库损坏,无法备份出最新的日志,可以直接使用下面的语句使备用数据库可读写(丢失最近一次日志还原后的所有数据)。
RESTORE LOG Db_test_bak WITH RECOVERY
--2 如果主数据库可以备份出最新日志,则可以使用下面的语句。
--先备份主数据库的最新的事务日志
BACKUP LOG Db_test TO DISK=''c:\test_logbak'' WITH FORMAT
--再在备用数据库中恢复最新的事务日志,并且使备用数据库可读写(升级为主数据库)
RESTORE LOG Db_test_bak FROM DISK='c:\test_logbak'


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13480479.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)

保存