Keiko のすべての投稿

[VB.NETメモ]SMTP認証でメール送信

.Net FrameworkのSMTPメール送信クラス
(System.Web.Mail.SmtpMail)を使用してのメール送信で

ある日突然、下記のエラーが発生しメール送信が失敗するようになりました。
「メールボックス名は許可されていません。
サーバーの応答: sorry, that domain isn’t in my list of allowed rcpthosts (#5.7.1)」

原因は、SMTP認証設定なしでメール送信していたためでした。

今までは、SMTP認証なしでもメール送信できていたのですが
何故か突然エラーになるように。。
(メールサーバはレンタルサーバを使用)

 

下記のように差出人の認証に使用する資格情報を設定して
メール送信することにより正常に送信できるようになりました。

Dim sc As New System.Net.Mail.SmtpClient()
sc.Credentials = New System.Net.NetworkCredential(“username”, “password”)

※username,passwordは差出人のユーザ名,パスワードを設定

 

[Oracle初心者運用メモ]ADO.NETでOledb接続ができない

ASP.NET(VS2010)開発のWebシステムを構築している
客先の本番Webサーバにて、突然、下記のエラーが発生し、
Webシステムから別DBサーバのDB(Oracle11g)へ接続できなくなってしまいました。

——————————-
データベースからのデータ取得に失敗しました。
‘OraOLEDB.Oracle’ プロバイダーはローカルのコンピューターに登録されていません。
——————————-

WebシステムからはADO.NETのOledb接続でDBへ接続しています。

Webサーバの環境は以下の通り(Webサーバ管理は別会社)
OS:Windows Server 2008 R2
DB:Oracle11g クライアント32bit

実は、Webシステムを構築した当初は
DBはOracle11gサーバ64bitがインストールされており
その時点では正常に接続できていました。
その後、別会社で使用しているシステムが32bit版のOracleクライアントが
必要になり、 追加でOracle11g クライアント32bitをインストールされたようで
インストール後、エラーが発生するようになりました。

・Oracleホームディレクトリのユーザ権限を確認
(Everyone権限を設定したりなどいろいろ試す)
・Oracleホーム/binフォルダへのPath設定を確認
などいろいろ試してみましたが結果は変わらず。。

Webサーバを管理している会社に、Oracle11g クライアント32bitをアンインストールし
構築当初のOracle11gサーバ64bitに戻してもらいましたが、
それでも結果は変わらず。。

最終的にWebサーバをOSからインストールしなおしていただき
(DBはOracle11gサーバ64bit)
正常に接続できるようになりました。

今回の現象は、Oracleの再イントールが要因でしたが
そのことにより何故このような現象が発生したのか
OS再インストールではなく、何か解決方法はなかったのか
突き止めることができなかったことが残念です。

[Oracle初心者運用メモ]大文字/小文字、全角/半角区別なしであいまい検索

≪Oracle10gR2からの大文字/小文字、全角/半角区別なしであいまい検索≫

大文字/小文字区別なしの検索は、大文字/小文字変換関数を使用することにより
DBの値,検索文字どちらも大文字(又は小文字)に
変換して検索することで区別なし検索ができます。

全角/半角区別なしの検索は、
Oracle10gR2から
UTL_I18N.TRANSLITERATEという日本語のひらがなとカタカナを変換する機能が提供され、
この機能を使用することでDBの値,検索文字どちらも全角(又は半角)に
変換して検索することで区別なし検索ができます。

 

下記SQLは、大文字/小文字、全角/半角区別なしで部分一致検索です。

select name
from 製品マスタ
where
UTL_I18N.TRANSLITERATE(UPPER(TO_MULTI_BYTE(name)),'kana_fwkatakana')
like '%' || UTL_I18N.TRANSLITERATE(UPPER(TO_MULTI_BYTE( 検索文字 )),'kana_fwkatakana') || '%'

※'kana_fwkatakana'はすべてのタイプの仮名文字を全角カタカナに変換します。

[Oracle初心者運用メモ]一時領域サイズ変更Oracle10g

≪Olacle10gの一時領域サイズ変更≫

前回のブログでOracle11gでの一時領域サイズ変更の内容を書いておりましたが
[Oracle初心者運用メモ]一時領域サイズ変更

今度はOracle10gのDBサーバで
同様にディスク使用量が急激に増えてしまいました。

前回のOracle11gの時と同じようにサイズ変更を行えばいいかな
と軽く考えていたのですが
Oracle11gで実施したサイズ変更コマンドを実行すると
エラーになってしまいました。

調べてみると、Oracle10gで一時領域のサイズを縮小するには
一時領域を新しく作り直す必要があるそうです。

下記の手順でコマンド実行により可能です。
(SPLPLUSを起動して実行)

1.TEMP領域に一時領域を追加
alter tablespace TEMP_AREA_NAME add tempfile ‘新規TEMPファイルパス’ size 500M;

2.追加した一時領域の自動拡張制限を設定しておく
alter database datafile ’新規TEMPファイルパス’ autoextend on maxsize 10000M;

3.既存の一時領域をオフラインにする
alter database tempfile ‘既存TEMPファイルパス’ offline;

4.既存の一時領域を削除する
alter database tempfile ‘既存TEMPファイルパス’ drop including datafiles;
↑↑↑
本当は、これで、物理ファイルも削除されるはず(?)だけど
本番DBサーバでは物理ファイルが削除されていなかったので
Oracleサービス停止して、物理ファイルのみ別途削除を行いました。

※Enterprise Managerでも設定可能です。

 

 

 

 

[Oracle初心者運用メモ]一時領域サイズ変更

 

Oracleマスターなどの資格を持っていない初心者なのですが、
試行錯誤しながら構築-運用を行っています。
その中で困ったことを投稿していきたいと思います。

≪Olacle11gの一時領域サイズ変更≫

DBサーバ(Olacle11g)のディスク使用量が急激に増えたため
調べたところ、Oracleの一時領域ファイル(TEMPファイル)のサイズが
18GBまで増えていました。

一時領域サイズの設定を確認したところ
導入時の初期サイズは500MBで無制限の自動拡張の設定でした。
(無制限の自動拡張はデフォルト設定)

一時領域が増えた原因は今後調べるとして。。
このままだとディスク空き容量がなくなってしまうため
一時領域サイズ縮小と自動拡張の制限設定を実施することになりました。

 

SPLPLUSを起動し、下記のコマンドで対応できます。

1.一時領域サイズ縮小
ALTER TABLESPACE TEMP SHRINK SPACE KEEP 500M;

2.一時領域自動拡張制限サイズ変更
ALTER DATABASE TEMPFILE  ‘TEMPファイルパス’ AUTOEXTEND ON MAXSIZE 5120M;

※Enterprise Managerでも設定可能です。