読者です 読者をやめる 読者になる 読者になる

misc.log

日常茶飯事とお仕事と

ODP.NETのDLL名、変わっていたのね

久々にWindows Formsのアプリをいじることになって、客先からソースをもらって改修作業を……と思ったら、開発環境やら手順やらが全くなくて四苦八苦。その中で、Oracle接続に使っているライブラリが「Oracle.ManagedDataAccess」ってなっていたのでなんだろう…

SQL Server、OpenQueryでのSQLは文字列連結などが使えない?

SQL ServerからOracleにリンクテーブル経由でアクセスしていろいろデータを持ってくる処理を作成中。サーバー名やらスキーマ名やらをピリオドでつないだSQL記法だとインデックスが使えず遅いため、SQL ServerのOpenQuery命令でSQLごとOracleに渡し、Oracle側…

Oracle、to_charで'00000000'に変換したあとのsubstrで桁がおかしい?

Oracleのシステムで、「20160825」のようにnumber型で年月日情報持っているというテーブルがあり、これを別RDBに移植するという作業をやってます。で、このデータを扱う処理では下記のようなto_char処理で年月日を「2016/08/25」に変換していました(下記サ…

文字コード関連の過去エントリー

なんか自分よりずっと前からウェブ関連やってる人たちが全然文字コードとか気にしてなくてノウハウも持ってなくてちょっと参ってるので、とりあえず過去に自分が書いたものを列挙しておきます。何か聞かれたときにさっと調べられるように。 文字コード全般 b…

PowerCenterのバルク転送モードはSQL*Loaderを使う?

PowerCenterでOracleを転送先にしたデータ転送を行おうとした際に、「索引が定義されています」というエラーメッセージが出てデータ転送に失敗するという現象が発生。調べてもらったところ、データ転送時の設定で「バルク(bulk)」が指定されているとこの現…

ロードされているODP.NETライブラリのバージョンを調べる

昨年だったかに、ちょっと複雑なデプロイ環境を作る必要があり、その環境で実際に使われているODP.NET(Oracle Data Provider for .NET)のバージョンを調べなければならなかったので作ったコード。どこかで使いそうなので貼っておきます。 'Oracle.DataAcce…

Oracle DBのNumber型をSingleで受けたら誤差った

絶対忘れてたぶん次も調べるだろうからメモっておきます。やったのは私ではないのですが、相談を受けてちょいと調べました。 環境 .NET Framework 3.5 + C# Oracle Database(バージョン不明) 起きたこと Oracle DatabaseのNumber型(少数含む)をDatasetで…

ODP.NETと.NET Framework 4.0

.NET Framework 4.0に対応したODP.NET(Oracle Data Provider for .NET)は、Oracle 11g対応のODP以降しか無いのですね。10g用として公開されているODP.NET(ODAC 10.2.0.2.21 に含まれるもの)は、.NET Framework 1.1と2.0用。では、以下の疑問はどう解決す…

ORA-12542 TNSアドレスがすでに使用中です

現場でこのようなエラーが。どうやら、サーバーが使えるポートを使い果たしたことが原因のよう。ポートは一度利用されると、一定時間再利用できないらしいです(デフォルトは4分)。で、接続と切断を繰り返すようなツールなどが動いた場合に、ポートを使い果…

Oracle 11gと10gと発行者ポリシー

Oracle 10g対応のODP.NET(Version 2.102.5.0)などを使っている環境のODP.NETその他を、いきなり11gのものに入れ替えて動くだろうか、という話が職場で起きている。実際に動いたという話も出ているので(試した人がいる)、発行者ポリシーによってバージョ…

Excel VBAの文字列操作関数がコンパイルエラー?

客先の環境でテストをしている同僚より、自社では動いたExcel VBAの命令がコンパイルエラーで動かないとの連絡が。問題の関数はTrim(文字列の空白削除)。VBAはVisual Basic 6.0に似た言語であることから、VB6.0のランタイムなど、何か必要なモノが入ってい…

ExcelからOracleにVBA経由でアクセスするときの……

VBA経由でOracleを操作するときのライブラリを調べるのに、とりあえず10.2.0.5のOracle Client全部入り環境に何が入っているかを見てみた。可能であれば、最小構成のOracle Clientしか入っていない環境で動かしたいのだけど……たぶん使ってるのはこのOracle P…

Oracle CHAR型のサイズ指定方法

Oracleの固定長文字列型「CHAR」ですが、サイズ指定にはバイトと文字数の両方が使えるんですね。しらんかった。テーブルの宣言時に、サイズ値の後ろに「BYTE」とつけるか「CHAR」とつけるかの違いだそうです。 詳しくはここで説明してくれてますね。 Differe…

OracleのCHAR型(固定長文字列)とADO経由での検索

OracleでCHAR定義されたカラムの情報を、ADO経由で検索した際にうまく結果が返らないという相談を受けたのですが……。たしかOracleのCHAR型って、勝手に後ろに空白が入って固定長フルサイズまでパディングされたような。そうすると、厳密な一致という条件で検…

ODP.NETのバージョンでトラブル

以前、アセンブリバージョンリダイレクトについて書きました。これを使った環境で、なんかエラーが(笑)。 やりたかったことは ODP.NET 2.102.5.0で作成したプログラムを、ODP.NET 2.102.4.0だけが入った環境で動かしたい ということでした。通常、古いバー…

ODP.NETとアセンブリバージョンリダイレクト

新バージョンのODP.NETを参照してビルドしたものを、旧バージョンのODP.NETが入った環境で稼働させる必要が出てきました。方法について調べていたところ、同僚からこのサイトを紹介されました。 バージョンリダイレクト/株式会社ミークス http://www.meeks.j…

Windows 7 32bit版にOracle 10g Clientをインストールしようとして…

行き詰まりました。環境移行開発の準備として、Windows 7 の32bit版(MSDNライセンスで入手しているのでエディションはUltimate)に対して、Oracle 10g 10.2.0.4のクライアントを入れようとしたのですが、以下のようなエラーがでてインストールが進みません…

64bit環境へのODP.NETインストールとアプリの配布

お仕事で64bit環境と32bit環境が混在する環境への配布を行う必要があるのですが、その辺りについての「どうすべきか」がよく分からないので調べています。 64bit環境にODP.NET 64bit版をインストールしてみる 64bit環境であるWindows Server 2008 R2に、ODP.…

まっさらのOracle Database 11g (11.2.0.1.0)で一緒に入ってくるODP.NET

http://d.hatena.ne.jp/frontline/20120425/p1 に書いた方法でインストールしたOracle Database、ODP.NETとか入っていないのかと思ったら、入っていました。 場所は、「C:\app\(userName)\product\11.2.0\dbhome_1\ODP.NET\bin\2x」。どうやら、.NET Framewo…

Oracle 11g 64bit版の仮想環境インストールでエラー

Oracle環境の構築やODP.NETを使ったアプリのビルド手順等の確認のため、VMware上に構築したWindows Server 2008 R2にOracle DBをインストールしていたのですが、こんなエラーが…… メッセージは「Incomplete dynamic bit lengths tree」、原因等についての補…

64bit環境でのODP.NET 64bit版、32bit版の共存

Oracle 11gから導入されたInstant Clientを使えばいけそうだけど、でもやっぱ共存となると要確認かな……というオチでした。Instant Clientも「よくわからないものは使うな」でNG出されそうなので、残念ながら環境を別々に作って考え事を減らす路線でいきます…

Oracleでロックなどによる待ち時間の指定

てっきり接続文字列で指定するものだとおもってたのですが、あれは「接続タイムアウト」の指定なんですね。というわけで、接続後の処理でのタイムアウト指定の方法を調べました。2通りあるようですね。 SELECT文に「FOR UPDATE WAIT (秒数) 」で事前宣言する…

Oracle DB、Number型をExecuteScalarで取ったら…

Oracleの数値型は「Number」という型で桁数を指定して定義されます。では、「NUMBER(12)」と定義された列の値を、OracleCommand.ExecuteScalar*1で取得してみました。 NUMBER(12)の値は、中身が1桁だろうがLong型(64bit整数)で返ってくる。 ちなみに、.NET…

ODP.NETでの接続文字列

Oracle DBへの接続処理で指定する接続文字列、あれにtnsnames.oraに書かれている設定を直指定できるんですね…。 "user id=scott;password=tiger;data source=" + "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)" + "(HOST=sales-server)(PORT=1521))(CONNECT_DATA="…

Repeatable Readって?

データベースとしてInformixを使ったシステムの処理を追いかけていて、分離レベル(Isolation Level)に「リピータブル モード」というのが出てきてちょっとつまってます……この辺、きちんと説明できない自分発見(わかってましたけど)。とりあえず、今のシ…

OracleとVisual Studio 2010での開発はどうするの?

正直、最新環境が全然わかりません。以下の資料をみておこう… 【セミナー動画/資料】1から学ぶ!.NET + Oracle Database 11g アプリケーション開発入門 http://blogs.oracle.com/oracle4engineer/entry/1net_oracle_database_11g ODP.NETを普通に使ってよい…

Oracle 64bitのデータを32bitに移す

職場で質問が出ていたので調べてみた。 THe Mail Archive / 64bit 5o 32bit downgrade http://www.mail-archive.com/oracle-l@fatcity.com/msg18901.html ここからマイグレーションガイドをみろという情報を得る。特に「Changing word-size」に注目とのこと…

MS製Oracleクライアントが.NET 4.0以降は非推奨に

InfoQより。 マイクロソフト製OracleClientが非推奨に http://www.infoq.com/jp/news/2009/06/oracleclient_deprecated Oracleへの接続を行う.NETアプリを作る場合、接続に用いるライブラリにはいくつか選択肢がありまして、代表的な物にOracle製の「ODP.NET…

DBサーバーとクライアントの通信

DBサーバーとクライアントの間で行われる通信についていくつかメモ。 ADO.NET Oracle用データプロバイダの性能傾向の違い http://d.hatena.ne.jp/Kazzz/20070405/p2

Oracle11g、ODP.NETの配布

OTNから、xcopyによるクライアントライブラリの配布が可能になっているとのニュースメールが届いたので見てみた。 Instant ODP.NET Deployment http://www.oracle.com/technetwork/issue-archive/2008/08-nov/o68odpnet-101744.html downloadable from OTN h…

Windowsの設定とOracleの設定と

仕事メモ。 SGAへの2GB以上のメモリ割り当て Windows Server側の起動オプションで設定し、アプリが利用するメモリ空間の割り当てバランスを変えることで可能に。これを4GB RAM Tuningと呼ぶ(略称: 4GT)。疑問点は これを指定しても、上限は3GBなの?具体的…

Oracle10gのカラム(列)数上限

1000が上限。明確な定義の資料は見あたらなかったが、下記のエラー説明に記載がある。 ORA-01792 2 表またはビューに指定できる最大列数は1000 です。 原因: 1001 列以上ある表またはビューを作成しようとしたか、列を追加しすぎたため許容できる最大の列数1…

Oracle SQL Developer1.5.1でACCESSファイルにアクセスする

現在関与しているシステムで、カラム数が500近くも定義されたテーブルがあるため、CSEなどでの閲覧や編集に支障が出ている、ということから、Oracleが出しているSQL Developer1.5.1を試してみた。本来の目的は問題無く達成できたのだが(テーブル設計がアホ…

スキルレベル

客先常駐チームから、リリース物として出したCDの、XCopyで配布できるアセンブリフォルダに必要なDLLが無い、との指摘が。たしかに見てみると、Oracle、ODP.NETのDLLが入ってない。客先用PCどころか、客先常駐チームが使っているビルド用PCにも入っていない…

Oracleの接続処理をちょこっと高速化できない?

キーワードは「SQLNET.AUTHENTICATION_SERVICES」で。結果...無理でした。Windows Server 2003でRACを使った環境では、サーバー間ではNTSを使った認証を行うので、設定は(NTS)にしないといけない。クライアント側の設定も試行してもらったが、速度向上は見ら…

Oracle、Opatchがエラーで進まない

仕事で使っているOracleの個別パッチ8を適用しようとして、できないPCに遭遇。 コマンドプロンプト上の作業で以下のエラーが出る。 Execution of 'cmd /C C:\tmp\5502226\custom\scripts\pre.bat -apply 5502226 ': Environment variables passed is not cor…

Oracle本がいくつか必要そうだ

プロとしてのOracle 物理設計入門 (Oracle現場主義)作者: (株)メトロシステムズ出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/09/29メディア: 単行本 クリック: 14回この商品を含むブログ (10件) を見る この辺かなぁ。

OracleのOIT(索引構成表)

まだ根本がよくわかっていないのかもしれないけど、とりあえず、OITの主キーだけを再構成(Rebuild)することはできないようだ。実データとくっついているからかな。「ORA-28650: IOTの主索引は再構築できません。」で検索すると、どうやらテーブルごと Alter …

Oracle本

3年前に購入した本、やっと役に立つときが来た。Oracle逆引き大全500の極意 DB管理編―Oracle 10g/9i(Windows/UNIX)対応作者: ブリリアントスタッフ出版社/メーカー: 秀和システム発売日: 2004/09メディア: 単行本この商品を含むブログ (9件) を見る

特定グルーピング条件で、あるカラムが最大になるレコードを抽出

http://otn.oracle.co.jp/forum/message.jspa?messageID=8050188&#8050188 ここの情報を参考にして対応。 今週いっぱいでテスト予定。

V$SESSIONからTERMINALカラムを取る際の問題

たまには仕事関連を。 OracleのV$SESSIONテーブルから、セッションを確立している端末の名前を取るにはTERMINALカラムを見れば良いが、この情報が、クライアントライブラリVersion 9.0.2.4からだと取れないようだ。 業務処理のログなどに、この情報を利用し…

ジャストシステム/xfyとOracle

http://enterprise.watch.impress.co.jp/cda/software/2006/03/01/7314.html http://www.justsystem.co.jp/news/2006f/news/j03011.html?w=hmidx Oracleとのxfy連携がニュースリリースに。DB2でも採用され(コードネーム:Viper)、先は明るいね。

OracleのCHAR型(固定長文字)に対する検索

Oracleで、固定長カラムに検索する場合、今作っているライブラリでは文字が無いところに空白を埋めてやらないと検索に引っかからないという現象が出ていた。どうやら以下のURLにある情報と関連していたらしい。 http://www.atmarkit.co.jp/bbs/phpBB/viewtop…

OracleとSQL ServerのSQLの違い

備忘録。 2列に対してDistinctを用いた検索結果の件数を数える場合のSQLで、違いがあった。 [SQL SERVER] Select count(*) From (Select Distinct A, B From TableC) As Result [ORACLE] Select count(*) From (Select Distinct A, B From TableC) 違いは、F…

Shift_JIS→UNICODE→Shift_JISでおかしくなる文字 (1)

テスト中。Shift_JISで定義されたORACLE9iに、Shift_JISで書かれたテキストの文字をVB.NET経由で書き込み、再度読み込んでもとのデータとの一致を確認してみる。だめっぽい。 記号系の文字が化けるのは判るとしても、「〜」がよくわからない。最初は81-60と…

Oracle 10g

オラクル10gが詰まった富士通のサーバーが職場にある。本来はいじり倒しておかないといけないところなんだが、もう気力が圧壊寸前の深度で潜航中なので、だめ。もう一人のチームメンバーに任せっきり。だめだねなんかもう。 かろうじて、紀伊国屋で買ってき…