2014年12月10日水曜日

[Oracle] PL/SQLを実行するバッチでORA-03135エラー

問題のあるデータが見つかった時にUTL_SMTPパッケージを使用して
メールを送信するPL/SQLをWindows 2003 Server上に設置して
3時間ごとに動作するよう設定しているのですが、ここ最近、
朝一番の実行時に
 ORA-03135:接続が失われました
が発生するようになりました。


なんでかなーと思って調べてみると、タスクを実行するユーザーで
リモートデスクトップ接続→ログオフすると、Ctrl+Cした時みたいに
バッチ処理が止まってしまうようです。


確かに最近、そういう操作をやってるような気はしますが
まだ原因確定ではないので、ちょっと様子見ですかね。

2014年12月5日金曜日

[Oracle] db_domain と global_name を変更したときのDBLINKの挙動を調べてみた

調査の一環で、db_domain  と global_name を変更したときに
DBLINKがどのような挙動を示すか試してみることにしました。

■前提
 CentOS 6.5 x64
 Oracle 11.2.0.4.0


影響がでないようにVMwareにインストールして、いざ検証開始。

1. db_domain と global_name を確認
SQL> show parameter db_domain

NAME                TYPE      VALUE
------------------- --------- --------------------------
db_domain           string    foo.jp

SQL> select * from global_name;

GLOBAL_NAME
-------------------------------------------------------
HOGE.foo.jp

2. DBLINK作成
CREATE DATABASE LINK dblink_test01
CONNECT TO user
IDENTIFIED BY password
USING 'target_database';

3. 検証用にProcedure1つ作成
CREATE OR REPLACE PROCEDURE proc01
IS
  VAL NUMBER;
BEGIN
  SELECT COUNT(*) INTO VAL FROM table@dblink_test01;
END proc01;
/
コンパイルエラーはなし。

4. DBLINK確認
SELECT DB_LINK FROM DBA_DB_LINKS;

DB_LINK
-------------------------------------------------------
dblink_test01.foo.jp


とりあえず、これで準備は完了。
うまくいきますように。。。

5. db_domain / global_name を変更
SQL> UPDATE global_name SET global_name = 'HOGE.bar.jp';

1 row updated.

SQL> COMMIT;

Commit complete.

SQL> ALTER SYSTEM SET db_domain = 'bar.jp' SCOPE = spfile;

System altered.

6. Oracleを再起動(手順略)

7. もう一度 db_domain と global_name を確認
SQL> show parameter db_domain
NAME                TYPE      VALUE
------------------- --------- --------------------------
db_domain           string    bar.jp

SQL> select * from global_name;

GLOBAL_NAME
-------------------------------------------------------
HOGE.bar.jp

8. もう1つDBLINK作成
CREATE DATABASE LINK dblink_test02
CONNECT TO user
IDENTIFIED BY password
USING 'target_database';

9. 検証用のProcedure変更
CREATE OR REPLACE PROCEDURE proc01
IS
  VAL NUMBER;
  VAL2 NUMBER;
BEGIN
  SELECT COUNT(*) INTO VAL FROM table@dblink_test01;
  SELECT COUNT(*) INTO VAL FROM table@dblink_test02;
END proc01;
/

としたところでコンパイルエラー発生(ORA-00942)。

まあ、ドメイン名が変わっているのですから当然ですよね。

検証したかったのは、ドメイン名を変更したときに
作成済みDBLINKのドメイン付の名前(dblink_test01.foo.jp)が
変わってくれるかどうか、ということでした。


結論:変わってくれない。以上。


2014年12月4日木曜日

[Windows] タスクスケジューラでバッチ実行すると「ファンクションが間違っています。(0x800700001)」が出る

とあるexeに引数を渡して実行させるバッチをタスクスケジューラで
実行させると「ファンクションが間違っています。(0x800700001)」が
履歴に出てしまう現象が発生し、調査依頼を受けました。

