SAP*とDDICどっちが必要?

インフラ寄りのSAPのこととか

SAP ASEで統計情報更新

全テーブルの統計情報更新をかける方法ってどうだっけ?っていつもノートを探してしまうので、ブックマークとして投稿

1757691 - How to manually update index statistics of a table - SAP ASE for Business Suite

DBACOCKPITかDB13で統計情報更新をかけたいテーブルを指定して実行することが推奨。

 

全テーブルかける場合は上記ノートに付属してるrun_update_index_stats.SARに含まれてるSQLスクリプトをisqlで実行してあげればよいです。

isqlのログインユーザはスキーマユーザ(SAPSR3)を指定しましょう。

 

なんかパフォーマンス悪いってなると、とりあえず統計情報更新すっかーってなると思うので、やっぱり全テーブル統計情報は必要ですね。

 

EBSボリュームはいくつまでストライプさせればよいのか。

gp3のデフォルトのIOPSは3000、スループットが125MiB/s(1000MBps)なので、Windowsのストライプボリュームで連結していけばいくらでも性能が上がるのか?という疑問について。

Amazon EBS 最適化インスタンスを使用する - Amazon Elastic Compute Cloud

残念ながらEC2インスタンスタイプごとに最大帯域が設定されている。

たとえば、r5.xlargeであればベースライン帯域1150MBps/最大帯域(24時間ごとに30分だけ維持できる帯域)4750MBpsなので、ディスクストライプは5個が上限となる。

 

r5.largeはベースライン帯域が650Mbpsと1000Mbpsを下回るので、EBSボリュームで帯域を設定する際は注意が必要ですね。

r5.4xlarge以上はベースライン帯域=最大帯域に設定されているのがHANAの本稼働サポート要件になっている理由なのかもしれないですね~

SOLMANシステムコピー(その2:環境準備)

システムコピー先(ターゲットシステムといいます)の準備をします。

コンピュータ名の設定

Powershellで設定可能です。設定後Windows再起動をしましょう

rename-computer [コンピュータ名]

hostsファイルの設定

続けて、hostsファイルにFQDNを登録します

notepad c:\windows\system32\drivers\etc\hosts

hostsの書式は

IPアドレス FQDN ホスト名

の順で記載しましょう。(ノートかガイドに指定があったと思います)

自ホストに対してFQDNpingが通ればOKです。

 

つづく

SOLMANシステムコピー(その3:メディア準備)

インストールに必要なツール群を準備します。昔はSAPからインストールに必要なCDを取り寄せてたのでその慣習から「メディア準備」なんて言い方をします。

本来はガイドやらノートを見て事前に必要なメディアを確かめて、ダウンロードマネージャを使って一括ダウンロード!って流れですが、今回はSWPMが要求してくるファイルを随時ダウンロードしていく方針で行きたいと思います!

Sユーザ準備

https://me.sap.com/softwarecenter

からファイルをダウンロードする権限のあるユーザを準備

 

メディアのダウンロードと展開場所の準備

50GB程度あれば安心。今回はX:¥SETUPにダウンロードと展開を行います。

 

SAPCARのダウンロードと準備

SAP専用のアーカイバーSARファイルを展開するのに必要なソフトウェア。ZIPみたいなもん。

https://me.sap.com/softwarecenter

「サポートパッケージおよびパッチ→アルファベット順の索引(A-Z)→S→SAPCAR」

からダウンロード可能。特別な理由がない限りは最新版がおすすめ。

今回はSAPCAR7.53 PL1200を使用しました。

OSごとに準備されているので、ダウンロード時にちゃんと選択しましょう。

SAPCAR

ダウンロードしたSAPCARはsapcar.exeにリネームして、メディアを展開するフォルダに移動しておきます(今回のメディア展開フォルダはX:\SETUP\にします)

 

Software Provisioning Manager(SWPM)のダウンロード

https://me.sap.com/softwarecenter

「サポートパッケージおよびパッチ→アルファベット順の索引(A-Z)→S→SOFTWARE PROVISIONING MANAGER」から入手可能。

SOLMAN7.2はNetweaver7.5ベースなのでSWPM10SPxx(NW higher than 7.0x)の方をダウンロード

SWPMダウンロード

今回はSWPM1.0 SP40 PL4を使用します。

ダウンロードしたファイルはメディアを展開するフォルダ(X:\SETUP)に移動しましょう。

SWPMの展開

SWPMを展開します

cd /d x:\setup

sapcar -xvf SWPM10SP40_4-20009707.SAR -R SWPM

SWPMは直下に大量のフォルダが展開されてしまうので-R SWPMでフォルダを作ってあげたほうがいいです。

 

つづく。

