2007-01-01から1年間の記事一覧

データベース再起動

デフォルトのコンフィグではつらいので、色々設定を変えた 設定によっては(静的な項目は)データベースの再起動が必要であり、この場合はOSのアカウントとパスワード、そしてデータベースのユーザーとパスを入力しなければならない パスワードは必須項目なん…

PHPでのOracle利用(20)──ジオメトリカラムカスタマイズ

条件を絞る事で、かなりの高速化が図れた。やはりOracleはタイトな利用かしっかりとした効率化を前提として運営しなければならないらしい アバウトの占める割合が他のDBに比べて狭いのだろう。そりゃ、解説も発売される高速化もある程度(それでも完全とは言…

PHPでのOracle利用(19)──形式指定検索式

戦慄の事実に気がつく。タイトルが統一されてる所為で、何書いたか訳がわからん 仕方ないので今週末は、順次タイトルの修正をすることにする そもそもカテゴリと内容が微妙に一致していない(php話題が存在しないにも関らずphpカテゴライズされてたり)のが問…

PHPでのOracle利用(18)──索引カスタマイズ(3)

CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX;こいつを CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS ('sdo_rtr_pctfree=0') PARALLEL;にしてみた。読み取りのみを考えて領域を確…

PHPでのOracle利用(17)──索引カスタマイズ(2)

色々と索引作成の折に出来る事を調べてみた CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INDEX;まずはINDEXとUNIQUE INDEX INDEXを定義して作成すると、値が一意ではない索引に UNIQUE INDEXを定義すれば、値が一意な索引が出来上…

PHPでのOracle利用(16)──索引カスタマイズ(1)

次の問題はインサートの失敗──つまり、ジオメトリカラムの入力に制限が掛かってるらしいのでそれ──をどうにかする事 もう一つはDBの調整だ とりあえず、現状では格納されたデータを望む形に引き出して加工できるようになった。が、いざ有る程度の情報数を請…

PHPでのOracle利用(15)

AjaxにJSON形式で空間情報を引き渡している。その際にX座標の情報がブランクになる不具合の解決をごちゃごちゃと問題のブランクは、ポイント以外の複数個の座標を持つ空間情報で発生している模様 WKTの分割処理に問題がある様子。しかし、正常な処理と異常な…

エラーメモ

syntax error at or near "XXX" at character主に文法エラー XXXという代物は定義されていない duplicate key violates unique constraint "geodata_pkey"プライマリーキーの重複とか current transaction is aborted, commands ignored until end of transa…

アルゴリズム嫌悪感

スクリプト関係の参考サイトを漁っていたら、ちょっと気になる記述を発見 if(x==5){ }そして if(5==x){ }後者の方が条件を把握しやすいけど、きもいらしい …よくわからん。しかし、そう意識してから作業中のスクリプトをみると if(x==5)が多い事に気が付く …

文字列の空白を削除する

何かと文字列に含まれる半角空白は邪魔だ 文字列演算式で消す事も出来るが、それだとコード自体が汚くなるしどうしても不安定だったりする 何よりも使い勝手が悪い。だから、関数を利用しよう trim($string) 文字列の両端の半角スペースを削除する rtrim($st…

PHPでのOracle利用(14)

テーブルには連続したid(整数)でジオメトリを流し込んだ 失敗したデータのidは飛ばされ、次のデータがインサートされる仕様 つまり前の行と連続しないidが振られた行は、失敗したデータの後ろ 以上の観点からこんなスクリプトを組んだ ※下記のスクリプトだと…

PHPでのOracle利用(13)

改めて、索引を消去して一からインサートし直してみた phpからインサートを発行しようとも思ったが、途中経過の確認が出来ない(出力をフラッシュに出来る技術力が無いから)のでPHPはインサートクエリが詰まったSQLファイルを生成するのに利用した 作成したsq…

PHPでのOracle利用(12)

正式な(というのも可笑しな話)テストデータをDBに突っ込んだ 50830件の空間データ。全件インサートに一時間以上掛かった… やはりMySQLが高速DBと言われているのは理解していたが、これほど速度に差異があるとは予想外だった。ホストサイドのCPUが上昇したま…

PHPでのOracle利用(11)

一旦、テーブルを綺麗に掃除してから新しくテストデータを格納する ・空間検索にヒットする空間 ・空間検索にヒットしない空間 ・空間検索の条件ぎりぎりの空間 この三種類の空間をポリゴン、ライン、マーカーで用意する。丁度、9個のデータが存在するという…

PHPでのOracle利用(10)

解決して、空間検索が戻ってくる形になったのでPHPスクリプトにて発行した 結果は下記 ちなみに、返された日本語が文字化けしている問題は文字コード変換で解決した。htmlentitiesはマルチバイトに対応してないのか、通した日本語が文字化けてしまい、二重に…

PHPでのOracle利用(9)

前回の問題解決 …原因はスペルミスorz USER_SDO_GEOM_METADATAに追加していたエントリーのジオメトリカラム名称を間違えていただけでした。geomをgoemとか書いてた…。これじゃジオムじゃなくてゴエム(笑 INSERT INTO user_sdo_geom_metadata (TABLE_NAME, CO…

PHPでのOracle利用(8)

問題となってるUSER_SDO_GEOM_METADATAというビューを探してみると、見当たらない! というか、ビューを利用しないと検索も出来ないのか… PostGISだと予め用意してあったようだがoracleだと自力。世知辛い世の中である ビューというもののお勉強から始める羽…

PHPでのOracle利用(7)

以下のようなクエリを組んで実行した CREATE INDEX gis_sp_index ON gis_t(geom) INDEXTYPE IS MDSYS.SPATIAL_INSEX;結果は ORA-29833: 索引タイプが存在しませんむう? 矢張り、テーブルの作り直しから始めなければならないのか oci8関数でもそうだったが、…

PHPでのOracle利用(6)

接続検索のスクリプトが完成したので、具体的なクエリーを当てはめる そう、空間検索だ とりあえず、以下のようなクエリを組んでみた SELECT SDO_UTIL.TO_WKTGEOMETRY(geom) FROM gis_t WHERE SDO_FILTER(SDO_UTIL.FROM_WKTGEOMETRY( 'POLYGON ((5.0 1.0, 8.…

PHPでのOracle利用(5)

問題解決 何の事は無い、定義が緩い所為で空回りしている部分があっただけだった 定義を強化して解決。ともすれば、nullだった場合の回避も盛り込むべきなのかもしれない こんな感じになった 2007/12/13 * * 参考 * * Oracleを空間DBにした情報引出し * * ス…

PHPでのOracle利用(4)

前回、呼び出したジオメトリ情報が Array ( [ID] => 1 [SDO_UTIL.TO_WKTGEOMETRY(GEOM)] => OCI-Lob Object ( [descriptor] => Resource id #5 ) )という風になっていて、肝心のWKTを習得出来ずに困惑した 今回は、これの解決問題のジオメトリ情報が格納され…

Googleさんの検索

phpとOracleとかGISとか、色々と企んで模索している訳だが… 参考資料を探していて、ここ(悲喜交々)に辿り着くことが多い いや、ここに記す為にも探してるのに本末転倒じゃないですか…orzちなみに、 php オラクル ジオメトリで検索したらトップに出た(汗 あ、…

PHPでのOracle利用(3)

処理には問題なさそうだが、何故エラーが排出されているのか とりあえず SELECT * FROM gis_tというクエリが怪しいと色々こねくり回してみる とりあえず、全ての行に対しての指定を止めて名称で指定してみる SELECT id FROM gis_tすると… Array ( [ID] => 1 …

PHPでのOracle利用(2)

前回、接続が出来ないとか何とか言ってたがいつのまにやら完了 phpでの接続確認も完了した。以下その時のメモOracle関数は、他の関数に比べて少々毛色が違う印象だ 流れとしては 接続 ↓ クエリー発行 ↓ レスポンスの習得 ↓ 切断(開放)だが、クエリー発行の部…

PHPでのOracle利用──Oracleエクステンション活性化(の注意事項)

いよいよphpで動かしてみる 以下、そのときに生じた問題対処覚えphp.iniより該当の記述のコメントアウトを消す extension=php_oci8.dllもう一つの接続は6で消される予定らしく、激しく推奨されないんでこっちだけ活性化オラクルさんをインストールする ※一応…

OracleでもGIS(5)

設定をいじる前にちょっとした実験をしてみた 重複を許さない主キーが設定されているデーブルに対してOracle Enterprise Manager 10g Database ControlとSQL Plusで同じ主キーのインサート分を発行するのだ 先に発行したほうが通り、後が弾かれるか双方とも…

SQL Plusコマンド一覧

@ @@ / ACCEPT APPEND ARCHIVE LOG ATTRIBUTE BREAK BTITLE CHANGE CLEAR COLUMN COMPUTE CONNECT COPY DEFINE DEL DESCRIBE DISCONNECT EDIT EXECUTE EXIT GET HELP HOST INPUT LIST PASSWORD PAUSE PRINT PROMPT QUIT RECOVER REMARK REPFOOTER REPHEADER …

OracleでもGIS(4)

Oracle Enterprise Manager 10g Database ControlのiSQL*Plusでは(というか更新クエリを発行した場合は)デフォルトでロールバック処理が入る 具体的には、接続から切断を行わないとその間に発行された更新や新規は実際に反映されないという事。終了までの間…

OracleでもGIS(3)

データの格納に成功。ただし、ポリゴンとポイントのみ 格納されたジオメトリデータは以下の形式で格納されている様子 GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)む…わかりやすい…流石である ちなみに格納に利用したイン…

OracleでもGIS(2)

Oracle Enterprise Managerだが、どうもadmnという感じがしない むしろログの解析や状況の記録に特化した管理システムだと見受けられる。そりゃ、サーブレットで提供される代物である。OracleとしてはOracleが入れられたDBに別端末から管理できるように用意…