2008年2月28日木曜日

INS64

■ISDN(Integrated Services Digital Network
・デジタル回線網。
・ITU-T(電気通信標準化部門)によって定められた世界共通の規格。
・モデムで接続する既存の公衆交換電話網をデジタル化する事で高速で高品質な回線サービスを提供。
・INSネットはISDN規格のNTTが提供するサービス(商品)名称。
・「INSネット64」は、従来の電話線をそのまま利用してディジタル伝送を行う。
・「INSネット1500」は、光ファイバーを敷設して、最大1536kbit/sという高速通信を実現する。
・電話サービスと違い、デジタル信号を回線へ流す前にアナログ化せず、デジタル信号のままでデータ転送を行う。
・デジタル信号方式により、物理的には1本の回線で、論理的に複数の回線(チャネル)を使用可能になった。
Bチャネル(情報チャネル)
・64kbit/s × 2本
・文字、画像、音声などの情報のやり取りに使用。
・インターネットをしながら電話が可能。
Dチャネル(信号チャネル)
・16kbit/s × 1本
・通信制御信号のやり取りに使用。

weblogicドメイン

■ドメインとは?
管理ドメイン
・WeblogicServerリソースの論理的に関連したグループ。
管理サーバ
・ドメイン内の特殊なインスタンス。
・メイン内のすべてのリソース(管理対象サーバを含む)を一元的にコンフィグレーション及び管理する。
・webアプリケーション、EJB、その他のリソースは管理対象サーバにデプロイし、管理サーバはコンフィグレーションや管理目的にのみ使用する。
・複数の管理対象サーバをクラスタにグループ化し、ロードバランシングフェイルオーバを利用できる。

・weblogicServerのシステム管理はJ2EE Managementモデルに基づく。
・各インスタンスをJ2EE管理対象オブジェクト(JMO)によって表現する。
 (JMO:MBeanの返り値を渡すためのプログラム(ラッパー))
 JMXを使用するか、WeblogicConsoleを使用する事でMBeanにアクセスし、管理タスクを実行する。

■ドメイン構成
・ビジネス上のニーズによって異なるドメイン構成を行う。
  アプリケーションの論理的区分
  物理的な場所
  管理サイズ
・1つの管理サーバと1つまたは福すの管理対象サーバ構成、管理サーバででプロイされたアプリケーションを実行するスタンドアロンサーバ構成どちらとも可能。

■ドメイン構成
管理サーバ
・各ドメインには管理サーバとして機能する1つのサーバインスタンスが必要。
・管理対象サーバを起動するには管理サーバの起動が必要。
 管理対象サーバは管理サーバにアクセスしコンフィグレーション情報を取得する。
・管理サーバが起動するとconfig.xmlファイルがロードされ、ドメインのconfigディレクトリのサブディレクトリにある、他のコンフィグレーションファイルを参照する。
 (BEA_HOME/user_projects/domains/mydomain/config)
・管理サーバが正常に起動するたびに、config-booted.jarファイルが作成されるので、インスタンス有効期間中にコンフィグレーションファイルが破損した場合は、このファイルを使用して以前のコンフィグレーションの復元が可能。

・管理サーバに障害が発生してもドメイン内の管理対象サーバの動作には影響しない。
・ドメインコンフィグレーションでサポートされているロードバランシグ、フェイルオーバ機能を利用する。
・管理サーバが動作していない環境でも管理対象サーバの起動が可能。
 (起動コンフィグレーションとしてコンフィグレーションのローカルコピーを使用する)

■リソース・サービス
・ドメイン内にはデプロイされたアプリケーションで必要となるリソースとサービスも含まれる。
<ネットワーク環境情報>
 マシン定義
  ノードマネージャが障害の発生した管理対象サーバを再起動する際などに使用する。
 ネットワークチャネル
  デフォルトのポート、プロトコル、プロトコル定義で使用するオプションのリソース。
<アプリケーション関連づけられた情報>
 

2008年2月27日水曜日

solarisシステム間でのIPsecの実装

1.root権限にて対象端末に接続。

2.各システムのホストエントリーを追加。
/etc/inet/hosts

3.各システムでIPsecポリシーファイルを作成。
/etc/inet/ipsecinit.conf

4.IPポリシーエントリをipsecinit.confファイルに追加。

5.2つのシステム間にIPsecSAペアを追加。
 ※IKEを設定する事でSAが自動で生成。

<IKE設定方法>
①各システムで/etc/inet/ike/configを作成。
#cp /etc/inet/ike/config.sample /etc/inet/ike/config

②各システムにて、規則とグローバルパラメータをike/config ファイルに入力。

-----------------------------------------------------------------------
## The rule to communicate with partym
# Label must be unique
{ label "enigma-partym" --設定名
local_addr 192.168.116.16 --自ホストのIPアドレス
remote_addr 192.168.13.213 --相手ホストのIPアドレス
p1_xform
{ auth_method preshared oakley_group 5 auth_alg md5 encr_alg 3des }
p2_pfs 5
}
-----------------------------------------------------------------------

③各システムにてファイルの有効性を確認。
#/usr/lib/inet/in.iked -c -f /etc/inet/ike/config

④キー情報の乱数を生成。
#od -X -A n /dev/random | head -2

⑤上記出力から1つの鍵を作成。
※認証アルゴリズムでMD5を使用する場合はハッシュサイズの128ビット(32文字)を使用する。

⑥各システムにて/etc/inet/secret/ike.preshared ファイルを作成。
 各ファイルに事前共有鍵を書き込む。

6.システムのリブート。
#init6

7.パケットが保護されている事を確認。

IPsec

「IPsec」とは?
・SSLなどの特定のアプリケーションでの暗号化ではなく、通信を暗号化するために考えられた仕組み。
・暗号化をIPプロトコルレベルで実装し、ホストごとのセキュリティを確保することを目的とする。
・インターネットを使用したVPNの構築に使われている。

■「暗号化」とは?
・暗号鍵を通信相手同士で交換し、送信側にて暗号鍵を使って暗号化し、受信側にて暗号鍵を使って複合化を行う。
・暗号鍵の計算方式の違いによって各種暗号化方式のバリエーションが存在している。

■暗号通信の種類
「共有鍵暗号方式」
 ・暗号化と復号化で同じ暗号鍵を使用する。
 ・鍵の生成は送信側/受信側どちらでもよい。
 ・鍵を通信相手同士で共有するため、鍵の受け渡しの途中で外部に漏れた場合は秘密が守れなくなる。
 ・DES(Data Encryption Standard)
「公開鍵暗号方式」
 ・暗号化と復号化で別々の暗号鍵を使用する。
 ・受信側で「秘密鍵」と「公開鍵」生成し、公開鍵を相手側へ渡す。
  送信側は公開鍵を使用して暗号化を行い受信側へ送信する。
  受信側で「秘密鍵」にて復号化を行う。
  (公開鍵で暗号化されたものは、秘密鍵でないと復号化できない)
 ・RSA

■暗号化の問題点
・暗号化は「機密性」を満たすだけで、通信内容を隠すだけの役割しかない。
 セキュリティを考えると、「完全性の確保」と「認証」という条件を満たす必要がある。
・「完全性の確保」とは通信内容が通信途中で改変されることなく、通信相手に届く事が保障される事。
・「認証」とは通信相手が確かに意図した相手本人であるかが保障される事。
・暗号鍵が第三者に漏れてしまうと暗号化の意味がなくなってしまう。

■IPsecの仕組み
・暗号化通信方式の標準規格である。
 →利用する暗号化アルゴリズムは特定せず、あらゆる暗号を利用できるような柔軟な枠組みを提供。
・暗号化方式として共有鍵暗号化方式を採用している。
 →公開鍵より暗号化、復号化の速度が高速なため。

①通信時に使用する暗号化アルゴリズムと暗号鍵は事前に手動で設定する。
 (もしくは、通信相手との事前折衝の段階で決定する。)
 →こられの決定をSA(Security Association)という。
SPI(Security Pointer Index)の32ビット整数値の割り当ての実施。
 →通信内容がどのような暗号化アルゴリズムで、どの暗号鍵を使うかといったガイドラインとなる情報。
 →複数の相手とそれぞれ異なる暗号化アルゴリズム、暗号鍵による通信を実施する場合に、SPIの検索キーを使って必要な情報を引き出す。

■鍵交換に使用するプロトコル「IKE(Internet Key Exchange)
・SAの合意を自動的に行うことが可能な鍵交換プロトコル。
・鍵交換の段階で内容が漏れては意味がないので、IKE自体で暗号化通信をサポートしてる。
 鍵生成に「Diffie―Hellman」という方式を利用し、IKEの暗号通信を実施。

■データ転送に利用するプロトコル「ESP(Encapsulating Security Payload)
・暗号化された通信内容にSPI、シーケンス番号、認証データの3つの情報を付加しESPと呼ばれる入れものにパックする。
「トランスポート・モード」
 IPパケットで運ぶデータ部分のみを暗号化し、宛先情報のIPヘッダをつけて送信する。
「トンネル・モード」
IPヘッダとデータ部分をまとめて暗号化したうえで、新たにIPヘッダを再度つけ直して送信する。

■認証データ「MAC(Message Authentication Code)
・通信内容とパスワードを合わせたものに対して、ハッシュ関数と呼ばれる計算方法による演算を施した計算結果の事。
 (IPsecでは、ハッシュ関数としてMD5アルゴリズムを使用したメッセージ・ダイジェストを使用している)
・パスワードは事前に通信相手同士にて交換を行う。
・MAC内のデータと、事前のパスワードにより受信側でも計算を実施し、受け取ったMACと比較して相違があれば改ざんされている事になる。

■完全性の保証と認証のためのプトロコル「AH(Authentication Header)
・データの暗号化は行わず、SPI、シーケンス番号、認証データのみをパックして通常のIPパケットの中に加える。(ESPと同じ役割)
・暗号化通信が使えないというケースのために使われている仕組み。

2008年2月26日火曜日

solarisセキュリティ2

■コンピュータへのアクセス制御
「物理的なセキュリティー管理」
・入退室管理
・サーバラックへの施錠
・PROMへのパスワードの設定

「ログイン制御管理」

・アカウントへのパスワードの設定

「パスワード情報管理」

・有効期限の設定
・アカウントロックアウト
・パスワード暗号化
 /etc/security/policy.confに暗号化アルゴリズムを指定

「デバイスアクセス制御」
・デバイスポリシー
 デバイスへのアクセスを行うプロセスについて特定の権限を必要条件とする。
・デバイス割り当て
 承認されたユーザーにだけデバイスの使用を限定する。

「リソースへのアクセス制限」
・役割によるアクセス制御
 役割ごとに権限を分散し、権限の集中を回避する。
・PATH変数の設定
 正しいPATH変数を設定する事によりトロイの木馬の実行を防ぐ。
 自動セキュリティー拡張ツール(ASET)は起動ファイルのPATHが正しいか調べる。
・制限付きシェルの割り当て
 /usr/lib/rshコマンド。
・ファイルへのアクセス制限
 ファイル権限とアクセス制限リスト(ACL)
・自動セキュリティー拡張ツール(ASET)
・Solaris Security Toolkit
 ASETより柔軟で拡張性のあるメカニズム。
・Solarisリソース管理機能
・Solarisゾーン
・ファイルの整合性監視
 基本監査報告機能(BART)

「ファイルアクセス制御」
・ファイル暗号化
 digest、mac、encryptファイル保護コマンド。
・アクセス制限リスト(ACL)

「ネットワークアクセス制御」
・IPsec
・Kerberos
・リモートログインコマンド
・Solaris Secure Shell


solarisシステム管理者

inetd

そもそもサーバとは?
・クライアントに対してサービスを提供するもの。クライアントから要求があった場合にそれを受け付けて処理をしなければならない。
→クライアントからのサービス(特定のポート)へのアクセスを見張っているプログラムがサーバになる。

しかし、いろんなサーバーがそれぞれのポートを見張るためだけに起動していると、メモリやCPUなどのリソースを必要としてしまう。
それを避けるために1つのプロセスでいろんなポートを見張っていて、クライアントからの通信が来た時に初めてサーバを起動する仕組みがある。
この役割を行ってくれるのが『inetd』/etc/inetd.confの設定ファイルを基に動作している。

※コネクションが終了するとサーバプロセスも停止してしまうので、sendmailやhttpdのような実行速度を重視するサーバは自前でのポート監視を実装している。

FTPでの制限

■ユーザー毎のFTPの使用を制限
・/etc/ftpd/ftpusersファイルへFTPサーバへのアクセスを拒否するユーザーを列挙する。

■ホスト単位でのFTPアクセスの制限
・/etc/ftpd/ftphostsに複数のホストからFTPサーバ上の複数のアカウントへのログインを許可、拒否。

■classによるFTPの制限
・/etc/ftpd/ftpaccessにclassによるユーザーの定義を行い、class単位での制限を実施する。
①classの定義
class クラス名 ユーザー種類[匿名ユーザー|ゲストユーザー|実ユーザー] アクセス元
例)
class local anymous,guest,real 192.168.1.0/24
→192.168.1.0のセグメントからアクセスしてきた匿名、ゲスト、実ユーザーlocalクラスとして定義する。