調べてみると、カレントディレクトリが設定されていないとか、
リターンコードが1で返ってきていればその対処をすればよいという
内容が多かったのですが、カレントディレクトリは設定済み、
リターンコードは0ということでなかなか原因が判明せず。。


自分で作ったバッチではないので、製作者に確認をとって
動かしてみたところ、どうも引数に記載されている日本語が
文字化けしていたようです。

取り急ぎの対応として、日本語を使わないようにしたところ
問題なく動作したので無事解決。

chcpとか使えば日本語使えるようにできるんでしょうが
あまりこだわりがないようなので、これでクローズかな。

2014年12月3日水曜日

[Oracle] ジョブの管理はSQL Developerが便利?

これまで触ったことがなかったんですが、10g環境にて
ジョブを確認する必要が発生しました。

EnterpriseManagerから詳細を見ていたら、スケジュールを確認するところで
なんと HTTP500エラー。

何度繰り返しても変わらずスタックトレース的なアレが表示される。。。
どうしよう。。。


そうだ、SQL Developerなら・・・SQL Developerならなんとかしてくれる。


ということで、以前作成したCentOS環境からSQL Developer立ち上げて
無事閲覧できましたとさ。

スケジュールとジョブの関連もDeveloperの方がわかりやすくて◎かな


2014年11月27日木曜日

[Oracle] インデックス作成時にORA-01652エラー

先日のORA-01000エラー対応でマテビューにインデックスを
つけることで対応しようとした問題、本番環境で作成しようとしたところ

ORA-01652: 一時セグメントを拡張できません(8192分、表領域USERS)。

のエラーが発生。


メッセージから一時表領域が足りないのかと思い、確認したところ
USERS(実際には別の名前)の方が不足していたようで。

データファイル追加して問題なく対応完了~

2014年11月25日火曜日

[Windows] イベントID 1006 が頻発する

Windows Server 2012で、システムエラーがイベントビューアに記録された際
メールを飛ばすような設定を行っているのですが、

イベントID 1006 グループ ポリシーの処理に失敗しました。・・・

という内容で1~2時間おきにメールが飛び続ける現象が発生。

調べてみたところ、どうもリモートデスクトップ接続→サインアウトしないで
切断するとこの現象が発生するようで。

イベントビューアを見ると、該当のユーザーがちゃんと記録されているので
タスクマネージャから該当ユーザを強制サインアウトすることにより解決。




×ボタンでリモートデスクトップを切るとこの現象が発生するんだろうか。。
サインアウト、最初はわからなかったしなぁ。


[VMware] Windows XPのCドライブ容量拡張

自宅でお遊びに使っている VMware + Windows XP の環境で
Cドライブのディスク容量が減ってきたので拡張したいなぁと。

調べてみたところ、XPではシステムドライブは拡張できないとの事で
別途ツールを使う必要があるそうです。

ということで、ざっくりとですが手順を覚書。


1. ゲストOSはシャットダウンしておく
2. 仮想マシンの設定編集画面からハードディスクを拡張
3. EaseUS をゲストOS内にインストール
4. GUIで領域を割り当てる

2014年11月20日木曜日

[Oracle] DBリンクでデータ参照するProcedureでORA-01000エラー

DBリンクでデータ参照するProcedureがあり、それを
デバッグしていたところ

 ORA-01000 最大オープン・カーソル数を超えました。

が発生。


・DBリンク先のデータ量が非常に多い(200000000件くらい?)
・DBリンク先をチューニングするのはNG

なのでどうしようかと考えた結果、マテリアライズドビューとしてローカルに
データを持たせインデックスを貼るなどして処理時間を短縮しようという流れに。

ORAエラーも出なくなり、データ操作も3秒ほどで
返ってくるようなのでこれで採用かな。
マテビューのリフレッシュには3時間くらいかかるようですが、夜間バッチなので。。

2014年10月30日木曜日

