2015年12月28日月曜日

[Oracle] OEMが停止/起動できない

Oracle Enterprise Managerの停止、起動ができなくなる現象が発生。
調べてみると色々な環境要因があるみたいですが、今回の状況は以下の通り。

・Oracle 11.2.0.4.0 @ Windows
・OEMは普通に参照できる
・OracleDBConsoleSIDは停止している
・net stop、emctl stop dbconsole ともにエラー(詳細忘れた。。)
・net start、emctl start dbconsole もエラー(詳細忘れた。。)

対応は単純で、OEM由来のjava.exeとemagent.exeを特定して
プロセスを終了、emctl start dbconsoleするというもの。


プロセスが残っているとサービスを制御できなくなるみたいですね。
忘れないうちに覚書。

2015年12月3日木曜日

[Windows] Windows Server 2012でイベントID:6038が発生する

Windows Server 2012の環境でイベントID:6038の警告が発生するようになりました。

=====
Microsoft Windows Server とクライアントの間で、現在 NTLM 認証が使用されていることが検出されました。このイベントは、クライアントの起動時に初めて NTLM を使用してこのサーバーに認証するときに 1 回発生します。

NTLM は、他の認証機構と比べてそれほど強力ではありません。次の点を確認してください:

      NTLM 認証を使用しているアプリケーションはどれか
      Kerberos 認証などの強力な認証を使用できない構成上の問題があるかどうか
      NTLM をサポートする必要がある場合、拡張保護が構成されているかどうか

これらを確認する方法の詳細については、http://go.microsoft.com/fwlink/?LinkId=225699 を参照してください。
=====

うーん、調べても参考になるような情報が見つからない。。
情報を見つけたら追記することにします。

2015年10月14日水曜日

[Oracle] 11gから12cにアップグレードしてみた

関連アプリがサポート対象外になるとの連絡があったので
Oracle 11g → 12c へのアップグレードを試してみました。

■前提
 ・OS
  SuSE Linux Enterprise Server SP3 (x86_64) @VMWare

 ・旧Oracle
  Oracle Database 11.2.0.4.0 Standard Edition
  ※DBUAによる直接のアップグレードは11.2.0.2.0以降

 ・新Oracle
  Oracle Database 12.1.0.2.0 Standard Edition

■手順
 (0) 最初に11g止めて、netcaでリスナー消しておくとスムーズ
 (1) 12cをソフトウェアインストール
 (2) 12cのORACLE_HOME/bin/dbuaを実行
 (3) .bash_profile のPATH等を12cのパスに書き換え


さして詰まることなくアップグレードできましたが
いざ本番環境でやると色々問題が出るんだろうなぁ・・・
なんかライセンス体系も変わってるらしいし。

2016.02.23 追記
やっぱり本番環境でハマった...
tnsnames.oraのパーミッションが原因でORA-12154ががが。

素直にファイル単位でパーミッションごとコピペすればよかったo...rz

2015年9月28日月曜日

[Windows] Windows 10 の「クイックアクセス」が気に入らない。。

至極個人的な意見ですが、Windows10の「クイックアクセス」は
いらない機能だなぁ、と思います。
# Win + E で開いたらドライブ一覧が表示されてほしい。

ということで、Win7と(ほぼ)同様の表示にする方法を覚書。


1. フォルダオプションを表示
2. 下図、赤枠内の通りに設定






















↓こんな感じに表示されます。




















手順というほど大したものではありませんが。。

2015年8月26日水曜日

[C# / PowerShell] C#からPowerShellを実行する方法

PowerShellを動的かつ並列実行したかったので、C#で書いてみました。

  private List<string> executePowerShell()
  {
    // PowerShellスクリプト
    string script = @"
      # C#からの引数の受け取り
      $count = 0
      foreach($arg in $input)
      {
        switch ($count)
        {
          0 { $foo = $arg }
          1 { $bar = $arg }
        }
        $count++
      }

      # 何らかの処理

      # C#に返したい変数
      $foo
      $bar
    ";

    List<string> fromPowerShell = new List<string>();

    using (var invoker = new RunspaceInvoke())
    {
      // PowerShellの実行、第二引数がPowerShellに渡す引数
      var psResult = invoker.Invoke(script, new[] { 0, 1 })

      // PowerShellから変数の値を受け取る($foo, $bar)
      foreach (PSObject result in psResult)
      {
        if (result != null) { fromPowerShell.Add(result.ToString()); }
      }
    }

    return fromPowerShell;
  }

こんな感じのメソッドを用意して、 script を動的生成 & Parallel.Forでクルクル回す、と。
例外処理は記載してませんが。。