②ログイン可能ユーザー数、時間の制限
limit クラス名 ユーザー数 接続可能時間 メッセージファイル
例)
limit local 50 Wk0800-1800 /var/ftp/message
→毎週勤務時間でのlocalクラスに属するユーザーからの同時ログイン数を50に制限する。
 ログイン制限数に達した場合は/var/ftp/messageファイルの内容が表示される。

③ログイン試行回数の制限
loginfails 試行回数
例)
loginfails 5
→ログイン試行に5回失敗するとFTPから切断され、メッセージがsyslogファイルへ記録される。
 

2008年2月25日月曜日

Windowsファイル共有

「ネットワーク共有を設定しているのに、ファイル共有接続ができない!!」

■匿名アクセス
ファイルサーバ側でゲストアカウントを有効にし、Guestのパスワードを空に設定しておくと、クライアントからユーザーアカウントとパスワードを指定しなくても、サーバに接続し、Guest権限でファイルにアクセスできる機能。
→Guest権限のため権限制限はあるがファイルの受け渡しなどは十分利用可能。

■IPC$(Inter-ProcessCommunicatuin):プロセス間通信
Windows根とワークにおいて、そのマシンの公開リソースの一覧を取得したり、以後のリソースの使用に対する準備を行うために使われる。

2008年2月24日日曜日