[Oracle] listener.logが4GBを超えると接続できなくなる

先輩から情報提供があったので覚書。

listener.logが4GBを超えると異様に重くなったり接続できなくなるなど
挙動がおかしくなるとの情報をいただきました。
対処法としては、listener.logを削除/リネームすればよいとのこと。


これまであまり考えたことはありませんでしたが、
注意しておかないといけませんね。


なお、10gと11gでは場所が違うので要注意。

■10g
 ${ORACLE_HOME}/network/log

■11g
 ${DIAGNOSTIC_DEST}/diag/tnslsnr/ホスト名/リスナー名/trace

2014年10月28日火曜日

[Windows] Windows10 Technical Previewに.NET Framework 3.5をインストール

Windows 10 Technical Previewにいろいろインストールしていたら
.NET Framework 3.5が必要なアプリがあったのですが、デフォルトで
インストールされていないようだったのでインストールの方法を覚書。

> REM インストールディスクがDドライブに入れてある前提です。
> Dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs
フォント小さくしないと1行で入らなかったorz


この方法は、Windows 8や2012Serverなんかでも使える方法ですね。
2014/11/25訂正 #ふと気づいてしまった。。
Windows Updateからではインストールできなかったので要注意。
プログラムと機能 → Windowsの機能の有効化または無効化 からは
インストール不可なので要注意

2015/08/13
製品版がリリースされてアクセス数が増えているようですが
TP版と同じ方法が製品版で使えるのかは試していません。。。

2014年10月23日木曜日

[Oracle] 10g→11gの移行後、UTL_SMTPパッケージでのメール送信時にORA-24247エラー

Oracle11gの環境に、UTL_SMTPパッケージを使用してメール送信する
バッチを移行、実行したところORA-24247エラーが出てメールが送信できない
現象が発生しました。


調べてみたところ、セキュリティ強化の一環でアクセス制御リスト(ACL)に
スキーマとSMTPサーバを登録してあげる必要があるそうで。


そんなわけで、登録用のPL/SQLを覚書。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.CREATE_ACL(
    acl         => 'hoge.xml',       --名前(任意の名前.xml)
    description => 'description', --説明(なんでもよい)
    principal   => 'hoge',           --スキーマ
    is_grant    => TRUE,
    privilege   => 'connect'
  );

  DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
    acl         => 'hoge.xml',       --名前(任意の名前.xml)
    principal   => 'hoge',           --スキーマ
    is_grant    => TRUE,
    privilege   => 'resolve'
  );

  DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
    acl         => 'hoge.xml',                       --名前(任意の名前.xml)
    host        => 'HostName or IP Address' --SMTPサーバ
  );

END;
/

2014年10月20日月曜日

[Oracle] 重複のあるレコードを取得するSQLを調べてみた

一意キー等の設定されていないテーブルにおいて
重複のあるレコードのみを表示するSQLを書いてみました。


SELECT * FROM target_table
GROUP BY column1, column2, ・・・ columnN
HAVING COUNT(*) > 1
/


使う機会はあまりないかもしれませんが、一応覚書。
# Oracle以外でも使えるかも

[その他] Firefox最新版で問題発生

後輩にOEM(11g)の見方を教えようとしたところ、なぜか後輩PCのFirefoxで
接続しようとすると「安全な接続ができませんでした」と表示されてしまい
参照することができない事態に出くわしました。


そんな馬鹿な、と思いつつ自分のFirefoxで見ると問題なし。
プロキシ設定に問題あるのかなー、といろいろいじってみるも
状況改善せず。


そうしてようやく気付いたのがFirefoxのバージョンは違うのか?ということ。


後輩:33.0
自分:32.0


んでは、自分のFirefoxのバージョンあげてみよう。



・・・



ぎゃーーー見れなくなった!!


ということで結論は「古いバージョンを使おう」。

備忘録としてFirefoxのFTPサイトを覚書。