SAP ASE(SYBASE)のDBバックアップの圧縮率(compression option)

ASEのバックアップの圧縮レベル(compress level)で9と101どっちが圧縮率が高いか実験してみました。

compression = <compress_level>

0 ~ 9、100、または 101 の数字です。1 桁の圧縮レベルでは、0 は圧縮なし、9 は圧縮の最高レベルです。圧縮レベル 100 および 101 は、より高速で効率的な圧縮モードです。100 はより高速の圧縮、101 はより効率的な圧縮を行います。<compress_level> を指定しない場合、ダンプは圧縮されません。

具体的には圧縮に使うアルゴリズムの違いで0~9はZlib(LZW.26)、100,101はFastLZ(LZO)だそうです。

SOLMAN7.2のJAVA ASのDB(DBファイルサイズ:10,240MB)で圧縮率を比較した結果は下表のとおり。

compress level data size(KB) backup size(KB) rate(%)

process time(hh:mm:ss)

9 5995082 4,704,634 78% 0:14:21
100 5994298 5,133,600 86% 0:04:10
101 5994234 5,012,184 84% 0:04:20

まぁ、予想通り。

compress level=9でバックアップファイルを分割した場合の処理時間を比べてみる

stripe data size(KB) backup size(KB) rate(%) process time
1 5,995,082 4,704,634 78% 0:14:21
5 5,995,782 4,697,762 78% 0:03:18

速い!

当然、CPUとI/Oリソースとの兼ね合いを考慮に入れる必要あり。

今回使ったコマンド

データベース[ISA]のデータベースバックアップを作成する。
分割数は4、圧縮レベルは9

dump database ISA to "/backup/work/ISA_1.bak"
 at ISA_BS stripe on "/backup/work/ISA_2.bak" 
 at ISA_BS stripe on "/backup/work/ISA_3.bak"
 at ISA_BS stripe on "/backup/work/ISA_4.bak"
 at ISA_BS with compression=9

[追記]

データサイズ125GB弱のSOLMAN ABAP DBを圧縮レベル9で圧縮したバックアップファイルは47GB弱となりました。(当然マシンパワーに依存しますが)分割数5で1時間半くらいかかります。圧縮レベル100で55GB弱でした。

SAP ASEジョブスケジューラのスケジュール変更

DBA計画カレンダーで毎時間実行されるトランザクションログダンプが00:00だけ実行されず、そのあと自動的に再実行される現象が発生。

おそらくはASEのジョブスケジューラ(JSAGENT)の不具合だと思うので、00:00のジョブだけ時間をずらして対応したいのだが、DBA計画カレンダーで日次として登録した周期ジョブのスケジュールをDB13で変更しようとしても反映されないので、isqlで直接スケジュールを変更する方法を調べてみた。

ASEのジョブスケジューラのユーザガイドは下記から入手可能。

Job Scheduler ユーザガイド

まずは、ジョブ一覧取得(ローカルファイルsjob.txtに出力)

use sybmgmtdb

go

sp_sjobhelp

go > sjob.txt

出力結果が折り返されてしまう場合は、isqlのオプションに-w10000を追加するとよい。

出力結果から目的のジョブ名を特定する。

出力結果の例(毎日00:00に実行される、トランザクションダンプ)

 sjob_id:  74  name: 'SAP_JOBSCH_DMPTR_20170904115027_1'
    owner          : sapsa
    created        : Sep  4 2017 11:28AM
    state          : enabled
    job name       :  52 - 'SAP_JOB_DMPTR_20170904115027'
    schedule name  :  51 - 'SAP_SCHEDULE_DMPTR_20170904115027_1'
    server         : FSP
    -- job --------: 
    description    : SAP DBA Planning Calendar: Transaction Dump
    owner          : sapsa
    created        : Sep  4 2017 11:28AM
    properties     : shared
    -- schedule ---: 
    description    : SAP DBA Planning Calendar
    owner          : sapsa
    created        : Sep  4 2017 11:28AM
    repeating      : every day
    starttime      : 00:00
    startdate      : 05 Sep 2017

修正する

例)毎日00:00→毎日00:02

sp_sjobmodify 'sjname=SAP_JOBSCH_DMPTR_20170904115027_1','starttime=00:02,repeats=1day' 

 

SAP ASE(Sybase)のisqlでユーザストアを使った認証

isqlの認証情報でユーザストアを使う方法。

aseuserstore

登録するときの書式は下記の通り

aseuserstore set [keyname] [hostname]:[port] [username] [password]

(例)

aseuserstore set SAPSA myhost:4901 sapsa password123

isqlでキーを使ってログインする

isql -k[keyname] -X

(例)

isql -kSAPSA -X -w10000