solarisセキュリティ

■OpemBootのセキュリティレベルを変更
noe
 パスワード必要無し。デフォルトの設定。
command
 bootおよびgoをのぞく全てのコマンドについてパスワードが必要。
full
 goを除く全てのOpenBootコマンドにてパスワードが必要。

<パスワード設定>
・rootでの設定方法
 #eeprom security-passwd
・OpenBootでの設定方法
 ok passwd

<セキュリティモード変更>
・rootでの設定方法
 #eeprom security-mode=command
・OpenBootでの設定方法
 ok setenv security-mode full

■ファイルシステムのセキュリティ
・ファイルの削除はそのファイルので権限ではなく、ファイルが存在するディレクトリの権限に依存する。
・SetUID(SetGID)
 ファイルがプログラムの場合のみ有効。
 たとえ誰がそのプログラムを実行しようと、プログラムが特定のユーザであるように見せる。
 一定のプログラムしか一定の情報にアクセスすることを許可しない場合に有用される。

■ファイルシステム監査ツール
ASET(Automated System Enhancement tool)
 パーミッション設定やシステムファイルの内容をチェックするパッケージ。
 脆弱性を調べ、レポートを出力する。
 リリースメディアに含まれる。(SUNWastパッケージ)
 #pkginfo | grep SUNWast

fuserコマンド
 どのプロセスがファイルを開いているかを確認する。
 PID+状態
 <状態の種類>
  c:プロセスのカレントDIR
  r:プロセスのrootDIR
  o:普通のオープンされているファイル
  m:メモリにマップされているファイル
  t:テキストファイル

■ユーザアカウント、環境
・必要のないPATHは環境変数として設定しない。

・アカウントパスワードパラメータ
 /etc/default/passwd
・rootでの直接ログインを防ぐ
 /etc/default/login
 CONSOLE=/dev/null
・suコマンドのログ
 /etc/default/su
 SULOG=/var/adm/sulog 書き込むログファイルを指定
 SYSLOG=YES syslogにも記録するかどうかを指定
 CONSOLE=/dev/console どのスクリーンにsuのメッセージを表示するか指定
 PATH=/usr/bin: 新しいユーザのシェルのデフォルトパスを指定
 SUPATH=/usr/sbin:/usr/bin rootに変更した場合のパスを指定
・プロンプトへのユーザ名の表示
 .login
 set prompt="`uname -n` #"
・制限つきシェル
 /usr/lib/rsh(Bourneシェル)、/usr/bin/rkshの二つは制限つきシェルが使える。
 ディレクトリの移動ができない、PATH環境変数が変更できない、リダイレクトが使えないなど。

■cronの制御
・/etc/cron.d/cron.allow
 crontabの使用を許可するユーザーリスト
・/etc/cron.d/cron.deny
 crontabの使用を許可しないユーザーリスト
→リストされたユーザーIDでのcronジョブの実行か可能だが、リストの参照、変更処理を行えないため、セキュリティが向上する。

・実行シェル内部に不要なPATHを設定しない。
→コマンド同じファイルを用意し、わざと実行させる(トロイの木馬)攻撃を防ぐ。
 内部で実行するコマンドはひとつひとつ変数として定義する方が安全性が高い!!

■各種システムログ
syslog
・UDP514番を使用する。
loginlog [/var/adm/loginlog]
・ログイン試みが6回失敗するとログを出力。
・/var/adm/loginlogを作成する。
sulog [/var/adm/sulog]
・suコマンドの試みを全て出力。
wtmpx [/var/adm/wtmpx]
・ユーザーのログイン、ログアウト、システム再起動情報を出力。
・lastコマンドにて内容を確認できる。
vold.log [/var/adm/vold.log]
・VolumeManagerのログを出力。

logcheckツール
・キーワードが登録されているフィルタファイルを用い、記録するログにキーワードが含まれているとメッセージを送る。
・必要な間隔でcronから起動される。

■不要なサービスの停止
<設定ファイル>
/etc/inet/services
 ポートタイプとポート番号をサービス名と関連付ける。
 サービス名 ポート番号/プロトコル サービス別名