2014年10月16日木曜日

[Oracle] DataPump Export / Import でかかる時間

expdp、impdpを使用して、データを移行するのに
どれくらい時間がかかるのかを試してみました。

■Export元
 Oracle 10.2.0.3.0 x64 Standard Edition
 OS:Windows 2003R2 x64 Standard Edition

■Import先
 Oracle 11.2.0.4.0 x64 Standard Edition
 OS:Windows 2008R2 x64 Standard Edition (Hyper-V内の仮想環境)

■ダンプサイズ
 Datapumpのサイズ見積:114GB
 実際に出力されたdmpファイルサイズ:約90GB


サーバスペックについては伏せておきますが、
いずれも約3.5時間程度かかりました。

それに加えて、Import先へのOracleインストールやら
Import後のオブジェクトコンパイルやらを含めてトータルで約9時間。


もっと時間かかると思っていたけど、1日でできるレベルなのね~

2014年10月6日月曜日

[Oracle] データベースのサイズとdmpのサイズが違う

サーバの移設へ向けて、データ移行するためにOEMで
DBサイズを確認。

 ・・・約350GB

expdp で full=y estimate_only=y を試行してみる。

 ・・・約110GB

実際に expdp で fully=y を実行。

 ・・・約90GB


4分の1!

確かに完全一致はしないだろうけど、こんなに軽量化されるもの?
どうしてこうなった。。

2014年10月2日木曜日

[Windows] Windows10 Technical Preview をインストールしてみた

本日、10/2に「Windows 10」のプレビュー版が公開されたので
仮想環境にインストールしてみました。



やっぱりあれですね。スタートメニューが復活したのがうれしいです。

スタートメニュー、復活です。
大事なことなので二度言います笑



現時点では、日本語版は公開されておらず、
英語(米/英)、中国語、ポルトガル語の4言語となっています。

まぁ、メニューとかの位置は変わらないので英語でほぼ問題なしかと。


時間を見つけて遊ぼう。

2014年9月22日月曜日

【解決】[Oracle] SUSE Linux にインストールできない。。

試行錯誤した結果、無事インストールできました。
ということで、大まかな作業内容を覚書。

■各種設定ファイルを修正
 ・/etc/sysctl.conf
 ・/etc/pam.d/login
 ・/etc/seurity/limits.conf
 ・/etc/hosts

■ユーザー、グループの作成

■必要に応じてスワップ領域サイズ拡張

■必要なパッケージのインストール


ここまでやったらOracleをインストールする、と。

Linux音痴なのでだいぶ苦戦してしまいましたが、
どうも/etc/hostsの編集がおかしかったようで、リスナーや
Enterprise Managerの構成に失敗していた模様です。
localhostだけじゃダメなのね。。

Oracleのインストールマニュアルや、CodeProject(海外サイト)が
大いに参考になりました!


スクリーンショットとかは気が向いたら掲載することにします。

2014年9月17日水曜日

[Oracle] SUSE Linux にインストールできない。。

SUSE Linux Enterprise Server x64にOracle 11g R2を
インストールする必要があるので、評価版を使って
VMwareで検証しているのですが現在大ハマリorz


英語のドキュメントを漁ってくるとか色々調べてみてはいるのですが
どうもnetcaの起動がコケて、リスナー周りがおかしくなるようです。


もうしばらく要調査&解決策が見つかったら覚書しよう・・・

2014年9月5日金曜日

[Oracle] ORA-12154にハマる

新しく来た人のPCを設定していたところで

ORA-12154: TNS: 指定された接続識別子を解決できませんでした。

が出現。

なんでかなーと思いつつ簡易接続を試すと問題なく接続可能。
tnsnames.ora の記述にも問題はなさそうだし・・・と思っていたら sqlnet.ora の
NAMES.DEFAULT_DOMAINが古い情報だった。。


OracleClientインストールしたの自分じゃないんだからねっ!!

