首页 > 数据库 >PowerShell 读取 Goldengate 进程转为数组插入到sql server中

PowerShell 读取 Goldengate 进程转为数组插入到sql server中

时间:2023-01-10 12:08:44浏览次数:51  
标签:varchar oi raw server IsNull Program sql null Goldengate


在使用 oracle Goldengate 同步时,有时会忽略了ogg进程的启动。若安装 Goldengate monitor 只监控着一两个同步又没必要,所以使用脚本来进行监控查看。为便于可视化,先将 ogg 的进程运行情况存储到数据库中,再读取数据库中的数据查看。当前脚本只是把监控状态存储到数据库中,在windows 系统中使用powershell 编写。


先在数据库创建基本表结构:

create table Ogginfo(
[Program] varchar(20) null,
[Status] varchar(20) null,
[Group] varchar(50) null,
[LagAtChkpt] varchar(20) null,
[TimeSinceChkpt] varchar(20) null
)
go


将状态信息插入数据库的 powershell 脚本:

function Get-OggInfo
{
$string = "CMD /c echo Status All | E:\Gg\GGSCI"
$result = Invoke-Expression $String
$raw = $result -match "Program|MANAGER|EXTRACT|REPLICAT"
$raw = $raw -replace "Lag at Chkpt","LagatChkpt" -replace "Time Since Chkpt","TimeSinceChkpt" -replace "^[\s>]" , "" -replace "\s+" , ","
$raw | ConvertFrom-Csv
#$raw | ConvertFrom-Csv | select Program,Status,Group,LagatChkpt,TimeSinceChkpt
}


function IsNull([String]$x) {
if ($x) { "'"+$x+"'"} else { "null" }
}

$server = "kk-pc"
$database = "demodb"
$oi = Get-OggInfo
$connection = New-Object System.Data.SQLClient.SQLConnection
#$connection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;user id=$UserName;pwd=$Password"
$connection.ConnectionString = "Data Source=$Server;Initial Catalog=$database;Integrated Security=SSPI;"
$connection.Open()
$command = New-Object System.Data.SQLClient.SQLCommand
$command.Connection = $connection
foreach($i in 0..($ogginfo.length-1)) {
$sql = "INSERT INTO Ogginfo([Program],[Status],[Group],[LagatChkpt],[TimeSinceChkpt])
VALUES($(IsNull($oi[$i].Program)),$(IsNull($oi[$i].Status)),$(IsNull($oi[$i].Group)),$(IsNull($oi[$i].LagatChkpt)),$(IsNull($oi[$i].TimeSinceChkpt)))"
$command.CommandText = $sql
$command.ExecuteNonQuery()
}
$connection.Close()


完成示例:

PowerShell 读取 Goldengate 进程转为数组插入到sql server中_Data


更进一步完善:添加时间字段,windows创建定时任务执行,判断非 “running” 状态尝试重启进程等。

标签:varchar,oi,raw,server,IsNull,Program,sql,null,Goldengate
From: https://blog.51cto.com/hzc2012/6000155

相关文章

  • Azure MySQL 首次尝试
    MSSQLServer中常常看到有个功能,将数据库部署到Azure云上,如下图:一直打算测试,这次先从mysql开始,怎样使用Azure数据库云服务。微软云上有账号免费试用期——​​1元试......
  • SQL Server 2016 无域群集配置 AlwaysON 可用性组
    windowsserver2016与sqlserver2016高可用允许不许要加入AD,管理方面省了挺多操作,也不用担心域控出现问题影响各服务器了。本测试版本:windowserver2016datacenter......
  • SqlServer 凭据
    凭据是包含连接到SQLServer外部资源所需的身份验证信息(凭据)的记录。此信息由SQLServer在内部使用。大多凭据都包含一个Windows用户名和密码。利用凭据中存储的......
  • PostgreSQL(三)索引&执行计划
    索引:-------------------------------创建索引-------------------------------https://www.postgresql.org/docs/current/static/sql-createindex.htmlCREATE[UNIQUE]I......
  • PostgreSQL(二)基本语法
    数据库相关:shell符号:>pg符号:=##创建数据库,切换系统账号>su-postgres>createdbtestdb>dropdbtestdb#或者连接到数据库创建>psql>psqltestdb>psql-hlocalhost......
  • SqlServer 多服务器管理(MSSQL分布式作业管理)
    范围的多个实例的自动化管理SQLServer称为多服务器管理。使用多服务器管理可以执行下列操作:管理两台或多台服务器。在企业服务器之间安排数据仓库的信息流。若要利用......
  • PowerShell 连接 SQL SERVER/MySQL 数据库进行操作
     #配置信息$Database='DemoDB'$Server='"WIN-AHAU9NO5R6U\DOG"'$UserName='kk'$Password='123456'#创建连接对象$SqlConn=New-ObjectSystem.Data.SqlClient.S......
  • oracle ,mysql,sqlserver 挑选特定行号的纪录
    oracle:SELECT*FROMtableWHEREROWNUM<101;minusSELECT*FROMtableWHEREROWNUM<91;mysql:select*fromtablelimit5,5第一个5是开始的行号,第二个5是选择纪录......
  • mysql event 实例
    今天一网友求助,每天早上8点自动将A表中的10条数据插入B表,然后在A表中删除那10条数据。现测试功能:  有table_a和table_b表,每30秒table_a有2条数据插入到table_b表,然后删......
  • SQLServer 从xml 文件中提取节点数据到数据库中
    <?xmlversion="1.0"encoding="utf-8"?><!--editedwithXMLSpyv2010(http://www.altova.com)byfengshuai(founder)--><Root><Frame><Item><ID>0</ID><Nu......