/etc/inetd.conf
 システムが提供する各ネットワークサービスを結びつける。
 サービス名 ソケットタイプ プロトコル {wait|nowait} サービスを実行させているユーザ名 サービスパス プログラム引数
 

2008年2月22日金曜日

STATSPACK~メモリの見積もり~

■Buffer Pool Advisory
データベースバッファキャッシュの適切なサイズを見積もるために必要な情報。

Size For Est (M)
 見積もりキャッシュサイズ(MB)
Size Fctr
 現キャッシュサイズに対するサイズ比率 ※1.0が現在の値
Buffers for Estimate
 測定用のキャッシュサイズ(バッファ単位)
Est PhysicalRead Factor
 このキャッシュサイズに対する物理読み込み要因。
 実際のキャッシュ内の読み込み回数を見積もった物理読み込み回数の割合。
Estimated Physical Reads
 このキャッシュサイズで見積もった物理読み込み回数

**************************************************************************
Buffer Pool Advisory for DB: TEST Instance: TEST End Snap: 38
-> Only rows with estimated physical reads >0 are displayed
-> ordered by Block Size, Buffers For Estimate

Size for Size Buffers for Est Physical Estimated
P Estimate (M) Factr Estimate Read Factor Physical Reads
--- ------------ ----- ---------------- ------------- ------------------
D 48 .1 5,955 3,142.88 73,408,214
D 96 .2 11,910 9.60 224,282
D 144 .3 17,865 1.84 43,022
D 192 .4 23,820 1.16 27,062
D 240 .5 29,775 1.00 23,357
D 288 .6 35,730 1.00 23,357
D 336 .7 41,685 1.00 23,357
D 384 .8 47,640 1.00 23,357
D 432 .9 53,595 1.00 23,357
D 480 1.0 59,550 1.00 23,357
D 528 1.1 65,505 1.00 23,357
D 576 1.2 71,460 1.00 23,357
D 624 1.3 77,415 1.00 23,357
D 672 1.4 83,370 1.00 23,357
D 720 1.5 89,325 1.00 23,357
D 768 1.6 95,280 1.00 23,357
D 816 1.7 101,235 1.00 23,357
D 864 1.8 107,190 1.00 23,357
D 912 1.9 113,145 1.00 23,357
D 960 2.0 119,100 1.00 23,357
-------------------------------------------------------------
**************************************************************************


SQL> show parameter db_cache_advice

NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_cache_advice string ON


SQL> desc v$db_cache_advice;
名前 NULL? 型
----------------------------- -------- --------------------
ID NUMBER
NAME VARCHAR2(20)
BLOCK_SIZE NUMBER
ADVICE_STATUS VARCHAR2(3)
SIZE_FOR_ESTIMATE NUMBER
SIZE_FACTOR NUMBER
BUFFERS_FOR_ESTIMATE NUMBER
ESTD_PHYSICAL_READ_FACTOR NUMBER
ESTD_PHYSICAL_READS NUMBER

SELECT SIZE_FOR_ESTIMATE EST_SIZE,
BUFFERS_FOR_ESTIMATE EST_BUFFERS,
ESTD_PHYSICAL_READ_FACTOR PHYSIC_FACT,
ESTD_PHYSICAL_READS PHYSIC_READS
FROM V$DB_CACHE_ADVICE
WHERE NAME = 'DEFAULT'
AND BLOCK_SIZE = '8192';

2008年2月21日木曜日

トークン

トークンとは?

ネットワーク上でデータを送信する事ができる権利情報が入った特殊なデータ。
ワンタイムパスワードの生成器という意味もある。

・アクセストークン
ドメイン環境にてログオン時に、ユーザーのユーザー情報(アカウント、パスワード)のアクセストークンを生成し、ドメインコントローラへ情報を送信する。

2008年2月1日金曜日

時刻同期

■solaris9時刻変更手順

1.シングルモードで再起動
 #sync;sync;sync
 #shutdown -i0 -g0 -y
 ok boot -s

2.日付変更
<日付変更方法①>
 dateコマンド
  #date 020118002008
  →2008年2月1日18時00分に設定
<日付変更方法②>
 ntpdateコマンド
  ※NTPサーバ設定を行っている場合のみ
  #ntpdate -b ←システム時刻を設定する。
  #ntpdate -q ←時刻のみ問い合わせ。

3.時刻確認
 #date

■NTPについて

デーモン

 xntpd

設定ファイル
 /etc/inet/ntp.conf
 -----------------------------------------
 #multicastclient 224.0.1.1
 server 192.168.129.16 ←NTPサーバアドレス
 driftfile /var/ntp/ntpstats/ntp.drift ←「ntp.drift」誤差調整用
 -----------------------------------------

コマンド

 #ntptrace ←NTPサーバへの疎通確認

その他
 ①ポーリング間隔
  ・時刻同期間隔はだんだんと広がって行く。
  #server 192.168.44.169 minpoll 6 maxpoll 6 ←ポーリング間隔を6(64秒)に指定。
   (指定値はビット数。デフォルト値[minpoll:6(64秒),maxpoll:10(1024秒)])

EXCELでの相関予測

傾き
 「=LINEST(既知のy,既知のx,TRUE)」
Y切片
 「=INDEX(LINEST(既知のy,既知のx,TRUE),2)」
相関関係
 「=CORREL(既知のy,既知のx)」

 「Y切片+傾き×n」

2008年1月31日木曜日

実行したSQL文を保存

SAVEコマンド
・SQLバッファの内容をファイルに保存する。

<構文>
SAVE <ファイル名> [REP | APP]
 REP:置換
 APP:追記

2008年1月25日金曜日

samba:ドメインコントーラの設定

■ドメインコントローラとして機動させるためのsmb.confの設定パラメータ

os level = 32
 ローカルマスターブラウザ(LMB)機能を提供する先の優先順位を決める。
 PDCと構成する場合は"32"以上を設定。
preferred master = yes
 sambaデーモン起動時にLMB機能を選定する処理の実行を設定。
 ドメインコントローラはLMB機能を提供する必要があるため"yes"を設定。
domain master = yes
 異なるサブネット間でブラウザリストを交換するためのドメインマスターブラウザ(DMB)機能の提供。