2014年9月3日水曜日

[日常] 名称が思い出せない

2つのSELECT結果を結合した結果を取得したい、
という要件があったので以下のように書いてみる。

SELECT * FROM (
    SELECT ...
) A
INNER JOIN (
    SELECT ...
) B
ON A.column = B.column


まあ、結果は正しく取れるのですが、AやBのことを何て呼ぶんだっけ?
と悩みまして。


副問い合わせではなかったはずだし、サブクエリ・・・?
・・・って英語化しただけだし。


と、こんな感じで半日ほど悩んだ結果、ふと思い出すことができました。


イ ン ラ イ ン ビ ュ ー


いやー、スッキリ。
しかし、こういうのをボケとか老化とか耄碌とか言うんだろうな。。。

2014年8月19日火曜日

[Oracle] Undo表領域を縮小(再作成)する方法

OracleのUndo表領域は放っておくとどんどん大きくなってしまうようで、
私が取り扱っている環境でも30GB超になっていました。

よって縮小(というか再作成)する方法を覚書。


1) Undo表領域の情報を確認
SELECT TS.TABLESPACE_NAME, DF.FILE_NAME FROM DBA_TABLESPACES TS
INNER JOIN DBA_DATA_FILES DF
ON TS.TABLESPACE_NAME = DF.TABLESPACE_NAME
WHERE CONTENTS = 'UNDO'
ORDER BY DF.FILE_ID;

2) 一時的にUndo表領域を作成(サイズは適当に)
CREATE UNDO TABLESPACE temp_undotbs
DATAFILE 'dbfファイルのパス'
SIZE 100M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

3) 手順2で作成したUndo表領域に切り替え
ALTER SYSTEM SET UNDO_TABLESPACE = 'temp_undotbs';

4) 手順1で確認したUndo表領域を削除
DROP TABLESPACE undotbs1;

5) Undo表領域を再作成(サイズは適当に)
CREATE UNDO TABLESPACE undotbs1
DATAFILE 'dbfファイルのパス'
SIZE 1024M REUSE AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

6) 再作成したUndo表領域に切り替え
ALTER SYSTEM SET UNDO_TABLESPACE = 'undotbs1';

7) 一時的に作成したUndo表領域を削除
DROP TABLESPACE temp_undotbs;


8) 一時作成したtemp_undotbsのデータファイルはOS上に残ってしまうようなので
   手動で削除(Windowsの場合はOracleの再起動が必要?)

2014年8月15日金曜日

[Oracle] ユーザーに設定されているデフォルト表領域を削除したらどうなるか試してみた

一度、表領域を削除する(かもしれない)要件に出くわしたので
ローカル環境でどうなるかテストしてみました。

1) 表領域の作成
CREATE TABLESPACE tbs_test
DATAFILE 'tbs_test.dbf' SIZE 3M REUSE
LOGGING
ONLINE;

2) ユーザーの作成
CREATE USER test_user
IDENTIFIED BY password
DEFAULT TABLESPACE tbs_test;

-- 権限は適当に付与

3) 表領域の削除
DROP TABLESPACE tbs_test
INCLUDING CONTENTS
CASCADE CONSTRAINTS;

-- 削除は成功する

4) TEST_USERのデフォルト表領域確認
SELECT DEFAULT_TABLESPACE FROM DBA_USERS
WHERE USERNAME = 'test_user';

-- デフォルト表領域はtbs_testのまま

5) 表領域の指定なしでテーブルを作成してみる
CREATE TABLE test_user.test_table (
  column1 NUMBER
);

-- ORA-00959: 表領域'tbs_test'は存在しません。


なんか、Oracle Masterの試験に出てきそうな内容ですが
せっかく試してみたので覚書。

2014年8月8日金曜日

[Windows] GodModeが地味に便利

ググれば簡単に出てくる情報ですが、コントロールパネルの
強化版のような「GodMode」という隠し機能が便利。