domain logons = yes
 ドメインログオン機能を提供。
passdb backend = ldapsam
 アカウント情報を管理するバックエンドデーターベース形式の指定。
 smbpasswd,tdbsam,ldapsamなど。
admin users = Administrator
 ドメイン管理者アカウントの設定。
 Windowsクライアントをドメインに参加させるにはドメイン管理者のユーザー名とパスワードが必要。
logon home
 ドメインログオンするユーザーのホームディレクトリを指定。
logon drive = "Z:"
 ログオンユーザーのホームディレクトリのドライブレターを指定。
logon path = \\%L\Profiles\%U
 移動プロファイルの格納場所を指定。
logon script = logon.bat
 ログイン時の実行スクリプトを指定。
 NETLOGON共有ディレクトリに配置。
 
■ドメインサーバーログインの流れ

①ユーザー作成
※ドメイン管理者は必ず作成。
#useradd -s /bin/false test -- OS側ユーザー追加
#pdbedit -a test -- sambaユーザ追加
new password:
retype new password:

②ユーザー一覧表示
#pdbedit -L (-w)

③マシンアカウント登録
#useradd -d /dev/null -s /bin/false testhost$ -- "マシン名$"で登録
#pdbedit -a -m testhost -- "m"オプションを追記

④クライアント端末よりドメイン実施

■samba+ldap構成の流れ
ldap設定ファイル作成(/etc/openldap/slapd.conf)

①スキーマの設定
②suffixの設定
 ツリー構造の頂点の設定
③管理者ユーザーの設定
 rootdn・・・LDAPサーバを管理する特権ユーザー
 rootpw・・・特権ユーザのパスワード
④アクセス制限の設定

■samba+LDAP用設定パラメータ
ldap suffix = "dc=test,dc=com"
 slapd.confと同じsuffixを指定。
ldap user suffix = "ou=People"
 Sambaユーザー情報を格納するLDAPツリーの指定。
 ldap suffixを基準にした相対位置。
ldap group suffix = "ou=Group"
 sambaグループ情報を格納するLDAPツリーの指定。
 ldap suffixを基準にした相対位置。
ldap machine sufix = "ou=Computer"
 マシンアカウント情報を格納するLDAPツリーの指定。
 ldap suffixを基準にした相対位置。
ldap admin dn = "cn=administrator,dc=test,dc=com"
 LDAPから情報を取得する際のLDAP管理者権限ユーザー。
 rootdnと同じ値を設定。
 ※パスワードについては"smbpasswd -w"にてsamba側に設定しておく。
ldap passwd sync = yes
 Windows用パスワード(sambaで設定したパスワード)とLinuxユーザーパスワードを同期する。

■参照サイト

2008年1月24日木曜日

SGA管理

DB_BLOCK_SIZE
 ブロックサイズ。
DB_BLOCK_BUFFERS
 バッファキャッシュ内のデータベースバッファ数。
DB_CACHE_SIZE
 バッファプールサイズ。
DB_nK_CACHE_SIZE
 複数のブロックサイズを使用する際の、ブロックサイズ毎のキャッシュサイズ。

 ~バッファキャッシュサイズを決める場合、下記の二通りがある。~
  ①db_block_buffers × db_block_size
  ②db_cache_size

JAVA_POOL_SIZE
 javaプールサイズ。(Javaオブジェクト及びその他のJava実行メモリー)
SHARED_POOL_SIZE
 共有プールサイズ。(SQL及びPL/SQLの実行のメモリー割り当て)
 内部SGAオーバヘッド(その他の初期化パラメータにて割り当てられるメモリー)を含む。
 
◎グラニュル
SGA内の領域割り当て単位。
 <サイズ>
 ※一般的なプラットフォームでの値。
  SGAの合計サイズが1GB以下:4MB
  SGAの合計サイズが1GB以上:16MB

SGA_MAX_SIZE
 SGAの最大サイズ。
SGA_TARGET
 SGAサイズ自動管理。
 <自動管理対象>
  共有プール [shared_pool_size]
  ラージ・プール [large_pool_size]
  Javaプール [java_pool_size]
  バッファ・キャッシュ [db_cache_size]
  Streamsプール [streams_pool_size]
 <手動設定>
  ログ・バッファ [log_buffer]
  KEEPバッファ・キャッシュ [db_keep_cache_size]
  RECYCLEバッファ・キャッシュ [db_recycle_cache_size]
  非標準ブロック・サイズ・バッファ・キャッシュ [db_nk_cache_size]


■共有サーバプロセス
クライアントからの接続要求をリスナーが受けとると、接続要求タイプに基づき、適切なサービス・ハンドラ(ディスパッチャ、専用サーバープロセス)を判断。転送先のサービスハンドラ利用状況をサービス登録(PMONから提供される)から確認し、要求を転送する。
  1. クライアントからの接続要求(ユーザープロセス)をディスパッチャへ接続。
  2. クライアントからの接続をバーチャルサーキットへバインド。
  3. 要求が来るとディスパッチャがバーチャルサーキットを共通キューへ配置。
  4. 共有サーバー・プロセスが共通キューからバーチャルサーキットを取り出し要求を処理。
  5. 処理が終了するとバーチャルサーキットを解放。別の要求を取得。
  6. PMONプロセスがディスパッチャの場所とロード情報をリスナーに登録。
<共有サーバー用初期化パラメータ>
SHARED_SERVERS
  •  インスタンス起動時に作成される共有サーバーの最小数。
  •  起動後はDBが自動で動的に管理。
  •  標準的には「1共有サーバー/10接続」
MAX_SHARED_SERVERS
  •  PMONによって自動作成可能な共有サーバーの最大数。
  •  SHARED_SERVERSの値が優先。
  •  リソースの問題上最大値を管理したい場合に設定
CIRCUITS
  •  共有メモリー上に作成可能なバーチャルサーキットの許容最大数。
DISPATCHERS
  •  ディスパッチャプロセス構成の設定。
  •  接続プロトコル、ディスパッチャ数など、属性と値にて設定。
  •  例)DISPATCHERS='(PROT=tcp)(DISP=5)'
  •  ディスパッチャ数=最大同時セッション数/接続数。

■専用サーバー
 専用サーバ・プロセス
クライアントからの要求が専用サーバープロセスへ接続。

2008年1月23日水曜日

テーブル件数カウント

-- 結果を画面表示する
set serveroutput on
-- 出力バッファ変更 ※デフォルトは2000バイト
SET SERVEROUTPUT ON SIZE 1000000

declare
-- テーブル名変数定義
tname varchar2(100);
-- テーブル件数変数定義
tcount number;
-- テーブル件数取得SQL変数定義
count_sql varchar2(300);

begin
for tab_rec in (select * from tab) loop
tname := tab_rec.tname;
count_sql := 'select count(*) from ' || tname;
execute immediate count_sql into tcount;
dbms_output.put_line( tname || ',' || tcount );
end loop;
end;
/

JP1AJS登録情報バックアップ

"ajsprint"コマンドにてJP1AJSの登録情報をテキストファイルにてバックアップ可能。

◎バックアップ取得方法
ajsprint -F AJSROOT1 -a <バックアップ対象のフルパス> <バックアップファイルパス>
例)
C:\>ajsprint -F AJSROOT1 -a / jp1_backup.txt

◎リストア方法
ajsdefile -F AJSROOT1 -d <ユニット作成のフルパス> <リストア対象ファイルパス> 
例)
C:\>ajsdefine -F AJSROOT1 -d / jp1_backup.txt

2008年1月22日火曜日

プロファイル

◎パスワード
有効期限
  • 期限切れ後の猶予日数
  • パスワード再利用可能変更回数
  • 再利用できなくなるまでの日数
  • 複雑なパスワード検証
 パスワード複雑度検証ルーチン。
 UTLPWDMG.SQLを使用して指定。($ORACLE_HOME\RDBMS\ADMIN)
 変更する際はUTLPWDMG.SQLを編集し、スクリプトを実行する。
  • ロックまでのログイン試行失敗回数
  • 指定回数失敗後のロックされる日数

※値が"DEFAULT"の場合、DEFAULTプロファイルの設定値が適用される。

◎UTLPWDMG.SQL
デフォルト
  • 長さが4文字以上
  • ユーザー名とは異なること
  • 少なくとも1文字のアルファベット、1文字の数字、1文字の句読点を含むこと
  • 以前のパスワードと3文字以上違いがあること
例)最低文字数を8文字に変更
-- Check for the minimum length of the password
  IF length(password) < 8 THEN
raise_application_error(-20002, 'Password length less than 4');
END IF;

→「複雑なパスワード検証」にて"VERIFY_FUNCTION"を設定する。

権限制御

~権限制御の実装方法~
 1.特定のユーザーのみに許可を与える。
 2.ユーザーに対して制限を与える。

◎権限の種類
 システム権限
  • ユーザー、ロールに対して付与、取り消しが可能。
  • コマンド:「GRANT」「REVOKE」
スキーマ・オブジェクト権限
  • 特定のスキーマオブジェクトに対する権限。
  • コマンド:「GRANT」「REVOKE」
表に対する権限
  • DML操作・・・DELETE、INSERT、UPDATE、SELECT
  • DDL操作・・・ALTER、INDEX、REFERENCES
ビューに対する権限

プロシージャに対する権限
EXECUTE

型に対する権限

◎ADMIN OPTION
 他のユーザーへのシステム権限の付与、取り消しを許可するかどうか。

◎OEMの操作権限
 デフォルトにてDatabaseControlアクセス権限を持っているのは”SYS”、”SYSTEM”ユーザー。

 ~既存ユーザーへのDatabaseControl管理権限付与~
  1. sysまたはsystemユーザーにてOEMにログイン。
  2. 「設定」→「管理者」を選択し「作成」をクリック。
  3. 権限を付与したいユーザーを選択し「終了」をクリック。
  4. 確認画面が表示されるので「終了」をクリック。
  5. ログアウトし追加したユーザーでのアクセスを確認。
→下記の権限が自動的に付与される。
"MGMT_USER"(ロール)
"SELECT ANY DICTIONARY"(システム権限)
→手動にて権限を設定すればOEMへのアクセスは可能。
 ただし管理者としての設定がされていないためブラックアウトやメール通知の機能が使用できない。

2008年1月21日月曜日

テーブル情報取得

テーブル設計の際に必要な情報をcsv形式ファイルにて取得する。

※取得の際はスクリプトファイルを作成し実行する。
 コマンドから実行すると実行コマンド自体もspoolファイルに出力される。

■テーブル

set echo off
set linesize 1000
set pagesize 0
set trimspool on
set colsep ','
set feedback off
set termout on

col TABLE_NAME format a30

spool table_data.csv

select TABLE_NAME, -- テーブル名
PCT_FREE,
PCT_USED,
INITIAL_EXTENT, -- 初期テーブルサイズ
NEXT_EXTENT, -- 拡張時テーブル増加サイズ
MAX_EXTENTS, -- 最大拡張サイズ
AVG_ROW_LEN -- 平均行の平均長さ
from user_tables;

spool off

exit

■索引

set echo off
set linesize 1000
set pagesize 0
set trimspool on
set colsep ','
set feedback off
set termout on

col TABLE_NAME format a30

spool table_data.csv

select INDEX_NAME, -- 索引名
PCT_FREE,
TABLESPACE_NAME, -- 表領域名
INITIAL_EXTENT, -- 初期テーブルサイズ
NEXT_EXTENT, -- 拡張時テーブル増加サイズ
MAX_EXTENTS, -- 最大拡張サイズ
AVG_LEAF_BLOCKS_PER_KEY, -- 平均リーフブロック数
AVG_DATA_BLOCKS_PER_KEY -- 平均ブロック数
from user_indexes;

spool off

exit

◎索引作成

2008年1月18日金曜日

AUX_STATS$

統計情報が保存されるテーブル

------------------------------------------
col SNAME format a30
col PNAME format a20

select * from AUX_STATS$;
------------------------------------------

SNAME
PNAME
PVAL1
PVAL2

CPUSPEEDNW
 インスタンス起動時のCPU速度(MhHz)
IOSEEKTIM
 シークタイム+OSオーバーヘッド時間(ミリ秒)
IOTFRSPEED
 1ブロックの平均転送速度(byes/millisec)