手順:
 1. 任意の場所(デスクトップ等)でフォルダを新規作成
 2. フォルダの名前を xxxxx.{ED7BA470-8E54-465E-825C-99712043E01C} とする
 ※「xxxxx」の部分は表示される名前になるので、「GodMode」など任意でよい


○○の設定はコンパネのどこにあったっけ?といった場合に
GodModeを開いて検索をかければ大体ヒットします。

















なお、ご利用は自己責任で。
うかつに設定をいじって元に戻らなくなった、なんてこともありえますからね~

2014年8月1日金曜日

[Oracle] 資格取得の参考サイト

同僚からOracle Masterの勉強で参考になるサイトない?と
聞かれたので、持っていた情報を覚書。

■ Oracle Master Bronze
 - SQL基礎I
 http://www.atmarkit.co.jp/ait/articles/0505/12/news124.html

 - DBA

 - 模擬試験(Oracle10g)

■ Oracle Master Silver

■ Oracle Master Gold


個人的には参考書買ったほうが早いと思いますが。

2014年7月28日月曜日

[Oracle] Oracle Master Gold 取得!

Silverまでは持ってたんですが、この度奮起してGold取得してきました。
余裕で合格、とはいきませんでしたが、形は大事です(笑)

というわけでGold取得の所感をば。

・なんか Certview とやらが導入されていて初期設定めんどい。。
・現住所近辺に試験会場がないよ! ⇒ 一時間かけて移動だるい
・参考書重いし、Silverまでと比べて高いよ!

・・・



いや、試験内容関係ないし!

というわけで真面目に試験内容の所感を。
 ・バックアップ/リカバリ関連の問題は多いように思う。手順も含めて。
 ・動作環境(初期化パラメータ、メモリ管理とか)に関する問題も多いかな
 ・インスタンスの起動状態によって何ができるのかは把握しておくべき
 ・何かOracleの機能紹介、というか宣伝じゃね?

こんなところですかね。
まぁ、参考書をしっかり読んで模擬試験もやっておけば
合格はできるんじゃないでしょうか。


Platinum、とるにはLinux必須らしいのでどうしようか。
その前にお金の問題も。
しばらくは保留かな~

2014年7月24日木曜日

三日坊主?

このところ、あまり調べごとをする機会がなかったので
更新が滞っています。

もう少ししたらOracle関係とかで忙しくなりそうなので
投稿頻度が上がるのでは・・・?

# 誰も見ていないでしょうし(笑)

2014年7月14日月曜日

[Windows] タスクスケジューラの "開始 (オプション)" を二重引用符付きで指定するとエラーになる

先週末に仕掛けておいたタスクスケジューラの実行履歴を見たところ
以下のエラーが出ていました。(@Windows 2012 SE x64)

イベントID:203
タスク スケジューラは、ユーザー "UserName" の "TaskName" タスクを開始できませんでした。追加データ: エラー値: 2147942667。

イベントID:101
タスク スケジューラは、ユーザー "UserName" の "TaskName" タスクを開始できませんでした。追加データ: エラー値: 2147942667。


どうも、 "開始 (オプション)" に二重引用符付きでパスを指定すると
このエラーが発生するようで。

↓これ























ググれば簡単に見つかる情報ですが、念のため覚書。

2014年7月10日木曜日

台風が近づいてまいりました。

さて、台風8号が近づいてまいりました。

私の住んでいるところは、10日夜~11日明け方の間で
通過することになるらしいので、出勤時には雨は降らないでしょうが
風がどれだけ残るかが問題ですね。

さぁ、今日は早めに帰って家の周りを片づけなければ。

2014年7月4日金曜日

[Linux] Oracleを入れてみた Part2

前回、netcaが起動エラーになるということを記載しました。

色々調べてみると、ネットワークの設定がおかしい可能性が高い
という内容が多かったので半ばあきらめていました。