SREADTIM
 1ブロックの平均リードタイム(ミリ秒)
MREADTIM
 マルチブロックの平均リードタイム(ミリ秒)
CPUSPEED
 オラクルからみたCPU速度(MHz)
MAXTHR
 最大I/Oスループット(byte/sec)
SLAVETHR
 I/Oスレーブ単位での平均I/Oスループット(bytes/sec)

ORA-12560

Windows環境にてoracle10gを起動する際に以下のエラーが発生。

C:\oracle\product\10.2.0\db_1\BIN>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 金 1月 18 08:43:38 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL>
SQL>
SQL> conn as sysdba
ユーザー名を入力してください: system
パスワードを入力してください:
ERROR:
ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました

・接続識別子を指定しなかった場合に決定されるデフォルとのデータベース決定順位
  1. 環境変数LOCALに設定されているネットサービス名
  2. レジストリ\HKEY_LOCAK_MACHINE\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\LOCALに設定されているネット・サービス名
  3. 環境変数ORACLE_SIDに設定されているネット・サービス名
  4. レジストリ\HKEY_LOCAK_MACHINE\SOFTWARE\ORACLE\KEY_{ORACLE_HOME_NAME}\ORACLE_SIDに設定されているネット・サービス名
1、2が採用された場合
 リスナー経由で接続され、サービス名が解決できない場合はエラー(ORA-12514)
3、4が採用された場合
 ローカル接続(BEQ接続)で接続され、サービス名が解決できない場合は、エラー(ORA-12560)
1、2、3、4のいずれも設定されていない場合
 エラー(ORA-12560)

◎レジストリエディタ起動方法
 「スタート」-「ファイル名を指定して実行」をクリックし、'Regedit'を入力。

2008年1月17日木曜日

初期化パラメータ

star_transformation_enabled {TEMP_DISABLE | TRUE | FALSE}
[デフォルト:
FALSE]
  •  コストベースの問い合わせ変換をスタークエリーに適用するかどうか。
  •  オプティマイザがコストベースべ最適なスタークエリープランを自動的に作成するので、そのプランをスタークエリーに適用するかどうか。

スタークエリー

履歴データを持ち高速に検索するためのスキーマ「スター・スキーマ」を活用した問い合わせ。

job_queue_processes {0~1000}
[デフォルト:0]
  • ジョブ実行用に作成できるプロセスの最大数。

ジョブ

DBMS_JOBパッケージで起動させるストアド処理。
PLSQLジョブをスケジューリングして定期的に実行させるには、DBMS_JOBパッケージを使用。

aq_tm_processes {0~10}
[デフォルト:0]
  • キューメッセージ監視用のキューモニタープロセス数。
  • キュー・メッセージの時間監視が使用可能。

キューメッセージ
アプリケーション間、コンピュータ間でのメッセージのやり取り。
メッセージを格納(メールボックス)できるものを用意し、非同期での通信が可能。

db_file_multiblock_read_count { オペレーティング・システム依存}
[デフォルト:効率的に実行できる最大I/Oサイズと一致し、プラットフォームによって異なる]
  • 1回のI/O操作で読み取られるブロックの最大数。
  • 最大値は”オペレーティング・システムの最大I/Oサイズ/DB_BLOCK_SIZE”。
  • UNIXの場合の最大I/Oサイズは1MB(1024KB)。
  • パラメータが明示的に設定されていない場合は、デフォルト値を使用して自動的にチューニング(10.2)
statistics_level {ALL | TYPICAL | BASIC}
[デフォルト:TYPICAL]

  • データベースおよびオペレーティング・システムの統計の収集レベル。

◎レベル
TYPICAL
データベースの自動管理機能で必要とされるすべての主要統計が収集。
ALL
TYPICAL設定を使用して収集される統計よりも多くの統計が収集。
BASIC
Oracleデータベース機能で必要とされる多くの重要な統計が収集されない。

query_rewrite_enabled 
{ false | true | force }
[デフォルト:optimizer_features_enableが「10.0.0」以上"true"、「9.2.0」以下"false"]
データベースへのクエリー・リライトの使用設定。

クエリー・リライト
応答時に実データを読み取るのではなく、必要な情報が含まれたマテリアライズド・ビューを透過的に読み取る。
使用には
マテリアライズド・ビューが必要。

undo_management
UNDO領域管理モードの指定。
自動にするとロールバックデータをロールバックセグメントではなくUNDO表領域に書き込む。


改行コード

  • Windows環境にて作成したファイルをUNIXへFTPすると、改行コードが「^M」で入ってしまい、シェルが正常に起動しないことがある。
  • catコマンドで確認すると正常だが、viコマンドで確認すると「^M」が挿入されている。

→FTPにてアップロードする際にアスキーモードにアップロードを行う。

◎転送モード
アスキーモード
 ファイルの改行コードを変換してアップロードする。
「テキストベースのファイル」に関してはこのモードでアップロードを行う。
例)".txt",".log"
バイナリモード
 ファイルの改行コードを変換せずそのままアップロードする。
 「実行形式のファイル」に関してはこのモードでアップロードを行う。
 例)"jpg","jif"などの画像ファイル、"zip"などの圧縮ファイル。

2008年1月16日水曜日

spoolファイルのトリミング

set echo off
コンソールメッセージ非表示。
set linesize n
 レコード表示のラインサイズ(横幅)。
set pagesize 0
 ページ間のセパレータを無くす(縦行での空白を無くす)。
set trimspool on
 各行の右側のスペースを削除。
set trimout on
 ファイルから実行したコマンドによる出力の表示を抑止。
set feedback off
 「~行が選択されました」を非表示。
set colsep ','
 カラム間の区切り文字をカンマ','にする。

CRON実行結果出力

・cronの実行結果(出力情報)はデフォルトではcronを実行しているユーザーにメールされる。
 ※/var/mail/に出力されいる。

◎出力の種類
 「1」・・・標準出力
 「2」・・・標準エラー出力
例)
 ファイルへ出力 2> file
 出力しない 1> /dev/null 、>/dev/null 2>&1

2008年1月15日火曜日

DBMS_STATS.GATHER_SCHEMA_STATS