が、適当に保存しておいた作業履歴のテキストをふと読んでみたところ
ある予感が。


「runInstaller実行したとき、文字化けしたよな・・・」


とりあえず試してみた結果がこちら↓



普通に起動できるじゃないか(笑)

まぁ、リスナーの構成は自分でやってしまったので
特に使う理由はないんですが、一応解決できたので覚書。

2014年7月2日水曜日

[PowerShell] コマンドの実行結果を表示しない方法

DOSの @echo off みたいに、コマンドの実行結果を
表示しない方法について、なかなか見つかりませんでしたが
ようやく見つけたので覚書。

PS> net use \\ServerName
コマンドは正常に終了しました。

PS> net use \\ServerName /delete
\\ServerName が削除されました。


を以下のようにすると、あら不思議。

PS> net use \\ServerName | Out-Null
PS> net use \\ServerName /delete | Out-Null


方法が見つかってスッキリ(*´∀`*)

2014年6月25日水曜日

[Linux] Oracleを入れてみた

Linuxの勉強を兼ねてOracleをインストールしてみました。

環境:
 CentOS 6.5 @ VMWare
 Oracle 11gR2

http://www.server-world.info/query?os=CentOS_5&p=oracle11g
を参考にしつつ、インストール作業が完了したので
まずはリスナーを起動してみたら「No Services」とかいう不穏なメッセージが・・・

では、Net Configuration Assistantを使ってみよう。


Oh...


このエラーで調べても有効な解決方法が見つからない・・・
とりあえずlistener.oraを見てみよう。



ふむ、SID_LIST_LISTENERがないな。
というわけで追記。


で、リスナー再起動っと。


よしよし、無事つながった。

でもなんでnetca使えないのか・・・
もうちょっと調べなくては。

2014年6月24日火曜日

備忘録 2014.06.24

備忘録として、後で見たい記事を。


■OneDriveの無料容量拡大
http://internet.watch.impress.co.jp/docs/news/20140624_654783.html

■次期IE機能
http://internet.watch.impress.co.jp/docs/news/20140617_653700.html

■Windows XPまだ利用されている
http://news.mynavi.jp/news/2014/06/24/110/

[Oracle] ODBC接続でORA-01017エラー

質問されただけである上に全然解決してないんですが。

環境
 Windows Server 2012 x64
 Oracle Client 11.2.0.3.0 //たぶんx64

で、Oracle用ODBC(Oracle提供のODBCではない)を使用している環境において
ODBCの「Test Connection」を使用するとORA-01017エラーが確かにでました。

SQL*Plusでは問題なくつながるようだったので
とりあえずやりたいことはできる、という話に落ち着きました。


色々試した感じだと、上記ODBCのパスワード欄に文字数制限が
かかっているのかも?という感じ。

でもパスワード、15文字くらいだったしなぁ・・・
腑に落ちない。

2014年6月18日水曜日

[Python] はじめてのぱいそん

そのうちPythonでGUIツールを作ることになるかも、
とのことなので試しにHello World的なものを作ってみた。

■用意したもの
 Python 3.3.0
 cx_Freeze4.3.3

■ソース
#sample.py
from tkinter import *
from tkinter.messagebox import *

root = Tk()

n = IntVar()
n.set(0)

func_table = (showinfo, showwarning, showerror, askquestion, askokcancel,
              askyesno, askretrycancel)

name_table = ('showinfo', 'showwarning', 'showerror', 'askquestion',
              'askokcancel', 'askyesno', 'askretrycancel')

def message_box():
    func = func_table[n.get()]
    func(title = 'about', message = u'Hello World!')

for m, name in enumerate(name_table):
    Radiobutton(root, text = name, value = m, variable = n).pack(anchor='w')

Button(root, text = "Open message box", command = message_box).pack()

root.mainloop()


んで、とりあえずビルドするために、
#setup.py
import sys
from cx_Freeze import setup, Executable

base = None

if sys.platform == 'win32' : base = 'Win32GUI'

exe = Executable(script = 'sample.py', base = base)
2
setup(name = 'sample',
      version = '0.1',
      description = 'converter',
      executables = [exe]
)


ここまで準備を終え、setup.py buildするとexeファイルは出来上がるのだが
いざ実行すると

---------------------------
cx_Freeze: Python error in main script (traceback unavailable)
---------------------------
Cannot import traceback module.
Exception: cannot import name MAXREPEAT
Original Exception: cannot import name MAXREPEAT
---------------------------
OK
---------------------------

が出る・・・


調べてみたところPython 3.3.0のバグだったみたい。
3.3.5にアップグレードしたらちゃんと動きましたとさ。
# 原因を追究するのに半日かかってしまったorz

2014年6月17日火曜日

LinuxとかPythonとか

同時である必要はないのですが、
今後LinuxとかPythonとかをちょっとずつ覚えていく必要がありそう
ということで書き込み。

これまでWindowsばっかりだったし・・・

2014年6月12日木曜日

[PowerShell] 比較演算子にハマる

色々とPowerShellを書いてたら、ps1ファイルのあるフォルダに
なぜか「0」というファイルが作られている。。。

なんでや!

PS> $array = @()
PS> $array += ・・・
PS> if ($array.Length > 0) {
PS>     ・・・
PS> }



・・・



($array.Length > 0)



おまえか!



ついつい癖で不等号使ってしまったorz
-gt 使わないといけないんでしたね。。

ということでこんな感じで書き換えたら解決。

PS> $array = @()
PS> $array += ・・・
PS> if ($array.Length -gt 0) {
PS>     ・・・
PS> }

2014年6月11日水曜日

[PowerShell] リモートからHDDの空き容量を調べる

イベントログを見ることができるんだから、ディスクの空き容量を調べることもできるだろう、
ということでこんな感じで書いてみた。

PS> $username = "username"
PS> $sPassword  = ConvertTo-SecureString -String "password" -AsPlainText -Force
PS> $credential = New-Object System.Management.Automation.PSCredential($username, $sPassword)
PS> $hdd_list = Get-WmiObject -Class win32_logicaldisk -ComputerName "host-name"
-Credential $credential
PS> $msg = ""
PS> foreach($hdd  in $hdd_list) {
PS>     $driveLetter = $hdd.DeviceID -replace(":", "")
PS>     $freeSpace = [string] ([math]::round($hdd.FreeSpace / ([math]::pow(1024, 3)), 2))
PS>     $msg = "Freespace of " + $driveLetter + " drive is " + $freeSpace + "(GB)."
PS> }
PS> $msg

# 2015.04.09 1行目を追記。ご指摘ありがとうございます。

[PowerShell] リモートからイベントビューアを見る

サーバのチェックを行うのに一々リモートデスクトップ接続するのは面倒。
(特にチェックするサーバが多ければ多いほど)

ということで、作業PCからPowerShellを使用し、
リモートでイベントビューアを表示する方法を調べてみた。

PS> # 共有リソースに接続
PS> net use \\[host-name or ip-address] [password] /user:[user-name]
PS>
PS> # イベントログを表示
PS> Get-EventLog system -ComputerName [host-name or ip-address]

過去n日間に発生したシステムエラーの件数を表示したいならこんな感じ

PS> net use \\[host-name or ip-address] [password] /user:[user-name]
PS>
PS> # ndays はマイナスの値にすること
PS> $ndays = -3
PS> $error_count = Get-EventLog system -ComputerName [host-name] | Where-Object { $_.EntryType -eq "Error" -and $_.TimeGenerated -gt (Get-Date).AddDays($ndays) } | Group-Object $_.EntryType

とりあえず投稿

調べたことなどを不定期に掲載します。
3日坊主にならないように気を付けないと。。