DBMS_STATS.GATHER_SCHEMA_STATS

  • 統計情報収集パッケージ。
  • スキーマ単位での統計情報取得とリスト取得の2つの取得が可能。
  • テーブル、インデックスが非常に多い場合など、「Analyze」コマンドでの統計情報取得が困難な場合に、スキーマ単位で統計情報を取得できる。
  • パラメータ指定時は「パラメータ => '設定値'」の形式で表記。すべてのパラメータについて設定を入力する場合は「設定値」のみで表記。

【スキーマ単位統計情報取得】
exec DBMS_STATS.GATHER_SCHEMA_STATS(
OWNNAME => '分析するスキーマ('NULL'は現行スキーマ)',
ESTIMATE_PERCENT => 'サンプルレート('NULL'は計算)',
BLOCK_SAMPLE => 'ランダンムブロックサンプリングを使用するかどうか',
METHOD_OPT =>
DEGREE => '並列度',
GRANULARITY => '収集する統計情報の細分化',
CASCADE => 'インデックス統計 有無',
STATTAB => '現在の統計情報の保存場所を示すユーザ統計情報の識別子',
STATID => 'STATTAB内の統計情報を関連付ける識別子',
OPTIONS => 'オプション',
OBJLIST => '失効または空と判断されたオブジェクトのリストを戻す',
STAOWN => 'STATTABを含んだスキーマ',
NO_INVALIDATE => '依存カーソルの無効の有無'
FORCE => 'ロックされている場合でも統計情報を収集'
 );

◎optionの種類
'GATHER'
 すべてのオブジェクト統計情報取得。
'GATHER STALE'
 DBA_TAB_MODIFICATIONSのリストから判断。
 表にMONITORING属性が指定されていて、なおかつ最後の統計情報取得後に10%以上の更新されたもの。
 (MONITORING属性がついていないものと、更新が10%以下のものは対象外)
'GATHER AUTO'
 oracleが必要と判断したオブジェクト統計情報を取得。
 新しい統計情報を必要とするオブジェクトを暗黙的に判別し、統計情報を収集する。
 ’GATHER STALE’に加え、MONITORING属性に関係なく統計情報が取得されていない表が対象。
 ”AUTO”がしてされた場合に有効になる追加パラメータは
"ownname","stattab","statid","objilist","statown"のみ。

'GATHER_EMPTY'
 統計情報が存在しないオブジェクトの統計情報を取得。

◎MONITORING属性の確認
 select table_name , monitoring from user_tables;
 →「monitoring」が”YES”になっているもの。

◎統計情報格納テーブル
select * from aux_stats$;

◎oracle10gからのデフォルト設定について
  • 10gからはデフォルト設定にて統計情報を取得する。
  • 取得タイミングは月~金(22時~8時)、土日(土曜0時~日曜24時)。
  • 上記時間帯でスケジューラ・ジョブのウィンドウがオープンしている。
  • 統計のロックを行うと統計情報は更新されない。
  • 時計情報が取得されていないもの、前回取得から10%以上行が更新されたものが対象。
  • 実行されるプログラムは「dbms.stats.gather_database_stats_job_proc」(「dbms_stats.gather_databse_stats」に’gather auto’オプションをしていした動きと同等)

◎統計情報のロック
 スキーマとテーブル単位で設定が可能。
 <ロック>
 DBMS_STAT.LOCK_SHEMA_STATS ( ownname <スキーマ名>);
 DBMS_STAT.LOCK_TABLE_STATS ( ownname <スキーマ名>, tabname );
 <ロック解除>
 DBMS_STAT.UNLOCK_SHEMA_STATS ( ownname <スキーマ名>);
 DBMS_STAT.UNLOCK_TABLE_STATS ( ownname <スキーマ名>, tabname );

例)
DBMS_STATS.GATHER_SCHEMA_STATS (
NULL, →現行のスキーマの統計情報を取得。
NULL, →oracleにてサンプリング率を計算。
FALSE, ランダム行サンプリングの実施。
'AUTO', →列のデータ配分とワークロードに基づいて、ヒストグラムを収集する列を判断。
DBMS_STATS.DEFAULT_DEGREE, →初期化パラメータに基づく並列度を使用。
'DEFAULT', →グローバル、パーティションレベルで統計所法を収集。
TRUE, →索引についても統計情報を取得。
NULL, →統計情報の保存場所。
NULL, →統計情報を関連付ける識別子。
'GATHER AUTO', →必要な統計情報をすべて自動的に集計する。(GATHER AUTOが指定された場合、有効な追加パラメータはownname、stattab、statid、objlistおよびstatownのみ)
NULL,
TRUE,
FALSE
);

ストレージ関連

◎ストレージ用語

「PCI SUNswift」
1枚のカードで10/100Mbps EtheとFast/Wide SCSIをサポートするPCIアダプタ。
「HBA」(Host Bus Adapter)
サーバをファイバチャネル接続するための必須アダプタカード。各OS用ドライバが必要。OSからはSCSIボードとして認識。
「FCAL」(Fibre Channel-Arbitrated Loop
トポロジー内に最大127個のノードを接続することが可能なループ型ファイバチャネルネットワーク。接続構成。
「シングル/デュアル」
コントローラの2重化。

■参考サイト
http://www.soi.wide.ad.jp/class/20030038/slides/68/index_70.html

2008年1月11日金曜日

DB物理設計について

『第一にユーザー必要とするレベル!!優先順位は何かを確認する!!』

レスポンス?冗長性?運用の容易さ?何が大事なのか。。。


では、実際の設計時にどんなDBでも必要な事はキャパシティプランニング。

レコード単位でのデータ量、テーブルの特性など正確で情報を把握し、的確なプランニングを行う!!
  1. レコード長は?
  2. 1ブロックに何レコード入る?ブロック内に必要な空き領域は?
  3. レコード件数÷1ブロックのレコード数=必要なデータ量+テーブル増加予測量=テーブル初期領域
  4. 表領域の割り当て。 機能単位?同時アクセス?テーブル特性?
  5. ディスクへの配置。
上記の順番にて設計を行う。

あとはDBの特性に合わせたデータベース環境構成の設計。

■成果物として作成するものリスト
  • データベース定義書
  • データベース環境構成定義書
  • キャパシティプランニング定義書
  • 実装スクリプト
  • (CRUD分析表)