X

Katsumi's Blog

Recent Posts

[Oracle Code Tokyo] Ruby, Python, JDBC サンプル

先週木曜のOracle Codeの私のセッションでデモしたソースコード3つを以下ご紹介します。 最初の2つのPythonとJavaは http://livesql.oracle.com/ が提示してくれるコードサンプルを基に編集したものです。 Pythonは複数行まとめてINSERTするスニペットをコピペし、編集したものです。 Javaは単純なSELECTのスニペットをNetbeansにコピペし編集したものです。 RubyのサンプルはPythonコードからの最低限の変更で動くようにしたものです。 どのように編集したか、動作させる環境はなどの情報は公開予定のPDFにも少し説明してありますので後日是非ご覧ください! 1. Python import cx_Oracle #create connection object con = cx_Oracle.connect('scott','tiger','localhost/pdb1') #define multiple rows to insert rows = [("{hoge:'python_0'}",), ("{hoge:'python_1'}",)] #create cursor object cur = con.cursor() #prepare a statment to run prepared_statement = 'insert into ORACLE_CODE(C1) values (:C1)' #execute the statment with the bind value(s) cur.executemany(prepared_statement, rows) #print number of affected rows print('Number of rows inserted: ' + str(cur.rowcount)) #commit the transaction con.commit() 2. Java package testsql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class TestSQL { public static void main(String[] args) { TestSQL t = new TestSQL(); try { t.getEmps(); } catch(Exception e){e.printStackTrace();} } public void getEmps() throws SQLException{ DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost/pdb1", "scott", "tiger"); PreparedStatement statement = conn.prepareStatement("select C1 from ORACLE_CODE"); ResultSet resultSet = statement.executeQuery(); while(resultSet.next()){ System.out.println(resultSet.getObject("C1")); } } } 3. Ruby require 'oci8' #create connection object con = OCI8.new('scott','tiger','localhost/pdb1') #define multiple rows to insert rows = ["{hoge:'ruby_0'}", "{hoge:'ruby_1'}"] #prepare a statment to run prepared_statement = 'insert into ORACLE_CODE(C1) values (:C1)' #create cursor object cur = con.parse(prepared_statement) cur.max_array_size = 2 cur.bind_param_array(:C1, rows) #execute the statment with the bind value(s) rowcount = cur.exec_array #print number of affected rows print('Number of rows inserted: ' + rowcount.to_s) #commit the transaction con.commit()

先週木曜のOracle Codeの私のセッションでデモしたソースコード3つを以下ご紹介します。 最初の2つのPythonとJavaは http://livesql.oracle.com/ が提示してくれるコードサンプルを基に編集したものです。 Pythonは複数行まとめてINSERTするスニペットをコピペし、編集したものです。 Javaは単純なSELECTのスニペットをNetbeansにコピペし編集したも...

IT

tty(端末)マークダウンとそれをマークアップ(HTML化)するためのsed

blogs.oracle.com が新しいプラットフォームに移行します。 移行後に見かけが変わってしまうのでこれを機会にこのブログでの私なりの"端末マークダウン"を紹介します。参考になれば! このブログではセッションログをコピペする際にbash,sqlplus,mysql,Powershell,SQLclなどのプロンプトは白、コマンドは黄色、出力はCSSで指定したデフォルト(緑)、省略は薄色と色分けしていました。 bash,sqlplusについてはcontinuation(複数行またがり)に対応してます。 以下例です。 マークアップする前のplain text: $ sql soe/soe@localhost/apex SQLcl: Release 12.2.0.1.0 RC on Fri Apr 07 12:09:40 2017 [...] SQL> l 1 select '2 lines command sample' t 2* from dual; SQL> / T ---------------------- 2 lines command sample 末尾のsedを通した後blogに貼りつけた後の最終的な見かけ: $ sql soe/soe@localhost/apex SQLcl: Release 12.2.0.1.0 RC on Fri Apr 07 12:09:40 2017 [...] SQL> l 1 select '2 lines command sample' t 2* from dual; SQL> / T ---------------------- 2 lines command sample Qiitaでは少し近いのがありそうです。GitHubでは 'shell' しかなさそうでした。 Qiitaでコンソール(シェル)のコマンド実行を書くときとかのコードブロック - Qiita shell-session ・・・ 出力も含めセッションをそのまま書きたいとき Googleしてみましたが"tty markdown"の情報は見つかりませんでした。 今後も標準的なものが確立されることは無いのでしょうか? asciinemaというアスキー動画が5年前に出てきたくらいなので今後標準的なマークダウン方式やサービスが出てきそうな気もします。 最後に sed スクリプトです。HTMLエスケープ後に "sed -f"にかければHTML化できます。10年間メンテしてきたもので今見てもなぜ存在するのか理解できない行もありますが。。 1i <pre> s/^\(bash.*[$#]\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\(mysql>\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\(SQL&gt;\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\(&gt;&gt;\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^PS \([A-Za-z:\]*&gt;\) \(.*\)/<span style="color: rgb(255, 255, 255);PS \1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/\(\[\.\.\.\]\)/<span style="color: rgb(254, 165, 255);">\1<\/span>/ s/^\([>$#]\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\(&gt;\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\([0-9]\{3,4\} \/.*[$#]\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\([0-9]:[0-9]\{3\}>\) \(.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ s/^\('.*\)/<span style="color: rgb(255, 255, 255);">\1<\/span>/ s/^ \{1,2\}\([0-9]\{1,2\}\*\{0,1\}\) \(.*\)/ <span style="color: rgb(255, 255, 255);">\1<\/span> <span style="color: rgb(255, 255, 0);">\2<\/span>/ $a <\/pre>\n

blogs.oracle.com が新しいプラットフォームに移行します。 移行後に見かけが変わってしまうのでこれを機会にこのブログでの私なりの"端末マークダウン"を紹介します。参考になれば! このブログではセッションログをコピペする際にbash,sqlplus,mysql,Powershell,SQLclなどのプロンプトは白、コマンドは黄色、出力はCSSで指定したデフォルト(緑)、省略は薄色と色分けし...

Linux

SQL*Loaderで/dev/urandomが生成する乱数をロード

sqlldr 12.1.0.1からの新機能のExpressモードで/dev/randomを使ってみました。 以下を参考にして8-bitおよび16-bitの正整数の乱数をロードします。bashで0〜99の乱数を得る | kanonjiのブログ-tu2は2バイト単位で10進数で出力bashの "<()" って入れ子できるんですね。実行時間は参考値です。DBの中で乱数生成して行を作るのとどちらが速いでしょうか。$ time sqlldr scott/tiger@localhost/apex table=cardinality_t \> data=<( paste -d ',' \> <(od -tu1 -vAn --width=1 /dev/urandom) \> <(od -tu2 -vAn --width=2 /dev/urandom) |> head -40000000 \> ) direct=trueSQL*Loader: Release 12.2.0.1.0 - Production on Wed Apr 5 17:21:47 2017Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.Express Mode Load, Table: CARDINALITY_TPath used: DirectLoad completed - logical record count 20000000.Table CARDINALITY_T: 40000000 Rows successfully loaded.Check the log file: cardinality_t.logfor more information about the load.real 0m35.055suser 0m6.875ssys 0m1.883s最大値がそれぞれ8ビット、16ビットの最大値になるのを確認できます。SQL> select min(c1),max(c1),min(c2),max(c2) from cardinality_t; MIN(C1) MAX(C1) MIN(C2) MAX(C2)---------- ---------- ---------- ---------- 0 255 0 65535Elapsed: 00:00:03.494DB In-Memory機能を使うと100倍以上速くなります。SQL> alter table cardinality_t inmemory priority high;Table CARDINALITY_T altered.Elapsed: 00:00:00.079SQL> select min(c1),max(c1),min(c2),max(c2) from cardinality_t; MIN(C1) MAX(C1) MIN(C2) MAX(C2)---------- ---------- ---------- ---------- 0 255 0 65535Elapsed: 00:00:00.030

sqlldr 12.1.0.1からの新機能のExpressモードで/dev/randomを使ってみました。 以下を参考にして8-bitおよび16-bitの正整数の乱数をロードします。 bashで0〜99の乱数を得る | kanonjiのブログ -tu2は2バイト単位で10進数で出力 bashの...

Data Types

画像をGeoJSONに変換してOracle Spatial ボロノイ図テストデータ作成 その1

地理情報関連でたまにボロノイ図(または Thiessen Polygon)の話題が出ます。 日本語のWikipediaページを見ると難しいことが書いてありますが実際はより広くいくつかの業界や公共分野で使われるようです。OracleデータベースのSpatialオプションでどうやるのかを少し調べたところ少なくとも過去のバージョンでは 以下のようなJavaプログラムを書いて生成する必要があったようです。Oracle BI по-русски: Spatial: диаграмма Вороного (Java)import oracle.spatial.geometry.JGeometry;このJavaが Oracle DB 12c でも動くか試そうと思いたちました。まずは正解付きのデータを探します。 英語のWikipediaに出てきている画像(By Balu Ertl (Own work) [CC BY-SA 4.0], via Wikimedia Commons)が単純なのでこれを使うことにします。散らばっている20個の点から20個の多角形を生成した例です。Voronoi diagram - Wikipedia20 points and their Voronoi cellsさてこの画像をOracle DBにどうやって取り込みましょう?? この画像自体ベクターデータのようなのでそちらから行くのが正攻法だとは思いますが今回は以下のビットマップをPDFやらGeoJSONに変換するツールを見つけたのでこれを使ってみました。Peter Selinger: Potracetransforming a bitmap into a smooth, scalable image.GeoJSONを12.2にロードし SQL Developerでベクター描画させた結果が以下です。12.2 新機能も使っています。続きでこれまでの補足やここからの作業について書く予定です。

地理情報関連でたまにボロノイ図(または Thiessen Polygon)の話題が出ます。 日本語のWikipediaページを見ると難しいことが書いてありますが実際はより広くいくつかの業界や公共分野で使われるようです。 OracleデータベースのSpatialオプションでどうやるのかを少し調べたところ少なくとも過去のバージョンでは 以下のようなJavaプログラムを書いて生成する必要があったようです。 O...

SQL & Tools

事業所個別郵便番号県別集計Top 10. 郵便番号JSON その6

今日は追加ロードした個別郵便番号が何県に多いか出してみます。郵便局ホームページの説明を見ても番号だけで個別かどうか判定できるのか分らなかったため今回は以下の仕様を利用します。madefor/postal-code-api: Postal Code API大口事業所個別番号では英語の住所は空になっています以下の結果になりました。少し意外な結果かと思いますがいかがでしょう。。。SQL> l1 SELECT2 t.response.data[0].ja.prefecture,count(*)3 FROM API_RESPONSES t4 WHERE5 t.response.data[0].en.prefecture IS NULL6 GROUP BY t.response.data[0].ja.prefecture7 ORDER BY 2 DESC8* FETCH FIRST 10 ROWS ONLYSQL> /DATA COUNT(*)------------ --------東京都 4581愛知県 1543北海道 1239福岡県 836大阪府 832神奈川県 795静岡県 749埼玉県 664新潟県 591千葉県 59010 rows selected.

今日は追加ロードした個別郵便番号が何県に多いか出してみます。 郵便局ホームページの説明を見ても番号だけで個別かどうか判定できるのか分らなかったため今回は以下の仕様を利用します。 madefor/postal-code-api: Postal Code API 大口事業所個別番号では英語の住所は空になっています 以下の結果になりました。少し意外な結果かと思いますがいかがでしょう。。。 SQL> l1 SELECT...

Data Types

2県以上にまたがる郵便番号を求めるSQL。郵便番号JSON、その5

今回はストリーミング的にOracle DBにロードした郵便番号データの中から複数県にまたがるものを問い合わせるSELECT文の紹介です。郵便番号や市区町村データを取り扱うときにはまったこと - Qiita市区町村はおろか県を飛び越えて同じ郵便番号を持ちうるケースがあるQiitaで書いてあるように3件返ってきました。全部で119777の郵便番号がありますが2秒かかってないですね。SQL> set timing onSQL> l1 select count(t.pref),code2 from3 api_responses,4 json_table(response,5 '$' columns (6 code varchar path '$.code',7 nested path '$.data[*]'8 columns (9 pref varchar path '$.prefcode'10 )11 )12 ) t13 group by code14* having count(unique(t.pref))>1SQL> /COUNT(T.PREF) CODE------------- -------- 2 8710000 2 4980000 2 6180000Elapsed: 00:00:01.84

今回はストリーミング的にOracle DBにロードした郵便番号データの中から複数県にまたがるものを問い合わせるSELECT文の紹介です。 郵便番号や市区町村データを取り扱うときにはまったこと - Qiita 市区町村はおろか県を飛び越えて同じ郵便番号を持ちうるケースがある Qiitaで書いてあるように3件返ってきました。全部で119777の郵便番号がありますが2秒かかってないですね。 SQL> set...

SQL & Tools

最強郵便番号を求めるSQL。郵便番号JSON、その4

今回はネットワーク経由でストリーミング的にOracle DBにロードした郵便番号データの中から最長のものを探してみます。最強(最凶?)は以下にあるように愛知県清須市とほぼ答えが出ているので今回はベスト3を出してみます。郵便番号や市区町村データを取り扱うときにはまったこと - Qiita合併で旧・西春日井郡春日町を編入した愛知県清須市にこういうすさまじいデータがあります 例)郵便番号 452-0961クエリーの1例がこれです。1位が"4520961"なので上記結果と一致していて66の町名に紐づいていることがわかります。SQL> l1 select count(t.pref),code2 from3 api_responses,4 json_table(response,5 '$' columns (6 code varchar path '$.code',7 nested path '$.data[*]'8 columns (9 pref varchar path '$.prefcode'10 )11 )12 ) t13 group by code14 order by count(t.pref) desc15* fetch first 3 rows onlySQL> /COUNT(T.PREF) CODE------------- -------- 66 4520961 65 4801103 46 4410302続きで上記SELECT文の解説をするか、または、上のQiitaページの後半にトライしてみます。

今回はネットワーク経由でストリーミング的にOracle DBにロードした郵便番号データの中から最長のものを探してみます。 最強(最凶?)は以下にあるように愛知県清須市とほぼ答えが出ているので今回はベスト3を出してみます。 郵便番号や市区町村データを取り扱うときにはまったこと - Qiita 合併で旧・西春日井郡春日町を編入した愛知県清須市にこういうすさまじいデータがあります例)郵便番号...

http

TwitterストリーミングAPIとSQL*Loaderの組み合わせでWBCのつぶやきを集めてみる

Oracle DB最新バージョンの12.2の sqlldr のExpress Modeでどこまでストリーミングに近い動作ができるか試してみました。 日本 vs USAの準決勝終了後8時間ぐらい経ってから収集開始しましたが時間経過に伴いtweet数が減ってくるのが確認できました。問題点はありますが比較的簡単に自然な文章を含むJSONデータを集められると思います。参考になれば!curl は挫折してしまい、以下を使いました。twitter/twurl: OAuth-enabled curl for the Twitter APITwurl is like curl, but tailored specifically for the Twitter API.シェル・スクリプトです。$ cat twitter_sqlldr.shfor ((i=$2; i>0; i--))do sqlldr scott/tiger@localhost/pdb1.identitydomain.oraclecloud \ table=TWEETS \ data=<(twurl -d track=$1 -H stream.twitter.com \ /1.1/statuses/filter.json 2>/dev/null) \ direct=true load=$3 commit_discontinued=true \ terminated_by='\t' log=/tmp/tw_ldr_${i}.logdone起動方法例です。キーワードは 'WBC'で500*100=50000行取り込みます。$ . twitter_sqlldr.sh WBC 500 100夜間流しっぱなしにした後の結果です。SQL> select2 substr(t.tweet.created_at,12,2)+9||'時',count(*)3 from tweets t4 group by substr(t.tweet.created_at,12,2)5 order by 16 /SUBSTR(T.TWEET.CREATED_AT,12,2)+9||'時' COUNT(*)------------------------------------------- ----------21時 784222時 634623時 579424時 329625時 230326時 173227時 193228時 1300時 71順番前後しましたがDDLです。SQL> ddl tweets CREATE TABLE "SCOTT"."TWEETS" ( "TWEET" VARCHAR2(32767), CONSTRAINT "VALID_TW" CHECK (tweet is json) DISABLE ) SEGMENT CREATION IMMEDIATE;この方法だと問題が2つあります。複数行まとめてCOMMITされるまで最新のつぶやきが見れない。SQL*Loaderとtwurlの再起動が入るのでその間のつぶやきの取れ漏れが発生する。2番目の問題は'count' パラメーターを使えれば問題ないと思います。Streaming API request parameters — Twitter Developersbackfill missed messages which occurred during the disconnect period

Oracle DB最新バージョンの12.2の sqlldr のExpress Modeでどこまでストリーミングに近い動作ができるか試してみました。 日本 vs USAの準決勝終了後8時間ぐらい経ってから収集開始しましたが時間経過に伴いtweet数が減ってくるのが確認できました。 問題点はありますが比較的簡単に自然な文章を含むJSONデータを集められると思います。参考になれば! curl...

web

大口事業所個別郵便番号金沢市データの謎。郵便番号JSON その3

先日SQL*Loaderでロードしたデータは"通常"のものだけで大口事業所のものが別ファイルとしてあることを見落としていたので追加ロードしてみます。事業所の個別郵便番号のダウンロード zip形式 - 日本郵便事業所の個別郵便番号最新全データのダウンロードができます。今回はzipファイルをローカルディスクに書き出さずにやってみました。いつもと違って今回はbashプロンプト無で貼り付けてみます。 このままコピペしても動作すると思います。私の環境ではたまにcurlでエラーになるようでした。正常実行されれば21937行追加されます。 結構あるものですね。curl --silent http://www.post.japanpost.jp/zipcode/dl/jigyosyo/zip/jigyosyo.zip |funzip | cut -d ',' -f 8 | sort | uniq |sed -r 's|^"(...)(....)"$|https://madefor.github.io/postal-code-api/api/v1/\1/\2.json|' |parallel -j 64 -n 256 sqlldr scott/tiger table=API_RESPONSES \data=\<\(curl --silent -w '\\t%{url_effective}\\n' {} \| sed 'N\;s/\\n\\t/\\t/' \) \terminated_by=X\\\'9\\\' direct=true log=ldr_api_2_{#}.log parallel=true bad=ldr_api_{#}.bad最終的にURLカラムに一意制約をつけたところエラーになったので調べたところ以下のように金沢市の"920-0381"という 郵便番号が通常と大口の両方に出現していることがわかりました。少し考えてそれでも分らない場合問い合わせてみようと思います。$ ( for i in \> http://www.post.japanpost.jp/zipcode/dl/{roman/ken_all_rome,jigyosyo/zip/jigyosyo}.zip> do \> curl --silent $i | funzip> done ) \> | grep 9200381"9200381","石川県","金沢市","中屋","ISHIKAWA KEN","KANAZAWA SHI","NAKAYA"17201,"foo カブシキガイシヤ","foo 株式会社","石川県","金沢市","古府","3丁目12","9200381","92003","新金沢",0,0,0なお、会社名は念のため伏せています。

先日SQL*Loaderでロードしたデータは"通常"のものだけで大口事業所のものが別ファイルとしてあることを見落としていたので追加ロードしてみます。 事業所の個別郵便番号のダウンロード zip形式 - 日本郵便 事業所の個別郵便番号最新全データのダウンロードができます。 今回はzipファイルをローカルディスクに書き出さずにやってみました。いつもと違って今回はbashプロンプト無で貼り付けてみます。このま...

Data Types

郵便番号 JSON in Oracle DB 12c、その2

今回は先日SQL*Loaderでロードしたデータの確認をしてみます。madefor/postal-code-api: Postal Code API郵便番号が100-0014(東京都千代田区永田町)の住所を取得したい場合。 https://madefor.github.io/postal-code-api/api/v1/100/0014.json{"code": "1000014","data": [ {"prefcode": "13",上記の素敵なパッケージの説明ページと同じデータを sqlplus で取り出し、jq で整形してみます。 次回以降ははQiitaに書いてあることをSQLクエリーで確認してみます。$ cat <<EOF |sqlplus -s scott/tiger | jq .> set lines 2048 heading off> select response from api_responses> where url='https://madefor.github.io/postal-code-api/api/v1/100/0014.json';> EOF{ "data": [ { "en": { "address4": "", "address3": "", "address2": "Nagatacho", "address1": "Chiyoda-ku", "prefecture": "Tokyo" }, "ja": { "address4": "", "address3": "", "address2": "永田町", "address1": "千代田区", "prefecture": "東京都" }, "prefcode": "13" } ], "code": "1000014"}jqを通すといろいろ逆順で出力されるようです。

今回は先日SQL*Loaderでロードしたデータの確認をしてみます。 madefor/postal-code-api: Postal Code API 郵便番号が100-0014(東京都千代田区永田町)の住所を取得したい場合。https://madefor.github.io/postal-code-api/api/v1/100/0014.json {"code": "1000014","data":...

bash cures cancer

郵便番号JSONデータをAPIからネットワーク経由でSQL*Loaderロード

昨日書いた GNU parallel と去年書いたF1データAPIの合わせ技で、...F1データAPIの複数URLのcurlレスポンスをsqlldrでロードしてみる[1950-2015]で66年分を指定しています。これはcurlが66個のURLに展開(expand)します。以下の素敵なパッケージを使って作られたデータをsqlldrでロードしてみました。madefor/postal-code-api: Postal Code APIこの郵便番号APIはGitHubページを使用して静的なファイルで配信しているため信頼性が高く、さらにオープンソースなのでクライアントワークでも安心して使用できます。表名、カラム名は同じですが今回はデータが最大15KBあるので 12c の機能であるVARCHAR2 32KBを使います。DDLはSQLclのコマンドです。SQL> ddl API_RESPONSES CREATE TABLE "SCOTT"."API_RESPONSES" ( "RESPONSE" VARCHAR2(32000), "URL" VARCHAR2(4000), CONSTRAINT "RESNULL" CHECK (response is not null) ENABLE, CONSTRAINT "RESPJSON" CHECK (response is json) ENABLE);以下がOne-Linerです。郵便番号ZIPデータは郵便局ホームページから落としたものです。$ unzip -p ken_all_rome.zip | iconv -f Shift_JIS -t eucjp |> sed -r 's|^"(...)(....).*$|https://madefor.github.io/postal-code-api/api/v1/\1/\2.json|' |> sort | uniq |> parallel -j 64 -n 256 sqlldr scott/tiger table=API_RESPONSES \> data=\<\(curl --silent -w '\\t%{url_effective}\\n' {} \| sed 'N\;s/\\n\\t/\\t/' \) \> terminated_by=X\\\'9\\\' direct=true log=ldr_api_{#}.log parallel=trueZIPファイルを使わずに番号総当たりでもできるはずですがGitHubサーバーに不要な負荷がかかってしまいますね。他の部分についても機会があればいつか解説加えたいと思います。

昨日書いた GNU parallel と去年書いたF1データAPIの合わせ技で、... F1データAPIの複数URLのcurlレスポンスをsqlldrでロードしてみる [1950-2015]で66年分を指定しています。これはcurlが66個のURLに展開(expand)します。 以下の素敵なパッケージを使って作られたデータをsqlldrでロードしてみました。 madefor/postal-code-ap...

tools,utilities,kindle,e-book

GNU parallel と SQL*Loader 組み合わせ実行例

大量データを処理する際に便利なparallelというツールを初めて使ってみました。GNU Parallel - GNU Project - Free Software FoundationGNU parallel is written to have the same options as xargs.今回のお題: "大量のファイルをある一個の表にSQL*LoaderのExpress modeでロードする" です。通常のLinuxコマンドだとわりと何も考えずに使えますがOracleのツールは工夫が必要な場合があります。 カレントディレクトリに*.csvファイルが大量にあるとした場合の例は以下の感じになると思います。 ファイルは128個ごとのチャンクに分けられ、チャンクの中の128個は結合されてsqlldr一回のプロセス起動により 処理されます。ちょっとしたMapReduce気分ですね。。$ echo *.csv |> parallel -j 4 -n 128 sqlldr scott/tiger table=TBL_{%} data=\<\(cat {}\) direct=true \> log=sqlldr_{#}.log何となく感ずくかと思いますがこの実行では "1個" の表という要件を満たせず、4個の表にばらけてロードされます。 この理由と解決方法はまた近いうちに。。。

大量データを処理する際に便利なparallelというツールを初めて使ってみました。 GNU Parallel - GNU Project - Free Software Foundation GNU parallel is written to have the same options as xargs. 今回のお題: "大量のファイルをある一個の表にSQL*LoaderのExpress...

SQL & Tools

Stream loading multiple binary files via 'curl' with SQL*Loader(Part.3)

This is the follow-up to my last entry.I commited a (sort-of) stream loading sqlldr script on GitHub.This script doesn't create intermediate file. It reads data from network and loads it to BLOB column without waiting for the whole curl command to finish.I used a 12.2 feature called 'SDF_PREFIX' again.This is a sample run log. I used the curl's URL expansion capability which bash can't.$ ./sqlldr_curl_multi_122.sh \> https://raw.githubusercontent.com/oracle/json-in-db/master/JSON-HOL-12.2/media/image0[01-20:5].png \> https://raw.githubusercontent.com/oracle/json-in-db/master/JSON-HOL-12.2/media/image0[01-20:2].pngSQL*Loader: Release 12.2.0.1.0 - Production on Fri Mar 10 18:20:17 2017Copyright (c) 1982, 2016, Oracle and/or its affiliates. All rights reserved.Path used: ConventionalCommit point reached - logical record count 1Commit point reached - logical record count 2[...]Commit point reached - logical record count 14Table WEB_FILES_T: 14 Rows successfully loaded.Check the log file: _6635_sqlldr.logfor more information about the load.$ cat /tmp/_6635_sqlldr.ctlLOAD DATA INFILE * TRUNCATE INTO TABLE WEB_FILES_Tfields terminated by '<end-of-record>'( url position(12) char(512), BINDATA LOBFILE(CONSTANT '') terminated by '<end-of-record>\n')BEGINDATA<field-sep>http://raw.githubusercontent.com/oracle/json-in-db/master/JSON-HOL-12.2/media/image001.png<end-of-record><field-sep>http://raw.githubusercontent.com/oracle/json-in-db/master/JSON-HOL-12.2/media/image006.png<end-of-record>[...]There are many caveats but I hope this script can demonstrate SQL*Loader's old and new 12.2 features.

This is the follow-up to my last entry. I commited a (sort-of) stream loading sqlldr script on GitHub. This script doesn't create intermediate file. It reads data from network and loads it to BLOBcolum...

SQL & Tools

Loading multiple binary files via 'curl' with SQL*Loader in one shot(Part.2)

It's almost a year since I wrote this script for Oracle Database 12c R1 and I confirmed this works in 12.2 env. So, I thought I would write about preparation steps and a usage example.Loading multiple binary files via 'curl' with SQL*Loader in one shot(Part.1)sqlldr has had capability to load concatenated multi-line data for a long time.Below is the table which will store curl downloaded files. BTW, "DDL" is a command in SQLcl which you don't find in sqlplus.SQL> ddl web_files_t CREATE TABLE "SOE"."WEB_FILES_T" ( "URL" VARCHAR2(1024), "BINDATA" BLOB ) SEGMENT CREATION IMMEDIATEI'll try storing 3 image files on GitHub to Oracle DB BLOB column.json-in-db/Python-Demo-App at master · oracle/json-in-dbweb app using Oracle Database 12c (12.1.0.2 or later) with JSON functionalityThis is the command line.$ ./sqlldr_curl_multi.sh \> https://raw.githubusercontent.com/oracle/json-in-db/master/Python-Demo-App/{Profile,Login,Edit%20Profile}.pngSQL*Loader: Release 12.2.0.1.0 - Production on Fri Mar 10 16:07:41 2017Copyright (c) 1982, 2016, Oracle and/or its affiliates. All rights reserved.Path used: ConventionalCommit point reached - logical record count 3Table WEB_FILES_T: 3 Rows successfully loaded.Check the log file: _4311_sqlldr.log$ grep -a exif:PixelXDimension /tmp/_4311_sqlldr.c-url <exif:PixelXDimension>1390</exif:PixelXDimension> <exif:PixelXDimension>1377</exif:PixelXDimension> <exif:PixelXDimension>1378</exif:PixelXDimension>So, in this example, 3 image files were saved to a single file under /tmp and this file was loaded by sqlldr to 3 rows.I know that many of the readers think this is inefficient. I'm thinking about to modifing this script to load in streaming fashion. i.e.) Without saving to a intermediate file. Once I've done that, I want to commit to GitHub.

It's almost a year since I wrote this script for Oracle Database 12c R1 and I confirmed this works in 12.2 env. So, I thought I would write about preparation steps and a usage example. Loading multiple...

SQL & Tools

expdp(データパンプ)のバックグラウンドでの実行はCtrl-ZでなくCtrl-C

昨日はイベントへのご参加ありがとうございました。2017年3月度のOTNおすすめ技術者向けセミナー&イベント (Oracle Technology Network Japan Blog)先般、満を持してリリースされたOracle Database 12c Release 2では、私は最後のデモ環境を作ったのですが、バックアップを取る暇がなかったのでイベントの後麻布十番で途中下車し expdp で悪戦苦闘していました。データ・ポンプ・ジョブ実行中に行われる処理対話方式コマンドSTOP_JOBを使用してジョブを停止するexpdp はコマンドラインツールで引数で全て必要なパラメータを渡すことができます。エクスポート対象が多い場合終了までに長時間かかります。普通のコマンドであればUN*Xのバックグラウンド実行機能を良く使うと思います。私も昨日expdpを '&' をつけずに起動してしまったのでCtrl-Zでサスペンドし、bg, disown コマンドで裏で流して帰宅しようとしましたが 'Ctrl-Z' が効きません。いろいろ上記引用したマニュアルを見ていたところ expdp の場合、 Ctrl-C で良いことがわかりました。というか放置してネットワーク切ってしまってもジョブ自体は正常終了するはずです。datapump ジョブの途中からパラレル度変えることもできます。私の場合途中から 1->4 に変えたところダンプファイルへの書き出し量がなぜか10倍になりました。嵌まったときに得た知識というのは忘れないもので私もこれは一生頭の中から消えなそう。

昨日はイベントへのご参加ありがとうございました。 2017年3月度のOTNおすすめ技術者向けセミナー&イベント (Oracle Technology Network Japan Blog) 先般、満を持してリリースされたOracle Database 12c Release 2では、 私は最後のデモ環境を作ったのですが、バックアップを取る暇がなかったのでイベントの後麻布十番で途中下車し expdp...

Exadata

AI: 文藝春秋囲碁記事とサーバー機消費電力計算

文春といっても月刊の方は10年以上読んだことなかったのですが喫茶店に置いてあったので2月号を見たところAIネタがありなかなか面白かったです。去年韓国で行われた李氏との対戦でのコストについて以下を参考に語られたと思われる部分がありました。人間を超えたアルファ碁(AlphaGo)は、どのようにして強くなったのか|Googleの人工知能と人間の世紀の一戦にはどんな意味があったのか?|大橋拓文/山本一成|cakes(ケイクス)電気代だと100万くらいじゃないですか?いくらなんでも高すぎないかと思い、かなり英語の情報をGoogleってみたのですが以下ぐらいしか見つかりませんでした。AlphaGo and Lee Sedol Mega Thread : badukThe electricity cost of 2000 CPUs and 200 GPUs is under $50 an hour50 US ドルで1局5時間とし五局分で計算すると15万円です。これにネットワーク機器、ストレージの電気代とか空調費を足してもかなり100万と差があると思います。文藝春秋にも書かれていますがいろいろなところで学習時のコストの方が圧倒的に高いと言われているので対局時のコストは気にしている人が少ないのかと思いました。ところでOracleもPublic Cloud用のサーバー群を大量に運用してますし、かつ、サーバー機を売っているので電気代の見積もりをすることがあります。4年前と古いですがこの英語PDFファイルに旧モデル Exadata の電気代計算のサンプルがあります。参考になれば。

文春といっても月刊の方は10年以上読んだことなかったのですが喫茶店に置いてあったので2月号を見たところAIネタがありなかなか面白かったです。 去年韓国で行われた李氏との対戦でのコストについて以下を参考に語られたと思われる部分がありました。 人間を超えたアルファ碁(AlphaGo)は、どのようにして強くなったのか|Googleの人工知能と人間の世紀の一戦にはどんな意味があったのか?|大橋拓文/山本一成|...

misc

2016年の記事一覧

このブログの日本語エントリー一覧の先週からの続きです。ブログサーバーからのエクスポートから一覧を作るスクリプト、またはAPIで一覧を出す方法について以下の2つについて少し調べました。wordpress.comApache Roller Webloggerこの2つのサーバーで同じように動く汎用的なものを作るのは難しそうでした。何か作れたらまた書きたいと思います。マニュアル日英切り換えブックマークレットDB 12cR2対応しました12/27/2016dcli で複数サーバーにディレクトリ以下を再帰的にコピーする12/26/2016C#, Oracleデータベース:数値のMD5チェックサム算出12/25/2016DB 12c R1 自動データ最適化機能のドキュメント変更12/22/2016Oracle DB 12c R2 マニュアルへの日本からの貢献12/20/2016グラフ解析 Groovy シェルのPowershellでの起動方法12/19/2016Amazon RDS でOracleパフォーマンスが出ない時は12/18/2016Java: JDK9 Flow APIでのReactive StreamとAkka12/15/2016弊社カフェでのConnpass勉強会、グラフ分析12/15/2016Connpassどっぷり生活: 日本Cordovaユーザー会 & Akka12/14/2016SDN ハンズオン on Connpass12/13/2016SQL実行計画の確認方法の種類 9+112/08/2016connpass meetupで予定されていた機械学習ネタDSSTNE関連リンク12/07/2016SPARC: ソフトウェアインシリコンサンプルプログラムとログ出力12/05/2016Stanford大学の機械学習講座をAndroidアプリでオフライン視聴12/04/2016MeetupとWindowsでのnode.js & git12/01/2016Software in Siliconテストドライブ環境での制限11/29/2016GitHub API: jqを使わずにまとめてHackathonアプリをclone11/27/2016GitHub OracleリポジトリをAPI経由でまとめてWatch設定するone-liner11/24/2016GitHub Oracle公式レポジトリー一覧のAPIでの取得11/23/2016ビットを数えるPL/SQL関数のインライン実行11/21/2016sqlplus: EZCONNECT使用時の落とし穴11/20/2016DBCAのキーボード操作のGIFアニメーション11/17/2016MySQLのBIT_COUNT()のSQL版でビットを数えてみる11/15/2016CSVの1行目はカラム名になるのでnode.jsでローマ字化してみる11/14/2016ZDNet Japan の7ヶ月前の記事への続報と補足11/13/2016ドコモさん子会社提供の自然言語処理APIサービス11/09/2016node.js オラクルDBアクセスドライバーインストール on Windows,Part#311/08/2016Visual Studio: node.js オラクルDBアクセスドライバーインストール Part#211/07/2016Windows: node.js オラクルDBアクセスドライバーインストール Part#111/06/2016マウスを使わないとOracle操作が速くなることをデモするためのキーボード操作表示ツール10/30/2016ImageMagickでアニメーションGIFに再生時間などを表示させるスクリプト10/27/2016Oracleとブロックチェーン10/24/2016Python のデータ・サイエンスでの人気度10/23/2016Prezi: 来週のAPEXハンズオンなどのオンラインプレゼン10/19/2016来週水曜木曜恵比寿ウェスティンでのDB In-Memory関連セッション10/18/2016DB 12.2 Exadata Express(クラウド)のオプティマイザー動作10/13/2016Visual Studio からクラウド上のOracle DB 12.2にアクセス10/11/2016CygwinでOracle Cloud用rpmパッケージの中のWindows関連ファイルを見てみる10/05/2016VirtualBoxをOracle Public Cloudにデプロイ10/02/2016RedHat 7 にOracle DBをインストールする設定を仕込む rpm09/28/2016'R' ドライバーインストール&使用画面ショット09/26/2016Oracle DBから外部ネットワークへのアクセスを制御する方法09/22/2016SAMSUNGのCordova Pluginウェビナーが公開されています09/20/2016SQLcl (SQLコマンドライン)正式リリースされました09/18/201610/5 US Oracle グラフ解析セッション@六本木新国立美術館09/15/2016CERNによるVirtualBoxバージョン間のパフォーマンス比較09/14/2016Oracle Cloud と Active Directory09/13/2016JavaScript & Oracle エバンジェリストのホームページ09/12/2016JET CordovaアプリのAndroid端末でのLiveReloadによる迅速開発09/11/2016SAP CRMのお客様での12c Database In-Memory 導入事例09/08/2016Oracle JETでAndroidでもデスクトップブラウザーでも動くハイブリッドアプリを作ってみる09/06/2016Galaxy端末固有機能を使うAndroidサンプルアプリをちょっと日本語化09/04/2016タイタニックCSVからのDDL生成。細野晴臣08/31/2016'R' のOracle DBアクセスドライバー ROracle をWindows7にインストール08/30/2016DB12c のインタラクティブなマニュアルをAndroidでオフラインで見る動画08/29/2016地図アプリ作成部品: MapViewer と JET08/25/2016ネスト仮想化 SaaS Ravello の日本語ブログとKVM08/24/2016インメモリ(またはカラム型)データベースでのキャッシュって08/23/2016マクラーレン・ホンダの66年分のJSONデータの検索08/17/2016sqlplus でのプロキシー設定注意点08/14/2016オーストラリアのハッカソンでのアプリ on Oracle Cloud08/10/2016F1データAPIの複数URLのcurlレスポンスをsqlldrでロードしてみる08/08/2016Oracle DBインスタンス全体のプロクシ設定08/05/2016Oracle 12c JSON機能でマクラーレン・ホンダの順位を見てみる08/02/2016Oracle Database Technology Night:次回は9月5日08/01/2016ダイナミックSQL: シェルのevalコマンドのOracle版07/29/2016Re: SQL Developer:セッション統計の差分取得手順07/25/2016ノートブックでOracleに接続しデータサイエンス07/20/2016Docker での Oracleデータベース 11g & 12c07/20/2016SQL Developer:セッション統計の差分取得手順の動画07/19/2016SAP BW on Oracle DB In-Memory, 事例とツール07/19/2016コンテナでのOracleデータベース, DockerとLXC07/15/2016F1 オープンデータweb service APIで見る富士、鈴鹿サーキット情報07/14/2016ビーコン、Microproximity, クラウド07/13/2016MyOracleSupportからのパッチダウンロードツール07/08/2016弊社オフィスでのDB Technology Nightの次回は8月1日07/06/2016SQL DeveloperでのBLOB: Excelデータ更新07/04/2016SQL DeveloperでのBLOB: アニメーションGIF07/01/2016curlで取り込んだ画像をSQL Developerで表示06/30/2016Bash on Windows と Ruby , Node.js06/29/2016富士通様 Database In-Memory ホワイトペーパー改訂版が公開されました06/29/2016SQLcl のBeta新バージョンリリースされました06/28/2016Solaris でポートを掴んでいるプロセスを特定する方法06/15/201612c Database In-Memory アドバイザーの新バージョンリリース06/15/20167月12日夜、弊社オフイスでの開発系セミナー06/13/2016NBAとGNU screen05/29/2016Virtualテクノロジーサミット動画 on YouTube05/12/2016DB In-Memory: 富士通様資料へのリンク追加されました05/11/2016Exadata X6 方針声明 PDF 更新されました05/04/2016イギリスの自動車税 on Oracle Cloud05/02/2016SQLモニター(アクティブレポート)のフォーマット04/27/2016ドラクエとExadata04/25/2016IaaSでWindowsが使えるようになりました04/21/2016JDBCアプリの高可用性。網羅性と妥当性チェックツール04/20/2016ソフトウェア・イン・シリコン クラウドでのキーボード問題04/17/2016Oracle Cloudお試しサイト:Advanced Analytics,データ・マイニング,Visual Analyzer04/13/2016クラウドで仮想化のネスティングを提供するRavello社買収04/07/2016GitHub からOracleへ直接データロード.SQL Loader Express Mode03/16/2016SPARC で Spark (Apache)03/13/2016次世代 sqlplus (SQLcl) での Ruby 言語 (その4)03/09/2016Java版sqlplus(SQLcl)でRuby実行03/07/2016DENON+マランツ様クラウド事例 on Forbes03/02/2016グラフ可視化オープンソースツール Cytoscape プラグイン新バージョン03/01/2016ネイティブ(Cygwin) Ruby vs. JRuby02/29/2016Apache Jena サポートの新バージョンがリリースされました02/28/2016オラクルクラウドのPaaS系サービス連載 @ITSpecial02/23/2016DB12cでJSON(その2): お台場編02/16/2016DevOps: 楽天様のWeblogic/Exalogic関連記事02/12/2016Slideshare: DevOps パワポで楽天市場様紹介02/10/2016データベースのJSON機能をGeoJSONで試してみる(その1)02/03/2016ダッソー・システムズのJava EE移行セッション on YouTube01/28/2016docs.oracle.comマニュアル言語切り替えBookmarkletのソース01/18/2016Javascript でセッション統計差分表示01/12/2016DB12c, DB11g マニュアル用ブックマークレットのソース01/11/2016Oracle DB の文字列編集距離関数で日本語誤変換を計算させてみる01/07/2016Data Guardのためのネットワーク計測ツール01/06/2016SIMD:JavascriptとOracleデータベースインメモリー01/04/2016

このブログの日本語エントリー一覧の先週からの続きです。 ブログサーバーからのエクスポートから一覧を作るスクリプト、またはAPIで一覧を出す方法について以下の2つについて少し調べました。 wordpress.com Apache Roller Weblogger この2つのサーバーで同じように動く汎用的なものを作るのは難しそうでした。何か作れたらまた書きたいと思います。 マニュアル日英切り換えブックマークレッ...

Japan,日本オラクル

日本語でのポスト一覧,2014年8月-2015年12月

昨日の続きです。まずは補足から。昨日"TXT"という拡張子のファイルフォーマットのことを書きましたが日本語ドキュメントを見つけました。Movable Type 4 ドキュメント - CMSプラットフォーム Movable Type -ブログ記事インポートフォーマットNode.js でのパーサーをGitHubで見つけました。10年ぐらい前だとこの手の処理はperlでやるのが常道だったと思います。wirehead/mtif: Movable Type Import Format for node.jsA very rough parser for the Movable Type Import Format (MTIF).Oracleデータベースの正規表現サポート12/23/2015docs.oracle.comマニュアルの日本語英語ページBookmarklet12/20/2015Node.js で和英辞書にローマ字フィールドを追加12/16/2015APEX と JavaScript ライブラリー12/14/2015Node.js でローマ字12/13/2015プリフェッチ: CPU? JDBC? OCI?12/09/2015Oracle DBの中で動かすJavaとJavaScript12/08/2015Oracle Number型の新機能12/07/2015POCO Club 開設12/07/2015Wireshark でOracleのバイナリデータを検索してみる12/06/2015Excel VBAでOracleからRESTでデータを読む(リンク修正版)12/03/2015鉄道ダイヤグラムとSQL11/29/2015パワポ/Excel: 英語フレーズ一括置換マクロプロジェクトその211/18/2015YouTube:学生向けSPARC M7 Software in Siliconセッション11/15/2015サムスンGalaxy Noteをホワイトボードの代わりに使ってみる11/12/2015超地域的ショッピングモール全米544店舗の商圏分析11/05/2015オントロジー入門英語PDF11/04/2015Oracleデータベースのグラフ機能の歴史10/28/2015OOWとサムスンモバイルアプリ10/26/2015Foraging Loop == 採餌ループ? アザラシとGPS10/22/2015Japan Oracle User Group イベント10/18/2015VirtualBox コマンドライン bash 補完スクリプト10/15/2015サムスンGalaxyと開発ツール(Android)10/04/2015ラグビーとIT用語10/01/2015Wiresharkでの日本語のコメントを取り出すXSLT09/24/2015VirtualBox 5.0でのSIMDインストラクション09/23/2015Wireshark:パケットキャプチャーのコメントを抜き出すXSLT09/17/2015SpatialのテッセレーションとCADのテセレーション07/21/2015Oracle LinuxのIPv6互換テスト07/05/2015POCO(Power of Cloud by Oracle) と POCOs07/02/2015ATS-Blog もよろしくお願いいたします(Application Testing Suite)06/28/2015SQLcl: INFOコマンドでストアドプロシージャーの引数表示06/23/2015SQL Developer,SQLcl: INFO+コマンド06/21/2015SQLcl: java版sqlplusまたはSQL Developerのコマンドライン版?06/18/2015エクセルとOracle DBの仮想カラム06/14/2015SQL Developer: Excelインポート手順の録画06/11/2015Excel分析ツール"t検定"をOracleで実行06/10/2015SQL DeveloperでアクティブSQLモニターHTML作成06/09/2015Wikipedia関連リンクをSPARQLでたどってみる06/07/2015SQL DeveloperでDBインスタンス動作状況を知る06/03/2015SQL Developer 4.1: JavaFXのインスタンスビューアー06/02/2015SQL DeveloperでAWRレポート生成、ビューと保存05/28/2015NBAプレーオフ05/25/2015SQL Developer: SSH ローカルポートフォワード05/21/2015SQL Developer 4.1: SSH逆向きトンネル利用法05/18/2015SQL Developer 4.1 での SSH 機能強化05/17/2015VirtualBox: SolarisホストからLinuxホストへの移行05/10/2015Kindle用ドキュメントのタイムスタンプをpythonで知る05/06/2015DB12c ドキュメントが更新されUIも変わりそうです04/30/2015Node.jsドライバーがリリースされました03/22/2015DBpediaをOracle RDFストア/トリプル・ストアで03/18/2015Linux perfコマンドでDB In-MemoryでのCPUキャッシュミス計測03/12/2015Exadata X5: AWRレポートにストレージサーバーの情報が追加03/11/2015ソフトウェア・イン・シリコンとDatabase In-Memory03/03/20152回のSQL実行でのセッション統計の差分の比較02/22/2015SQL Developerのもっさり感解消02/17/2015インフォグラフィック02/16/2015SQL Developerの新しいDBA画面02/04/2015Database In-MemoryハンズオンとVirtualBox01/05/2015VirtualBoxゲストでSIMD命令: DB In-Memory12/25/2014YouTube: DB12c 12.1.0.2 JSON機能紹介12/21/2014sshトンネル機能: SQL Developer12/18/2014In-Memoryハンズオンセッション補足内容12/07/2014In-Memoryハンズオンセッションありがとうございました12/03/2014DB12c 12.1.0.2 新機能: SQLモニターの適応計画対応12/01/2014サン・スパークカップ日本代表×ブラジル代表(1995年8月9日)10/29/2014DB12c 12.1.0.2 日本語マニュアルが公開されました09/30/2014PGA と In-Memory オプション09/25/2014定石と布石: RDF HTTP Server08/25/2014DB12c In-Memory & JSON セッション08/24/2014

昨日の続きです。 まずは補足から。昨日"TXT"という拡張子のファイルフォーマットのことを書きましたが日本語ドキュメントを見つけました。 Movable Type 4 ドキュメント - CMSプラットフォーム Movable Type - ブログ記事インポートフォーマット Node.js でのパーサーをGitHubで見つけました。10年ぐらい前だとこの手の処理はperlでやるのが常道だったと思います。 w...

misc

このブログの日本語エントリーリスト,2014年1月以前

2007年に私がSunの時に書き始めたこのブログも公開したエントリー数が500を超えました。弊社のブログサーバーの更新が予定されていることもあり、これを期に一覧を作ってみました。今回は2007年から2014年1月までです。このリストはApache Rollerのエクスポートの*.txtファイル、およびATOM形式*.xmlファイルからawk, XSLT, q の3つのツールで抜き出しています。かなり駄目ですね。いまいちうまい方法が見つかりません。できれば以下の2つのいずれかで解を出したいところです。エクスポートファイルから Python, Ruby, Node.js のいずれかでスクリプト1回実行エクスポートでなくBlog APIを使うスペインの銀行のビッグデータ事例01/08/2014.net 系の開発ツールの新バージョンがリリースされました01/06/2014子どものための囲碁入門12/17/2013SNA: メインフレーム?ソーシャル・ネットワーク?12/16/2013VirtualBox: 仮想化のネスティング12/12/2013MOS: 電子メールによるホット・トピック12/10/2013Flash動画の検索11/27/2013Enterprise Manager 12c twitter アカウント11/26/2013キャパシティ・プラニングのマニュアル11/19/2013楽天優勝とジョー・セルコ11/07/2013統計的手法が出てくるOracle本10/24/2013Oracle Database 12c Release1 日本語マニュアル10/11/20132 種類の標準偏差関数10/03/2013Exadata 専用 SQL09/30/2013DB12c セキュリティー本 無料ダウンロード事前登録09/17/2013Internet of Things "モノのインターネット"09/12/2013囲碁部がNHKの取材を受けました07/29/2013DB12c が日経 IT Pro で連載中です07/21/2013DB12c をサポートする WebLogic 12.1.2 がリリースされました07/11/2013世界同時配信! Oracle Database 12c Launch WebCast07/04/2013DB12c 日本語ページ07/01/2013Garmin Connect(ガーミンコネクト)と Exadata06/17/2013OTN ディスカッションフォーラム 模様替え06/12/2013LinuxCon でのORACLE社員セッション05/21/2013Oracle MAAベストプラクティスセミナー on "ON24"05/09/2013ExadataTV チャンネル05/08/2013Oracleの動画サイトのGoldenGate技術プレゼンを再生スピード調節05/06/2013Kindleなどに適したMobi,ePUBフォーマット電子ブックマニュアルの日付04/30/2013ePub形式マニュアルをKindle Paperwhiteで見た画面ショット04/26/2013ePub, mobi フォーマットドキュメント一覧04/25/2013日本語のOracle By Exampleシリーズ一覧を python で取得04/19/2013GoldenGate チュートリアルが日本語チュートリアルシリーズに追加されました04/17/2013スマホをUSBでノートPCに直結し外部ディスプレイとして使う03/28/2013YouTube の JavaOne 2012 セッションプレイリスト01/17/2013DB11g マニュアルの Kindle Paperwhite スクリーンショット01/16/2013SolarisでのOracleDBチューニング12/27/2012政府統計とWebサービス12/26/2012VirtualBox: リモートコンソールからのコピー&ペースト12/25/2012Fusion Middleware MAA ホワイトペーパー12/20/2012Oracle DBA & Developer Day 2012 動画とPDF12/17/2012『Ask Tom』のトム・カイトが語る「Oracle Maximum Availability Architecture のベスト・プラクティス」12/03/2012SLOB: 流行してそうなベンチマーク11/30/2012Linux で ZFS スナップショット11/29/2012SOA 11g でデハイドレーション・ストアとし��� OracleDB 11g 使用時の推奨11/28/2012DBFS に Windows からファイルを投げ込む11/27/2012明日は Oracle DBA & Developer Day 2012 @ 西新宿11/19/2012DTrace 0.3.1 for Linux 第一歩11/16/2012'outlier': I/O 外れ値11/15/2012DB11gR2 電子ブックリーダー用日本語マニュアル11/14/2012Javaのオプションを環境変数で設定する11/09/2012Java の実行時ロケールを変える方法11/07/2012Host-only network のVMゲストに外部から接続10/30/2012VirtualBox ゲストの異なるプラットフォーム間でのエクスポート/インポート10/26/2012電子ブックリーダー用日本語マニュアル10/10/2012VDI と Synergy10/09/2012動画セミナーの変換とMP3化04/25/2012Oracle Open World 東京 2012 は来週水曜から03/30/2012LISPの父 ジョン・マッカーシー 逝去10/27/2011SunRay 縦表示01/28/2011Oracle Direct SeminarのiCalendar(*.ics)をGoogleカレンダーにインポート11/23/2010日本語ファイル名対応 unzip, JDK708/22/2009Internet Archive Wayback Machine での日本語03/26/2009Software Design 12月: 仮想化技術フルコース【マイグレーション編】12/02/2008東京マラソン当たりました。11/10/2008Sun Wear: 自転車ジャージとトレイルランニング用品04/20/2008Thunderbird の日本語メッセージ01/13/2008WebDAVでの日本語名フォルダー11/29/2007日経Linux の p2v (Physical to Virtual) 記事11/10/2007SunPinYin で中国語を入力してみる10/18/2007

2007年に私がSunの時に書き始めたこのブログも公開したエントリー数が500を超えました。 弊社のブログサーバーの更新が予定されていることもあり、これを期に一覧を作ってみました。 今回は2007年から2014年1月までです。 このリストはApache Rollerのエクスポートの*.txtファイル、およびATOM形式*.xmlファイルからawk, XSLT, q の3つのツールで抜き出しています。かな...

bash cures cancer

Exadata: dcliで全RACノードでsqlplus実行、複数コマンド版

昨日の続きです。今回はsqlplusに渡すコマンドをパイプでなくProcess Substitutionで渡す例です。dcli は並列実行するので以下の1回目のようにオプション無で実行するとロック待ちになります。sleep 無しだと瞬時にセッション終了しエラーが出ない場合もあったので以下は sleep 1入りの分かり易い例にしてみました。2回目の実行では "--serial" オプションをいれているのでロック待ちになってないですね。$ dcli -g ~/dbs_group -l $LOGNAME \> ORACLE_HOME=$ORACLE_HOME $ORACLE_HOME/bin/sqlplus -S hr/dbecore@scanlsnr/core1p \> \< \<\(echo -e 'select \* from tbl where n=2 for update nowait\; \> \\n host sleep 1'\)dbnode5m: select * from tbl where n=2 for update nowaitdbnode5m: ERROR at line 1:dbnode5m: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expireddbnode6m: select * from tbl where n=2 for update nowaitdbnode6m: ERROR at line 1:dbnode6m: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expireddbnode7m: select * from tbl where n=2 for update nowaitdbnode7m: ERROR at line 1:dbnode7m: ORA-00054: resource busy and acquire with NOWAIT specified or timeout expireddbnode8m: Ndbnode8m: ----------dbnode8m: 2$ !:0 --serial !:1*dcli --serial -g ~/dbs_group -l $LOGNAME ORACLE_HOME=$ORACLE_HOME $ORACLE_HOME/bin/sqlplus -S hr/hr@scanlsnr/core1p \< \<\(echo -e 'select \* from tbl where n=2 for update nowait\; \\\n host sleep 1'\)dbnode5m: Ndbnode5m: ----------dbnode5m: 2dbnode6m: Ndbnode6m: ----------dbnode6m: 2dbnode7m: Ndbnode7m: ----------dbnode7m: 2dbnode8m: Ndbnode8m: ----------dbnode8m: 2

昨日の続きです。今回はsqlplusに渡すコマンドをパイプでなくProcess Substitutionで渡す例です。 dcli は並列実行するので以下の1回目のようにオプション無で実行するとロック待ちになります。 sleep 無しだと瞬時にセッション終了しエラーが出ない場合もあったので以下は sleep 1入りの分かり易い例にしてみました。 2回目の実行では "--serial"...

Exadata

dcliで全てのリモートノードでsqlplus実行

このブログでdcliについて何回か書きました。以下のようにインストールをdcliで実行することが推奨されている製品もあります。Using DCLI to install Oracle R Distribution and Oracle R Enterprise (Oracle R Technologies)apply parallel resources to R computations in Oracle's Exadata Database Machine今回はsqlplusで各ノードでBEQ接続(Bequeath)し、1つだけコマンド実行する例です。 sqlplusをdcliで実行することはあまり無いかもしれませんが以下2点は他のコマンドでも使えると思うので参考になればさいわいです。sshでもおそらく全く同じです。ローカル環境変数をリモートで再利用'|' (パイプ)や'$()'(コマンドSubstitution)などシェル構文のリモートでの実行$ echo $ORACLE_HOME/u01/app/12.1.0.2/grid$ cat ~/dbs_groupdbnode5mdbnode6mdbnode7mdbnode8m$ dcli -g ~/dbs_group -l $LOGNAME echo "show parameter instance" \| \> ORACLE_SID=+ASM\$\($ORACLE_HOME/bin/olsnodes -n -l \|cut -f2\) \> ORACLE_HOME=$ORACLE_HOME $ORACLE_HOME/bin/sqlplus -S / as sysasmdbnode5m:dbnode5m: NAME TYPE VALUEdbnode5m: ------------------------------------ ----------- ------------------------------dbnode5m: cluster_database_instances integer 4dbnode5m: instance_name string +ASM1dbnode5m: instance_number integer 1dbnode5m: instance_type string ASMdbnode6m:dbnode6m: NAME TYPE VALUEdbnode6m: ------------------------------------ ----------- ------------------------------dbnode6m: cluster_database_instances integer 4dbnode6m: instance_name string +ASM2dbnode6m: instance_number integer 2dbnode6m: instance_type string ASMdbnode7m:dbnode7m: NAME TYPE VALUEdbnode7m: ------------------------------------ ----------- ------------------------------dbnode7m: cluster_database_instances integer 4dbnode7m: instance_name string +ASM3dbnode7m: instance_number integer 3dbnode7m: instance_type string ASMdbnode8m:dbnode8m: NAME TYPE VALUEdbnode8m: ------------------------------------ ----------- ------------------------------dbnode8m: cluster_database_instances integer 4dbnode8m: instance_name string +ASM4dbnode8m: instance_number integer 4dbnode8m: instance_type string ASM

このブログでdcliについて何回か書きました。以下のようにインストールをdcliで実行することが推奨されている製品もあります。 Using DCLI to install Oracle R Distribution and Oracle R Enterprise (Oracle R Technologies) apply parallel resources to R...

bash cures cancer

List of 200 English entries in this blog

I started writing this blog on 2007 and I published about 240 entries in English.I knew for a long time that it isn't easy to browse entries on blogs.oracle.com.Worse yet, in my case I wrote entries in English and Japanese so you need to filter out Japanese entries.So, I created a list of 200 Engligh entries which I think are still relevant.I backed up all my entries using standard Apache Roller function in *.txt and ATOM xml and I usedXSLT and awk, sed, q, etc to extract title and links. I hope I can post some scripts soon.decode and expand SQL monitor file one-liner 04/10/2016stdout of any command to LOB via SQL*Loader03/30/2016creating MP3 from e-learning package standard zip file03/29/2016Loading multiple binary files via 'c-url' with SQL*Loader in one shot(Part.1)03/27/2016Oracle R Enterprise and Linux cgroups03/24/2016Loading multiline JSON file directly off of GitHub with sqlplus03/23/2016DB12c new feature: cgroups equivalent in Solaris03/21/2016SQLcl can run Ruby script!!.. JRuby to be precise.03/10/2016Git BLOB zlib(DEFLATE) header & Java source sample03/06/2016Java system properties and WLST in Windows shell03/03/2016Binary over HTTP, IoT, OATS02/24/2016London GeoJSON, DB12c vs 'jq' JSON Part202/23/2016SQLcl running Python!(..actually, jython)02/21/2016SQLcl running sql file on GitHub directly02/18/2016DB12c JSON and 'jq' comparison using GeoJSON data (Part.1)02/17/2016SQL Developer: get connections info in text02/15/2016DB12c patching: multitenant 'datapatch' tips02/14/2016'dcli' execution order in serial mode02/08/2016Powerpoint macro for inserting all text data to Oracle DB.01/24/2016pstack(or thread stack) for Windows to diagnose Firefox high CPU usage01/21/2016Ruby SYSDBA connection and Windows thread tools01/17/2016Ruby: OCI based driver worked in Cygwin!01/14/2016Cygwin installer proxy toggling issue01/13/2016Network speed test tool for Data Guard & RMAN01/05/2016DB Doc 11g12c bookmarklet for Internet Explorer01/04/2016PuTTY remote port forwarding w/ proxy problem work around12/28/2015Searching Oracle Number in packet dump or core dump or dd image12/27/2015Bookmarklet to open corresponding DB12c or DB11g document page12/21/2015lsnrctl to many TNS listeners oneliner12/17/2015Node.js package for Japanese learners12/15/2015LiveSQL helped my "multiple delimiter tokenizer PL/SQL" experiment12/10/2015Got Exadata Patch master MOS Note update notification in my inbox!12/03/2015SQL Developer doing LDAP lookup11/26/2015Powerpoint: read data from APEX via REST11/24/2015Powerpoint/Excel: get data from APEX via REST11/19/2015connect Oracle DB from Powerpoint macro VBA11/16/2015Oracle does PowerShell11/03/2015Samsung Galaxy multi-window and S-Pen10/27/2015Sort files by substring of filename10/20/2015VirtualBox: Reset Remote Desktop port(RDP)10/19/2015Wireshark: extracting comments using XSLT10/13/2015E-delivery W-GET.sh over proxy07/02/2015Weblogic: medrec SOAP Windows .net client application06/29/2015Windows: listing recently created services06/25/2015'c-url' is not only for REST(SeeURL)06/18/2015Java FX usage tracing on SQL Developer06/15/2015SQL Developer: Active SQL Monitor06/09/2015Compression Advisor wrapper and SQL Developer report06/04/2015SQL Developer: ssh to DBaaS tutorial06/01/2015Windows: Powershell can show java process full command line05/27/2015DB In-Memory & SQL Developer05/26/2015AWR export/import, SQL Developer & DB In-Memory05/24/2015Fun with SQL Developer 4.1 SSH Remote Port Forward05/20/2015In-Memory: DBMS_COMPRESSION to estimate compression ratio05/19/2015Java&SQL Developer: jar as unzipper05/14/2015oratop and Database In-Memory05/05/2015python library install on Windows05/03/2015ssh into Azure04/29/2015Solaris: ssh to cloud from corporate network04/23/2015python library install by non-privileged user04/22/2015In-Memory Aggregation CPU usage04/20/2015sqlplus equivalent of SQLcl "REPEAT" command04/19/2015Oracle Linux on Azure03/26/2015Linux 'perf' script for Database In-Memory CPU cache miss03/19/2015Re: Exadata X4 vs. X5 DB node CPU comparison03/17/2015Exadata 1000th column challenge03/16/2015SQL Developer:Comparing session stats for 2 SQL runs03/15/2015Database In-Memory vs Buffer Cache CPU cache miss comparison03/10/2015Database In-Memory accessing 1000th column03/09/2015Exadata X4 vs. X5 DB node CPU comparison02/18/2015Java version of sqlplus. Checking compatibility...02/12/2015VirtualBox: expose SIMD instructions02/08/2015NUMA awareness in DB12c and before01/08/2015JAVA_TOOL_OPTIONS environment variable for Windows shortcut12/23/2014Pluggable DB direct connect without listener12/17/2014SQL Developer: Format SQL with CLI12/16/2014DB12c In-Memory with JD Edwards whitepaper12/14/2014New In-Memory whitepaper, DB12c 12.1.0.212/12/2014Extract SQL full text from SQL Monitor html12/10/2014Excel to sqlplus shell script12/09/2014Send keystrokes to Virtualbox guest console12/08/2014Extract text info from SQL Monitor html12/04/2014copy&paste between Windows and VirtualBox linux guest running on linux host12/03/2014SQL Monitor now tells you whether the execution plan was adaptive or not11/30/2014Am I in VirtualBox or OracleVM or KVM?11/24/2014IMC stands for "In-Memory Columnar" which is "Database In-Memory"11/03/2014PGA and Database In-Memory09/11/2014http://education.oracle.com/streams/ Database course list09/03/2014Database In-Memory whitepaper new version08/31/2014Game of GO or "RDF Graph"? Joseki/Fuseki08/26/2014VirtualBox without GUI03/19/2014dumping SGA02/20/2014RSS proxy by 'netcat' and 'c-url'02/12/2014Inject filesystem I/O latency. Oracle Linux 5 and 601/16/2014Linux or Solaris for DB12c?01/14/2014US Census CSV data to DB12c SQL*Loader01/09/2014Extract PDF titles from Windows Search01/07/2014Windows Search with SQL01/05/2014perl for processing sqlplus spool output12/18/2013My Oracle Support "Hot Topics E-Mail"11/25/2013VirtualBox 'yum' channels11/18/2013Exadata cellcli is not as dumb as other Oracle command line tools09/30/2013fixed length sqlplus spool file for loading data09/08/2013copy&paste multi-line SQL from sqlplus on Windows08/22/2013DB12c: Multi-tenant(PDB) Resource Manager calculation08/22/2013Export all VirtualBox guests one-liner07/22/2013Windows: starting sqlplus in new window from cygwin bash07/02/2013SQL for Firefox download history06/13/2013Running 'perf top' on VirtualBox Oracle Linux guest04/22/2013Copy&Paste from Excel to sqlplus. Multi-row multi-column data04/18/2013tokenizing newline delimited data with regexp_substr() in sqlplus04/16/2013SQL: Replacing "CONNECT BY" with recursive subquery04/15/2013SQL: Delimited list of values as in-line view. csv on memory04/08/2013Re: VirtualBox: Import on different platform03/27/2013My Oracle Support Community RSS doesn't require authentication02/27/2013Cygwin or Powershell02/19/2013Non-ASCII filenames in zip02/05/2013attaching to foreground process with strace in sh script01/25/2013'jar' better than 'zip' ?01/24/2013Non-ascii filename and UTF-801/15/2013Using filename with a space on command line tools01/11/2013getent hosts on IPv4/IPv6. Linux vs. Solaris12/21/2012'rman' cheat-sheet and rlwrap completion12/04/20121.6 or 1.7: Browser side Java version for Oracle VM console11/06/2012copy & paste in VirtualBox remote console when running headless11/02/2012VirtualBox: Import on different platform10/03/2012sqlplus: Running "set lines" and "set pagesize" automatially09/27/2012Using the full tty real estate with sqlplus09/18/2012Perl like regular expression in Oracle DB06/20/2012running vncserver for just one command. bash script version05/01/2012merging Java thread dump and native thread dump03/15/2011Solaris 11 install Eco-friendlier way02/23/2011Install OEL/OracleVM from USB onto bare metal02/20/2011TCP/IP over USB, OracleVM(OEL)Windows Mobile02/17/2011http://edelivery.oracle.com/ command line download01/18/2011OracleVM VNC recording and conversion to Flash11/26/2010OracleVM VNC recordings: Setting up Solaris11/25/2010DHCP for Oracle VM Server11/22/2010Oracle VM Template: Solaris 10 10/09 vs. Oracle Enterprise Linux 5.511/21/2010search.oracle.com plugin for Firefox 2/3, Internet Explorer 7/8 and Google Chrome uploaded10/24/2010restoring .Xauthority file03/29/2010running vncserver for just one command, bash function implementation03/26/2010moving stuffs to http://katsumiinoue.wordpress.com/01/29/2010ORACLE vs Berkeley DB: shared memory01/28/2010stub out Berkeley DB binary Runpath01/27/2010knowing virtual machine guest IP address01/20/2010Cygwin tells you Windows java.exe default thread stack size01/08/2010my blog quoted on ORACLE technet forum12/09/2009ORACLE tkprof utility can read multiple SQL trace files11/26/2009cron vs. 'at': run command at varying intervals with self-registering 'at'11/06/2009Eclipse Solaris specific bug opening >2GB file09/02/2009Windows: injecting argument to *.exe invocation08/21/2009Non-root install of blastwave(opencsw) packages08/14/2009Why do people use Excel just to send screen captures?08/07/2009gethrtime() usage in ORACLE 10g07/23/2009convert ORACLE SQL trace's timestamp with perl07/12/2009changing Thunderbird keyboard shortcuts07/04/2009macro for Firefox,IE07/01/2009xml diff/patch tool on OpenDocument files05/20/2009which process is using the network bandwidth most?05/15/2009finding busiest network port05/09/2009Java CAPS lightweight profiling04/15/2009convert 'truss' timestamp04/03/2009NetBeans troubleshooting. More verbose logs.03/25/2009P2V SunFire X* servers03/17/2009'Z' objects in SAP R/3, HL7, J.D. Edwards01/30/2009Windows P2V on VirtualBox 2.1.201/26/2009Hey MySQL, what's my heart rate?12/08/2008'at' as an alternative to 'cron'11/13/2008setting breakpoint in system call. Solaris vs. Windows11/12/2008ls -ld on all nodes in the path11/07/2008debug Greasemonkey JavaScript11/04/2008xml2, xmlstar(xmlstarlet) on Solaris1010/22/2008NetBeans: Where is 'Output' tab content saved to?10/15/2008Java thread dump on signal. Solaris vs. Windows10/02/2008bash: saving to .bash_history periodically09/26/2008'Print View' for blogs.sun.com by GreaseMonkey script09/12/2008Solaris/Linux/Windows p2v tools09/11/2008Solaris x86 p2v (physical to virtual)08/28/2008Linux crash on Airbus A38008/07/2008bash: August(08) problem08/06/2008DTrace: stop() behaviour07/15/2008DTrace: Suspend a process when it writes certain string to log file07/11/2008vmstat,Dtrace: ORACLE dedicated server vs. shared server06/26/2008Linux: oom-killer killed my VirtualBox!06/25/2008DTrace: change ORACLE SID06/08/2008SQL join Solaris RBAC files05/11/2008blastwave.org: Offline package install04/25/2008Firefox/IE7 search plug-in for Java CAPS mailing list, ITtoolbox04/22/2008shell history meme: Windows, Cygwin04/16/2008MySQL: non-SQL access, AS/40004/08/2008Migrating VMware->VirtualBox: Windows XP/2003 guest04/01/2008VMware to VirtualBox migration: Solaris x8603/27/2008Solaris p2v (Physical to Virtual) on VMware03/26/2008backing up Solaris x86 using Linux03/26/2008'ufs' support in Partimage Linux backup tool03/21/2008Spoofing Solaris version using dtrace03/07/2008VMware to VirtualBox migration02/29/2008IMAP URL for Thunderbird to open attachment directly from command line02/22/2008monitoring IMAP commands between imap.gmail.com02/15/2008

I started writing this blog on 2007 and I published about 240 entries in English. I knew for a long time that it isn't easy to browse entries on blogs.oracle.com.Worse yet, in my case I wrote entries...

DB

マニュアル日英切り換えブックマークレットDB 12cR2対応しました

DB 12.2 の一部のマニュアルが翻訳済みです。Oracle Database 12cリリース2Oracle Database 12c リリース2 新機能日本語または英語のマニュアルをオンラインで見ている時に翻訳(または原文)を見たくなる時ってないでしょうか?そういう時に使えるブックマークレットを今年の頭ぐらいに作っていたのですが今日 12cR2 対応させました。docs.oracle.comマニュアル言語切り替えBookmarkletのソース下部にあるソースを以下のアニメーションGIFのような手順でこのサイトでブックマークレット化できます。今回はソースのJavascriptコードを GitHub 上にて公開しました。GitHubからソースを読み込んでブックマークレット化してくれるサイトがあるかなと思いGoogleましたが見つかりませんでした。ですので以下からコピペでどうぞ。misc/docOraJE.js at master · inoue-katsumi/misc['database/122','cd/E82638_01'], // DB 12c R2(12.2) docs都度ダイナミックにGitHubにソースを読みにいくbookmarkletも簡単に作れるようですのでいつか試したいと思います。

DB 12.2 の一部のマニュアルが翻訳済みです。 Oracle Database 12cリリース2 Oracle Database 12c リリース2 新機能 日本語または英語のマニュアルをオンラインで見ている時に翻訳(または原文)を見たくなる時ってないでしょうか? そういう時に使えるブックマークレットを今年の頭ぐらいに作っていたのですが今日 12cR2 対応させました。 docs.oracle.comマ...

Exadata

dcli で複数サーバーにディレクトリ以下を再帰的にコピーする

以前もこのブログで書きましたがExadata,Exalogicなどでは dcli という複数サーバー一括操作ツールがインストールされています。検出後の構成および確認dcliを使用してSNMP構成コマンドを実行すると、すべてのストレージ・セルに対して構成をバッチ実行できます昨日初めて知ったのですがディレクトリーをコピーする方法が分かりにくいかと思いましたので以下に実行ログをコピペしてみます。 まずはヘルプの確認から。裏ではssh,scpを呼び出すのでそれぞれのオプションを指定できるようです。$ dcli 2>/dev/null| grep optionsUsage: dcli [options] [command] -s SSHOPTIONS string of options passed through to ssh --scp=SCPOPTIONS string of options passed through to scp if different from sshoptions空のdirectory作成して4台のリモートノードにコピーしたのが以下です。scpオプション指定により成功しました。$ mkdir work$ dcli -l $LOGNAME -g dbs_group -f work | grep -w workdbs05m:work: not a regular filedbs07m:work: not a regular filedbs08m:work: not a regular filedbs06m:work: not a regular file$ dcli -l $LOGNAME -g dbs_group -f work --scp=-rp$ dcli -l $LOGNAME -g dbs_group ls -ld workdbs05m: drwxrwxr-x 2 my_id my_id 4096 Dec 27 04:48 workdbs06m: drwxrwxr-x 2 my_id my_id 4096 Dec 27 04:48 workdbs07m: drwxrwxr-x 2 my_id my_id 4096 Dec 27 04:48 workdbs08m: drwxrwxr-x 2 my_id my_id 4096 Dec 27 04:48 work

以前もこのブログで書きましたがExadata,Exalogicなどでは dcli という複数サーバー一括操作ツールがインストールされています。 検出後の構成および確認 dcliを使用してSNMP構成コマンドを実行すると、すべてのストレージ・セルに対して構成をバッチ実行できます 昨日初めて知ったのですがディレクトリーをコピーする方法が分かりにくいかと思いましたので以下に実行ログをコピペしてみます。まずは...

hack,debug

C#, Oracleデータベース:数値のMD5チェックサム算出

あまりないかもしれませんが数値のハッシュ計算の要件があって少し調べました。実際のところDBを使うのは必須ではないので適当にググったところ c# のサンプルが見つかりました。c# - How to generate MD5 Hash(32/64 Characters) from an integer - Stack Overflowusing System.Security.Cryptography;上のリンクの一番下のブロックをコピペするとすんなりコンパイルできて実行できます。私は int2hash.cs というファイル名で保存しましたが 90 行になってしまいました。結構長いですね。数値 "123" で実行した結果が以下です。$ int2hash 123202CB962AC59075B964B07152D234B70d119fabe038bc5d0496051658fd205e6さて2行出力されました。不思議に思いソースを見たところどうも1行目は文字列のハッシュで 2行目はリトルエンディアンでの32ビット符号付整数内部表現のハッシュのようです。Oracle DBではどうでしょう?Google先生とdocs.oracle.com検索により以下で同じ結果が得られることがわかりました。SQL> select standard_hash('123','MD5') from dual;STANDARD_HASH('123','MD5')--------------------------------202CB962AC59075B964B07152D234B70SQL> select standard_hash(UTL_RAW.CAST_FROM_binary_integer(123,2),'MD5') from dual;STANDARD_HASH(UTL_RAW.CAST_FROM_--------------------------------D119FABE038BC5D0496051658FD205E611g では DBMS_CRYPTO.HASH() を使う必要があると思います。さて最後にオチですが文字列のハッシュは以下でも出ますね。実はこれ最初にやってたんですが "-n" オプションを付けるのを忘れていて無駄に検索をする羽目になってしまいました!$ echo -n 123|md5sum202cb962ac59075b964b07152d234b70 *-IEEE整数としてのハッシュもbashのみ、またはperlなど使えば1行で書けると思います。

あまりないかもしれませんが数値のハッシュ計算の要件があって少し調べました。 実際のところDBを使うのは必須ではないので適当にググったところ c# のサンプルが見つかりました。 c# - How to generate MD5 Hash(32/64 Characters) from an integer - Stack Overflow using System.Security.Cryptography;...

Windows

グラフ解析 Groovy シェルのPowershellでの起動方法

本日弊社ビルでConnpassで募集しているイベントが開催されます。実際に お手元のマシンでプロパティー・グラフ解析を行うことが可能です。先週このブログでサポートされるOSについて書きましたがWindowsでもだいたい動くことがわかりました。 以下 Powershell 中での実行で 'tab' キーによる "Auto-Completion" を実行させたウィンドウからのコピペです。Oracle PGX 2.2.1 Documentation - PGX Shell GuideAuto-Completion: the PGX shell supports automatic method completion using the tab keyPS C:\tmp\pgx-2.2.1> java -cp `>> "conf;shared-memory/common/*;shared-memory/embedded/*;`>> shared-memory/client/*;shared-memory/third-party/*" `>> oracle.pgx.shell.Console>>PGX Shell 2.2.1type help for available commands13:11:42,803 INFO Ctrl$2 - >>> PGX engine running.variables instance, session and analyst ready to usepgx> <-- "ここで Tab(タブ) キー:h :help :? ? :exit :x:q :quit :i import :d :display:c :clear :S :show :inspect :n:p :purge :e :edit :l :load. :. :s :save :r :record:H :history :a :alias := :set:rc :register :D :doc :cat cat:cp cp :ls ls :mv mv:pwd pwd :head head :ll :loglevel:javadoc :jd :t :timingpgx>Ctrl-P キーなどによる履歴呼び出しもできますよ。

本日弊社ビルでConnpassで募集しているイベントが開催されます。実際に お手元のマシンでプロパティー・グラフ解析を行うことが可能です。 先週このブログでサポートされるOSについて書きましたがWindowsでもだいたい動くことがわかりました。 以下 Powershell 中での実行で 'tab' キーによる "Auto-Completion" を実行させたウィンドウからのコピペです。 Oracle...

Data Types

弊社カフェでのConnpass勉強会、グラフ分析

昨日に引き続き、Connpassネタです。Javascript つながりでもあるかもしれません。Oracleの青山オフィスのカフェで勉強会が開催されます。初めての方も歓迎です。PGX ユーザー勉強会 #1 - connpassOracle Labs PGX(Parallel Graph Analytics)はグラフに対するクエリや分析のためのフレームワークですカフェは10月にオープンしたばかりでここで社外向け技術系のハンズオンが開催されるのは初めてなのではないかと思います。 2ちゃんねるで揶揄されていたので知りましたがZDNetでもカフェが紹介されています。ダウンロードは以下から可能です。Windowsでは現時点では動きません。Windows担当の私としては悔しいので理由を少し調べたところネイティブライブラリーが多数含まれているのが分かりました。高速化のためだと思います。Oracle Labs PGX: Parallel Graph Analytics Downloadsruns on Linux or Mac OS X 

昨日に引き続き、Connpassネタです。Javascript つながりでもあるかもしれません。 Oracleの青山オフィスのカフェで勉強会が開催されます。初めての方も歓迎です。 PGX ユーザー勉強会 #1 - connpass Oracle Labs PGX(Parallel Graph Analytics)はグラフに対するクエリや分析のためのフレームワークです カフェは10月にオープンしたばかりでこ...

Mobile,モバイル

Connpassどっぷり生活: 日本Cordovaユーザー会 & Akka

弊社で開催する開発者向けmeetupは今年3回お手伝いとして参加したのですが他のmeetupはどんな感じなんだろうということで今週は連日出かけています。昨日は以前このブログでも書いたAndroid,IPhoneなど複数プラットフォーム対応アプリフレームワークのユーザー会に行ってきました。以前も書きましたが日本で開発されて世界中にユーザーがいる Onsen UI の話を聞けてなんというか光栄でした。日本Cordovaユーザー会 - connpassHTML5ハイブリッドアプリ、とりわけApache Cordovaの普及OracleとCordovaについてはいくつか情報源がありますが以下は2週間前に書かれた新鮮な情報です。Introducing Oracle JET for mobile app development (The Oracle Mobile Platform Blog)Utilizing the Apache Cordova command-line interface, Oracle JET tooling enables you to scaffold, build and serve JET hybrid mobile apps明日(というか今日)は読書会に初めて行ってきます。まだ空席あるようですので興味ある方どうぞ。第7回Akka in Action読書会@西新宿 - connpassReactive Systems, Akkaについて学びたい方 

弊社で開催する開発者向けmeetupは今年3回お手伝いとして参加したのですが 他のmeetupはどんな感じなんだろうということで今週は連日出かけています。 昨日は以前このブログでも書いたAndroid,IPhoneなど複数プラットフォーム対応 アプリフレームワークのユーザー会に行ってきました。以前も書きましたが日本で開発されて 世界中にユーザーがいる Onsen UIの話を聞けてなんというか光栄...

DB

SQL実行計画の確認方法の種類 9+1

1ヶ月以上前になってしまいましたがOracleなどのDBに強い世界的に有名なコンサル集団の会社のブログにOracle DBでSQL実行計画を見る 9 つの方法が紹介されていました。Distinguish Real SQL Execution Plans from Fake Ones! | Official Pythian® BlogThere are many methods to extract the execution plan for a specific SQL statement実際のsqlplus中での実行結果をコピペしていると思われます。勉強になります。SQL Developer で実行計画を得る方法など含めるともっと方法はあります。もう一つ番外編として7年以上前になりますが以下の方法が当時の有名なOracleコンサルにより紹介されています。Tracing Oracle SQL plan execution with DTrace | Tanel Poder's Performance & Troubleshooting blogif you want to learn and really understand the sequence of SQL plan execution – it’s dead easy with DTrace.DTraceでアタッチすること自体サポートされないはずですし、最近のバージョンで通用するかどうかも分かりません。実行するのであればテスト環境にしましょう。:)

1ヶ月以上前になってしまいましたがOracleなどのDBに強い世界的に有名なコンサル集団の会社のブログに Oracle DBでSQL実行計画を見る 9 つの方法が紹介されていました。 Distinguish Real SQL Execution Plans from Fake Ones! | Official Pythian® Blog There are many methods to...

Data Types

connpass meetupで予定されていた機械学習ネタDSSTNE関連リンク

現ORACLE社員が以前開発に関わったDeep Learning手法の一つが取り上げられる予定だったそうですが無くなったそうです。meetup app tokyo@2 - connpassDSSTNEの紹介は取りやめることとしましたその代わりといってはなんですがいくつかここで関連リンクを貼っておきます。まずは現ORACLE社員のブログで4か月前にDSSTNEが紹介されています。Deep Learning with DSSTNE | a-misradeep learning library that my old team at Amazon built and open-sourced earlier this year.GitHub はここです。今見たら *.cpp ファイルが10時間前に更新されていました。まだアクティブなプロジェクトではないかと思います。amznlabs/amazon-dsstne: Deep Scalable Sparse Tensor Network Engine (DSSTNE)open source software library for training and deploying recommendation models with sparse inputs, fully connected hidden layers, and sparse outputs.connpass のページにも書かれている "MXNet" については純粋に技術的な選択だったの?とInforWorld誌が邪推しています。Why Amazon picked MXNet for deep learning | InfoWorldother motives may also be at work, 

現ORACLE社員が以前開発に関わったDeep Learning手法の一つが取り上げられる予定だったそうですが無くなったそうです。 meetup app tokyo@2 - connpass DSSTNEの紹介は取りやめることとしました その代わりといってはなんですがいくつかここで関連リンクを貼っておきます。 まずは現ORACLE社員のブログで4か月前にDSSTNEが紹介されています。 Deep Learn...

BigData

SPARC: ソフトウェアインシリコンサンプルプログラムとログ出力

前回の続きです。サンプルプログラムのうちのいくつかは英語ですが以下のページに紹介されています。DAX Sample Programs | Oracle CommunityApproximate K-Nearest Neighbors Classification以前も書いた Spark on SPARC のサンプルは上記ページにはありませんが決定木分析も追加されています。 プレーンなJavaのサンプルでは k平均法 も追加されていました。 機械学習を意識しているんでしょうか?データマイニングという方が通りがいいかもしれません。最後に前回の宿題だったDAXが使われたことの確認について。 結論からいうとDAXのバージョンによって方法が違いそうであることがわかりました。 古いバージョンでは以下のマニュアルページの通りに動作しました。新しいバージョンではsyslog設定のみでも良さそうでした。dax_thread_init - man pages section 3: DAX Library FunctionsSends messages to syslog(3c) if DAX_LOG_OPTIONS is set but DAX_LOG_FD is not defined.例えば Apache Spark の場合以下のような感じで起動すれば標準出力にログが出てきます。$ DAX_LOG_OPTIONS=all DAX_LOG_FD=1 \> spark-submit --class DaxCube --master local \> file://$PWD/bin/Cube.jar data/sample /tmp/test.out 2>&1ログの内容や新しいバージョンでのログ出力方法についてはいずれ書きたいと思います。数か月先になると思いますのであまり期待しないでください!..

前回の続きです。サンプルプログラムのうちのいくつかは英語ですが以下のページに紹介されています。 DAX Sample Programs | Oracle Community Approximate K-Nearest Neighbors Classification 以前も書いた Spark on SPARC のサンプルは上記ページにはありませんが決定木分析も追加されています。プレーンなJavaのサン...

Mobile,モバイル

Stanford大学の機械学習講座をAndroidアプリでオフライン視聴

社内メーリングリストでスタンフォードのAndrew Ng氏の機械学習の説明が非常に分かり易いと知り、Googleってみました。日本でもかなり知られているようですね。以下などの記事が多くヒットします。Courseraの講座 Machine Learning に日本語字幕をつけて、AndroidのMX Playerで視聴する方法 - QiitaCourseraの創業者の一人 Andrew Ngさんが講義した機械学習のコースは無料で日本語字幕がある私も受講してみることにしました。おそらく上の記事が書かれたころには無かったと思いますが今はAndroid アプリがありオフライン視聴できます。音声だけにして画面オフで聞くこともできます。最初のMP4だけ日本語字幕が選択できませんでした。そこでtermuxというAndroidアプリでコマンド操作により字幕ファイルが存在しないことを確認した動画が以下です。*.mp4は4つあるのに日本語字幕ファイルは一つ足りてないですね。ちなみにスタンフォードはOracle本社のわりと近くにあるのでそこのオフィスの社員は講座を校舎に受けに行ったりしています。

社内メーリングリストでスタンフォードのAndrew Ng氏の機械学習の説明が非常に分かり易いと知り、 Googleってみました。日本でもかなり知られているようですね。以下などの記事が多くヒットします。 Courseraの講座 Machine Learning に日本語字幕をつけて、AndroidのMX Playerで視聴する方法 - Qiita Courseraの創業者の一人 Andrew...

Windows

MeetupとWindowsでのnode.js & git

昨日は弊社オフィスでのMeetupへのご参加ありがとうございました。アンケートへのリンクは以下にあります。AIが入ったBotの作り方を学ぼう - Part5 自然言語解析でメッセージの意図を解釈しBotのスキルを高める - QiitaMeetup参加者の皆様へのアンケート私も微力ながらお手伝いさせていただきました。ところで上記リンクのチュートリアルを読むと分かりますがコマンドライン操作が多く何となく MacBook や Linux 向けなのかなという雰囲気があると思います。実際にはWindowsでももちろん全て実行可能です。ただいくつか以下のような嵌まりポイントがあると思います。今後の参考になれば。1.node.exe , npm.exe はCygwinに正式対応していません。ですが "node index.js" や "npm install -s express" などのCygwin bash 中での実行は可能です。2."npm init" をbashで実行すると正常終了しないと思います。ですがCtrl-Cで抜けてpackage.jsonファイルができていれば問題ないです。3.Cygwin git は "git add package.json" とか "git commit -m 'My 1st commit'" などでは使えます。ですが push だけはベンダー固有の理由 :) により使えないようです。Cygwinでない git.exe を使うのが無難です。4.index.jsファイルなどの改行コードはDOS形式でもUNIX形式でも問題ないと思います。5.サーバーログのtailはbashであればバックグラウンドで流しっぱなしにすることが可能です。これだと複数個端末を開く必要ないですね。Powershellでもできるんでしょうか?6..gitignoreなど拡張子のないファイルの作成が面倒です。コマンドプロンプトとpowershell.exeではRENAMEコマンドなどで回避できます。7.必要なツール類(node.jsなど)は chocolatey でもインストールできます。

昨日は弊社オフィスでのMeetupへのご参加ありがとうございました。アンケートへのリンクは以下にあります。 AIが入ったBotの作り方を学ぼう - Part5 自然言語解析でメッセージの意図を解釈しBotのスキルを高める - Qiita Meetup参加者の皆様へのアンケート 私も微力ながらお手伝いさせていただきました。 ところで上記リンクのチュートリアルを読むと分かりますがコマンドライン操作が多く何とな...

Virtualization

Software in Siliconテストドライブ環境での制限

Oracle社員でなくてもソフトウェア・イン・シリコンを試すことができる環境を久しぶりに使ってみました。Open DAX APIsLearn about DAX performance with Apache Spark以前も書きましたがSWiSの構成物の一つのDAXは Oracle DB 12c の Database In-Memory も使います。DAXが呼ばれたかどうかを判断するのに以下の最近のブログに書かれたbusstatコマンドを使う方法があります。Low-level monitoring of DAX on SPARC M7 (Martin's Blog)DAX (Data Analytics Accelerator) is special purpose unit on the SPARC M7 or S7 CPU実際に swisdev.oracle.com の環境で試したところこの環境ではrootでもエラーが出ることがわかりました。社内マシンのLDOMで以前使っていたときも指定された一つのDomUでのみしか実行できない制限がありましたので テストドライブ環境でもこのコマンドではDAX使用を確認できない可能性が高いと思います。 他の手段で確認する方法について近日中に書く予定です。# busstat -w dax,pic0=DAX_QRY0_input_valid,pic1=DAX_QRY2_input_valid,pic2=DAX_QRY3_input_valid 5busstat: could not set events (setting events requires root permission).

Oracle社員でなくてもソフトウェア・イン・シリコンを試すことができる環境を久しぶりに使ってみました。 Open DAX APIs Learn about DAX performance with Apache Spark 以前も書きましたがSWiSの構成物の一つのDAXは Oracle DB 12c の Database In-Memory も使います。 DAXが呼ばれたかどうかを判断するのに以下の最...

Cloud

GitHub API: jqを使わずにまとめてHackathonアプリをclone

先週2回に分けてGitHub APIについて書きましたが jq を使うところが少し面倒だったと思います。GitHub Oracle公式レポジトリー一覧のAPIでの取得'jq' でプッシュ日付でソートしてみました。実際のところはGitHub APIはName,Valueの対毎に改行を入れて返してくれるのでgrep,sed,awkなどで処理できてしまいます。ということで今日は以前ご紹介したオーストラリアのハッカソンで作られたOracle Cloudを使ったアプリを一括クローンしてみます。 jq の代わりに GNU awk を使っています。ausemon-frontendはサイズが44MBもあるのでご注意ください。$ curl --silent https://api.github.com/users/Joelith/repos | > awk -F'": "|",' '$1 ~ /clone_url/ && $2 ~ /ausemon-/ {print $2}' |> while read line> do> git clone $line> doneCloning into 'ausemon-backend'...remote: Counting objects: 30, done.remote: Total 30 (delta 0), reused 0 (delta 0), pack-reused 30Unpacking objects: 100% (30/30), done.Checking connectivity... done.Cloning into 'ausemon-frontend'...remote: Counting objects: 626, done.remote: Total 626 (delta 0), reused 0 (delta 0), pack-reused 626Receiving objects: 100% (626/626), 20.79 MiB | 670.00 KiB/s, done.Resolving deltas: 100% (104/104), done.Checking connectivity... done.Cloning into 'ausemon-mcs'...remote: Counting objects: 25, done.remote: Total 25 (delta 0), reused 0 (delta 0), pack-reused 25

先週2回に分けてGitHub APIについて書きましたが jq を使うところが少し面倒だったと思います。 GitHub Oracle公式レポジトリー一覧のAPIでの取得 'jq' でプッシュ日付でソートしてみました。 実際のところはGitHub APIはName,Valueの対毎に改行を入れて返してくれるのでgrep,sed,awkなどで処理できてしまいます。 ということで今日は以前ご紹介したオーストラ...

http

GitHub OracleリポジトリをAPI経由でまとめてWatch設定するone-liner

昨日リストアップしたrepositoryに全てsubscribeしてみるone-linerです。 急にメールが増える可能性がありますので :) やってみる場合は注意が必要です。GitHub Oracle公式レポジトリー一覧のAPIでの取得"公式"なOracleレポジトリー一覧です。実行後にブラウザーで確認するとこうなります。$ curl --silent https://api.github.com/users/oracle/repos?per_page=50 |> jq '.[].subscription_url'| dos2unix | xargs curl -u your-github-login -X PUT \> -d '{"subscribed":true,"ignored":false}'Enter host password for user 'your-github-login': **your-pw**{ "subscribed": true, "ignored": false, "reason": null, "created_at": "2016-11-24T02:17:23Z", "url": "https://api.github.com/repos/oracle/accelerators/subscription", "repository_url": "https://api.github.com/repos/oracle/accelerators"}{ "subscribed": true, "ignored": false, "reason": null, "created_at": "2016-11-24T02:17:23Z", "url": "https://api.github.com/repos/oracle/analytical-sql-examples/subscription",WindowsでCygwin版curlを使う場合の例です。他の環境ではdos2unixは不要です。ベーシック認証を使えるところが意外でした。プロセスを3回起動するので遅くかつリソース食いますね。最近だとPythonで書くのが普通でしょうか。

昨日リストアップしたrepositoryに全てsubscribeしてみるone-linerです。 急にメールが増える可能性がありますので :) やってみる場合は注意が必要です。 GitHub Oracle公式レポジトリー一覧のAPIでの取得 "公式"なOracleレポジトリー一覧です。 実行後にブラウザーで確認するとこうなります。 $ curl --silent...

misc

GitHub Oracle公式レポジトリー一覧のAPIでの取得

"公式"なOracleレポジトリー一覧です。例えばJETなどがあるようです。Oracle · GitHubOracle JET is a modular JavaScript Extension Toolkit for developers全部で44あり、'jq' でプッシュ日付でソートしてみました。ブラウザーで見る際と同順になっていると思います。 これだけであればGitHubアカウントが無くても実行可能です。$ curl --silent \> https://api.github.com/users/oracle/repos?per_page=50 |> jq 'sort_by(.pushed_at)|reverse|.[]|.pushed_at[:10]+" "+.name'"2016-11-22 puppet-solaris_providers""2016-11-22 terraform""2016-11-22 docker-images""2016-11-18 bigdatalite""2016-11-18 atg-commerce-iaas""2016-11-17 pgql-lang""2016-11-17 oracle-db-tools""2016-11-17 cloud-native-devops-workshop""2016-11-16 souffle""2016-11-14 solaris-openstack-utils""2016-11-08 json-in-db""2016-11-04 puppet-samples""2016-11-04 chef-samples""2016-11-02 xml-sample-demo""2016-10-30 mobile-persistence""2016-10-28 node-oracledb""2016-10-27 atg-build-tools""2016-10-27 oracle-cloud""2016-10-21 generator-oraclejet""2016-10-21 grunt-oraclejet""2016-10-21 oraclejet-tooling""2016-10-21 oraclejet""2016-10-20 nosql-examples""2016-10-14 kernel-fuzzing""2016-10-11 hackathons""2016-10-10 dw-vldb""2016-09-29 dino-date""2016-09-21 accelerators""2016-09-21 soda-for-java""2016-09-08 idm-samples""2016-08-31 fmw-chef-cookbook""2016-08-30 cpq-cloud-with-paas-samples""2016-07-29 sales-cloud-with-paas-samples""2016-07-19 compute-cloud-service-demos""2016-07-14 fmw-puppet-modules""2016-06-14 jdbc-ucp""2016-06-08 weblogic-innovation-seminars""2016-06-08 apps-cloud-ui-kit""2016-05-18 db-sample-schemas""2016-05-09 dotnet-db-samples""2016-05-03 analytical-sql-examples""2016-04-07 oracle-nosql-drivers""2016-03-09 docker-docs""2016-02-24 nvm-direct"他にOracle社員を表明して公開してあるレポジトリーも多数ありますよ。

"公式"なOracleレポジトリー一覧です。例えばJETなどがあるようです。 Oracle · GitHub Oracle JET is a modular JavaScript Extension Toolkit for developers 全部で44あり、'jq' でプッシュ日付でソートしてみました。ブラウザーで見る際と同順になっていると思います。これだけであればGitHubアカウントが無くても実行...

DB

ビットを数えるPL/SQL関数のインライン実行

先日の続きです。MySQLのBIT_COUNT()のSQL版でビットを数えてみる後者の方を1から10まで実行してみました。結果は正しそうです。近日中にPL/SQLファンクション化したものについて書く予定です前回2つリンクを書き、実際にも2通り関数の書き方がありますが結果的には実行時間もセッション統計もほぼ差がありませんでした。 なのでここでは後者のみ定義をコピペします。create or replace function bit_count_2( n in number) return number asbegin return MOD( BITAND( (n - BITAND(n / 2, 3681400539) - BITAND(n / 4, 1227133513)) + (n - BITAND(n / 2, 3681400539) - BITAND(n / 4, 1227133513)) / 8 , 3340530119 ) , 63 );end ;3年半前に登場した12cR1の新機能でPL/SQL関数のインライン実行という機能があります。 この機能を使うと40%程度高速に実行できました。詳細は近日中に書きたいと思います。『Oracle Database PL/SQL言語リファレンス』のこのリリースの変更点SQL SELECT文のWITH句で宣言および定義されているPL/SQLファンクション

先日の続きです。 MySQLのBIT_COUNT()のSQL版でビットを数えてみる 後者の方を1から10まで実行してみました。結果は正しそうです。近日中にPL/SQLファンクション化したものについて書く予定です 前回2つリンクを書き、実際にも2通り関数の書き方がありますが結果的には実行時間もセッション統計もほぼ差がありませんでした。 なのでここでは後者のみ定義をコピペします。 create or...

SQL & Tools

sqlplus: EZCONNECT使用時の落とし穴

sqlplus のみEZ-CONNECTを使う際の落とし穴があります。パスワードを省略する場合EZCONNECT部分を " (ダブルクォート)で囲む必要があります。 例えばbash,kshなどのコマンドライン上で接続先指定する場合double quoteのみでなく バックスラッシュによるエスケープも必要になります。oracle easy connect ORA-12504 | Louis & Cherry's 花花世界$ sqlplus sys@\"127.0.0.1:1521/pdb2_1\" as sysdbaSQL*Plus インタラクティブモードの "SQL>"プロンプト上でも CONNECT, COPYコマンドでも必要です。 例えばCOPYコマンドでEZ-CONNECT文字列を囲まない場合のエラーはこうなります。この場合の回避策はdouble-quoteのみでよくバックスラッシュは必要ありません。SQL> copy from hr@myserver/pdb1 create employees using select * from employees配列のフェッチ/バインドのサイズは15です(配列サイズは15)。完了時にコミットします(copycommitは0)。最大longサイズは80です(longは80)。ERROR:ORA-12504: TNS: リスナーはCONNECT_DATAのSERVICE_NAMEを取得できませんでした。直感的でない仕様でごめんなさい。<(_ _)> SQLcl など他のツールでは囲む必要はありません。

sqlplus のみEZ-CONNECTを使う際の落とし穴があります。 パスワードを省略する場合EZCONNECT部分を " (ダブルクォート)で囲む必要があります。 例えばbash,kshなどのコマンドライン上で接続先指定する場合double quoteのみでなく バックスラッシュによるエスケープも必要になります。 oracle easy connect ORA-12504 | Louis &...

Windows

DBCAのキーボード操作のGIFアニメーション

以前書いたWindowsでの打鍵表示ツールを初めて使ってみました。1.Exadata でDBCAを起動し Windows7 の Xming に飛ばしています。DB12.1.0.2ではこの組み合わせだと ドロップダウンでマウスを使えない現象があるようです。伝わりにくいと思いますがこのGIFをよく見るとどうやっても "Storage Type" をマウスだけでASMからファイルシステムに変えられないことがわかると思います。原因は dbca なのかSwing(Java) なのかXmingの何れなのかまだ分かっていません。12.2では再現しないです。2.DBCAはアクセシビリティーを考慮しているので全てキーボードで操作可能です。アンダーライン付のアルファベット文字が アクセラレーションキーで Alt + '文字' でその場所に跳びます。3.ドロップダウンでは矢印キーも使えますし、アルファベットキーを打ってその文字で始まる選択候補があればその候補にジャンプしてますね。4.右下の半透明のグレーの箱が打鍵表示ツールです。

以前書いたWindowsでの打鍵表示ツールを初めて使ってみました。 1. Exadata でDBCAを起動し Windows7 の Xming に飛ばしています。DB12.1.0.2ではこの組み合わせだと ドロップダウンでマウスを使えない現象があるようです。 伝わりにくいと思いますがこのGIFをよく見るとどうやっても "Storage...

SQL & Tools

MySQLのBIT_COUNT()のSQL版でビットを数えてみる

整数値や16進文字列の立っているビットを数えたい場面はまあまあ出てくると思います。Iconfinder: 画像データの重複チェックのアルゴリズム - ワザノバ | wazanovaBIT_COUNTは整数でのみ有効だが、ハッシュは16進数なので、10進数に変換してから計算しているMySQLでは標準関数にあるようです。13.12 Bit Functions and OperatorsBIT_COUNT() Return the number of bits that are setOracle DBでの代替手段も簡単にGoogleで見つかるだろうと思いましたが意外に見つけるのに苦労しました。 以下は3年前に書かれていますが、...Ask Tom "BInary operator like AND, XOR"google 'hakmem'元ネタは2005年に書かれた以下だと思います。Vladimir's Diary: MIT HAKMEM Bit Count in Oracle SQLImplemented in PL/SQL hakmem is quite fast.後者の方を1から10まで実行してみました。結果は正しそうです。近日中にPL/SQLファンクション化したものについて書く予定です。SQL> WITH tbl as (2 select rownum as n from dual connect by rownum <= 103 )4 SELECT n5 , MOD(6 BITAND(7 (n - BITAND(n / 2, 3681400539) - BITAND(n / 4, 1227133513))8 + (n - BITAND(n / 2, 3681400539) - BITAND(n / 4, 1227133513)) / 89 , 334053011910 )11 , 6312 ) cnt13 FROM tbl14 WHERE n BETWEEN 0 AND 429496729515 / N CNT---------- ---------- 1 1 2 1 3 2 4 1 5 2 6 2 7 3 8 1 9 2 10 210 rows selected.

整数値や16進文字列の立っているビットを数えたい場面はまあまあ出てくると思います。 Iconfinder: 画像データの重複チェックのアルゴリズム - ワザノバ | wazanova BIT_COUNTは整数でのみ有効だが、ハッシュは16進数なので、10進数に変換してから計算している MySQLでは標準関数にあるようです。 13.12 Bit Functions and Operators BIT_COUN...

Perl,Python,scripting

CSVの1行目はカラム名になるのでnode.jsでローマ字化してみる

以前CSVファイルからDDLを生成するPythonのddlgeneratorというツールについて書きました。この日本語のダミーデータを試すと、....$ head -3 japanese.csv 都道府県名,最寄駅_名称,前面道路_方位,容積率_pct北海道,西18丁目,北,400北海道,西28丁目,,200日本語がunderscoreに置き換えられました。$ ddlgenerator -c 8 oracle japanese.csvCREATE TABLE japanese ( "_____" NVARCHAR2(19) NOT NULL, "______" NVARCHAR2(24) NOT NULL, "_______" NVARCHAR2(18), "____pct" NUMBER(19) NOT NULL);今回のこのデータの使用目的ではカラム名は日本語である必要がないのでローマ字にすることにします。以前和英辞書テキストファイルにローマ字フィールドを追加した際に書いた node javascript コードを単純化してみました。 単純に標準入力全部をアクセントなし空白なしのローマ字文字列に変換します。var romanizer= require('romanizer');var rl = require('readline').createInterface({ input: process.stdin });rl.on('line', function (line) { romanizer.romanize(line).then(function(romaji){onbikiAndSpace(romaji)});});function onbikiAndSpace(s) {if(!onbikiAndSpace.translate_re) onbikiAndSpace.translate_re = /[ .āīūēō]/g;var translate = {" ": "", ".": "", "ā": "ah", "ī": "ih", "ū": "uh", "ē": "eh", "ō": "oh" }; console.log( s.replace(onbikiAndSpace.translate_re, function(match) {return translate[match]; }));}これを使ってddlgeneratorにかけるとこうなりました。$ head -1 japanese.csv | node ./romanize_noaccent.js > romaji.csv$ sed -n '2,$p' japanese.csv >> romaji.csv $ ddlgenerator -c 8 oracle !$ddlgenerator -c 8 oracle romaji.csvCREATE TABLE romaji ( todohfukenmei NVARCHAR2(19) NOT NULL, moyorieki_meishoh NVARCHAR2(24) NOT NULL, zenmendohro_hohi NVARCHAR2(18), yohsekiritsu_pct NUMBER(19) NOT NULL);"方位"が "hohi" になるのが分かりにくいですね。"houi"または"hooi"に変換する方法を少し考えてから GitHub にでもあげようと思います。

以前CSVファイルからDDLを生成するPythonのddlgeneratorというツールについて書きました。 この日本語のダミーデータを試すと、.... $ head -3 japanese.csv 都道府県名,最寄駅_名称,前面道路_方位,容積率_pct北海道,西18丁目,北,400北海道,西28丁目,,200 日本語がunderscoreに置き換えられました。 $ ddlgenerator -c 8 ...

Data Types

ドコモさん子会社提供の自然言語処理APIサービス

NTTドコモ様子会社が開発されたテキスト分析APIについて社内セミナーで知りました。Text Analytics API | Data NinjaData Ninja API analyzes text and detects relevant categories, concepts, entities, and sentiments.一般的にこの手の処理はNLP(Natural Language Processing)と略される場合も多いと思います。キーを取得して試してみました。ブラウザーでまず試してみると curl コマンドラインで実行する場合の引数など全て表示されました。 curl だとPOST内容をローカルファイルから読めるので楽だということがわかったので試してみます。まずテストデータは英語のブログからblog4.txtファイルにコピペしました。$ head -3 blog4.txt Probably to most NetBeans users, the need to double-click a file to open it has become part of your DNA.However, consider the thought of not needing to double-click anymore. Simply select a file and it opens. That's what the "One Click Open Sesame" plugin aims to achieve for you:No More Double-Clicking To Open Files In NetBeans! (Geertjan's Blog)Chris Lenz (@Chrizzly42) and Benno Markiewicz (@benM4) in Leipzig worked on it quite a bitそしてエンティティー抽出っぽいことをした結果が以下です。地名と人名など取り出せました。$ curl --silent -X POST \> --header "Content-Type: application/json" --header "Accept: application/json" \> --header "X-Api-Key: replace-with-your-real-key" \> -d @<(echo -n '{"text":"' && cat blog4.txt |> sed 's/"/\\\\\\"/g;s/\n/\\\\\\r/g' &&> echo -n '","max_size":1000000}') \> "https://replace-with-real-server/smartcontent/tag" |> jq .entity_list.entities[].keyword"NetBeans""Leipzig""GitHub""Lenz""Chris""Benno Markiewicz""yesterday"JSON文字列のエスケープはかなりいい加減です。改行はこのサービスについてはエスケープする必要ないかもしれません。jq というツールについては以前もこのブログで書きました。いつかOracle DBでのJSON処理との差分についてこのブログで書くと宣言しましたがまだ書けておりません。ごめんなさい。

NTTドコモ様子会社が開発されたテキスト分析APIについて社内セミナーで知りました。 Text Analytics API | Data Ninja Data Ninja API analyzes text and detects relevant categories, concepts, entities, and sentiments. 一般的にこの手の処理はNLP(Natural...

Windows

node.js オラクルDBアクセスドライバーインストール on Windows,Part#3

昨日の続きです。windows-build-toolsをインストールすると Visual C 2015 がグローバル環境変数によりデフォルトになるようです。Installing node-oracledb on Microsoft Windows | Oracle CommunityAlso we need to add the OCI_LIB_DIR and OCI_INC_DIR environment variables.上記ページなどもそうですがWindowsの環境変数ってめんどうくさいGUIで設定しないと使われないと思われている方が多いと思います。 実際のところはシェル中で設定しても問題ない場合が多く、しかも安全です。特にCygwin bashの場合スコープを以下のように 最小限に絞れます。">" はbashでのコマンド行継続記号なのでコピペはご注意ください。$ http_proxy=http://corp-proxy:80 \> OCI_INC_DIR=C:/OracleATS/oxe/app/oracle/product/11.2.0/server/oci/include \> OCI_LIB_DIR=C:/OracleATS/oxe/app/oracle/product/11.2.0/server/oci/lib/MSVC \> npm install -g oracledb[...]C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" はコード -1073741515 を伴って終了しました。[...]私のWindows7ではVC2015 だと上記エラーになりました。回避策はUniversal CRT関連DLLへのPATHを通すことでした。 Windows 10 ではすんなりビルドできるのではないかと思います。これだとすっきりしないので Visual C 2013 でビルドしました。C4996 deprecated warningについてはたぶん無視できるのではないかと思います。$ !! --msvs_version=2013[...]..\src\njs\src\njsPool.cpp(495): warning C4996: 'v8::Function::NewInstance': が古い形式として宣言されました。[...]コード生成が終了しました。 oracledb.vcxproj -> C:\Users\katinoue\AppData\Roaming\npm\node_modules\oracledb\build\Release\oracledb.nodeC:\Users\katinoue\AppData\Roaming\npm`-- oracledb@1.11.0$ file "$APPDATA\npm\node_modules\oracledb\build\Release\oracledb.node"C:\Users\katinoue\AppData\Roaming\npm\node_modules\oracledb\build\Release\oracledb.node:PE32+ executable (DLL) (GUI) x86-64, for MS Windows拡張子は *.node ですが実体はDLLのようです。app.js というサンプル1個のみですが Visual Studio 2013 でのビルドでもVC2015の方でビルドした場合でも問題なく動作しました。

昨日の続きです。 windows-build-toolsをインストールすると Visual C 2015 がグローバル環境変数によりデフォルトになるようです。 Installing node-oracledb on Microsoft Windows | Oracle Community Also we need to add the OCI_LIB_DIR and OCI_INC_DIR...

Windows

Visual Studio: node.js オラクルDBアクセスドライバーインストール Part#2

昨日の続きです。まずは英語ですが社外の方が書かれた画面ショットも多数入っている親切な手順説明があります。Installing node-oracledb on Microsoft Windows | Oracle Communityto those who have an Oracle database in their environment and those who are familiar with using Node.js and the npm package manager.ですが1年間以上更新されていないので、インストールに取り掛かる前に以下でnode-gypの最新情報を読む方が良いと思います。GitHub - nodejs/node-gyp: Node.js native addon build toolInstall all the required tools and configurations using Microsoft's windows-build-tools using npm installこの "windows-build-tools" とやらは5ヶ月ぐらい前に登場してきたもののようです。私も npm コマンドによりインストールしてみたところ何とインストールに40分間もかかりました。多くのファイルが追加されるので既存の環境が壊れてしまうのではないかと心配する方も多いのではないかと思います。実際古いバージョンの Visual Studio がインストールされていても問答無用に Visual C++ 2015をインストールするようでした。node-oracledb は Visual Studio 2013 でのコンパイルリンク実績が一番多いと思います。さて大ざっぱに分けると2つのインストール方法があることが分かりました。Python, Visual C を別々にインストールする。npm install -g windows-build-tools により python, Visual C 2015を一括インストール私的な選択基準はWindows10以上でPythonもVisual {C|Studio}のどちらも未インストールであれば#2でそれ以外は#1です。また次回に続きます。 

昨日の続きです。 まずは英語ですが社外の方が書かれた画面ショットも多数入っている親切な手順説明があります。 Installing node-oracledb on Microsoft Windows | Oracle Community to those who have an Oracle database in their environment and those who are...

Perl,Python,scripting

Windows: node.js オラクルDBアクセスドライバーインストール Part#1

以前Windows上での Ruby や R でのOracle DBアクセスドライバーについてこのブログで書きました。セットアップはかなり簡単でした。ですが少し残念なことにNode.jsの場合、比較的面倒です。何回かに分けて書きたいと思います。今回はPythonについて。nodeなのになぜPython??かというとネイティブDLLのビルドをする際にnode-gypという NPM を使うからです。node-gyp/MSVSVersion.py · nodejs/node-gyp · GitHubif sys.platform not in ('win32', 'cygwin'):私はWindows7でCygwin版pythonを使っています。かつ、上記リンクを見れば分かるようにソースコード上でもCygwinに対応している雰囲気があります。ですが npm install -g oracledb コマンドはCygwin版Pythonに起因しているように見えるエラーでこけます。原因は node-oracledb にあるのか、node-gyp にあるのかまだ分かっていません。いずれかのコードを修正する自信が無いのであれば、ネイティブ版 Python をインストールする方が良いかと思います。Pythonのインストールについては明日のブログに続く。

以前Windows上での Ruby や R でのOracle DBアクセスドライバーについてこのブログで書きました。 セットアップはかなり簡単でした。 ですが少し残念なことにNode.jsの場合、比較的面倒です。何回かに分けて書きたいと思います。 今回はPythonについて。nodeなのになぜPython??かというとネイティブDLLのビルドをする際にnode-gypという NPM...

Windows

マウスを使わないとOracle操作が速くなることをデモするためのキーボード操作表示ツール

世間ではマウスを使わないと仕事が速いと思われるそうです。仕事が速い人ほどマウスを使わない! 超速パソコン仕事術 | 岡田充弘 |本 | 通販 | Amazon本書で紹介する、数々の「ワザ」は、マウスを使わずPCを操作するための「ショートカットキー」を始め...たぶんOracle DBを使ってきた方などはサーバーにTeratermやPuTTYでログインしてパチパチやっている時間が長いと思うのでExcelやPowerpointなどでもなるべくキーボードで済ませる習慣がついている方が多いのではないかと思います。OracleサーバーがWindowsであってもいくつかの操作をPowershellなどから直接実行するような工夫をされてるのではないでしょうか。Oracleのツール、例えば SQL Developer、APEX, LiveSQL などでもショートカットキーで操作を速くできます。キー操作を表示するツールを見つけたので今後これを使ってスクリーンキャストというかGIFアニメーションをこのブログで紹介していきたいと思います。GitHub - Phaiax/PxKeystrokesForScreencasts: Displays Keystrokes in an overlay window. (Windows 8)Displays Keystrokes in an overlay window. (Windows 8)以前SQL DeveloperでのCtrlキー操作をムービー中に表示したエントリーも書いています。上のツールを使えば後から動画にテキストを埋め込む作業も必要なくなりますね。SQL Developer:セッション統計の差分取得手順の動画 (INOUE Katsumi @ 東京)V$MYSTAT,V$SESSTAT取得手順 

世間ではマウスを使わないと仕事が速いと思われるそうです。 仕事が速い人ほどマウスを使わない! 超速パソコン仕事術 | 岡田充弘 |本 | 通販 | Amazon 本書で紹介する、数々の「ワザ」は、マウスを使わずPCを操作するための「ショートカットキー」を始め... たぶんOracle DBを使ってきた方などはサーバーにTeratermやPuTTYでログインしてパチパチやっている時間が長いと思うのでExc...

bash cures cancer

ImageMagickでアニメーションGIFに再生時間などを表示させるスクリプト

このブログではSQL Developerなどについて書くときにアニメーションGIFを多用しています。米国オフィスで働く SQL Developerのプロダクトマネージャーも2人ともアニメーションGIFを多用しています。これはどちらかというと偶然です。Oracle社員はanimation GIFが好きなのかもしれません。ところでアニメーションGIFがブラウザ中で無限ループするとどこが開始点なのか分らない場合が多いと思います。そこでファイル名と再生時間を埋め込んだ画像をGIFに追加するbashスクリプトを書いてみました。仕事のほとんどは ImageMagick が行うのでスクリプト自体は大したことはしてません。以下中身と実行例と生成されるファイルのサンプルです。私はWindowsのCygwinでしか確認していませんがLinux,Solaris,HP-UX,Macなどでもフォント指定の違い以外は動くはずです。長い英語の文字列は空白で折り返されるのですが日本語には対応していないようで、はみ出てしまってますね。$ cat AnimGIFAppend.sh #!/bin/bashfontsize=48size=$(file "$1"|grep -Eo '[0-9]+ x .*'|tr -d ' ')duration=$(identify -format "%T\n" "$1"| awk '{t+=$0};END{print t}')filename=$(echo "$1" | sed 's/\.[gG][iI][fF]$//')convert -size $size -background black -font c:/Windows/Fonts/meiryob.ttc \ -pointsize $fontsize -fill white -gravity center \ caption:"${filename}\n$(($duration/100))秒" "${filename}_fndur.gif"convert "$1" \( "${filename}_fndur.gif" -set delay 100 \) "${filename}_appended.gif"$ ./AnimGIFAppend.sh 日本語で長い名前をImageMagickがwrap.gif

このブログではSQL Developerなどについて書くときにアニメーションGIFを多用しています。 米国オフィスで働く SQL Developerのプロダクトマネージャーも2人ともアニメーションGIFを多用しています。 これはどちらかというと偶然です。Oracle社員はanimation GIFが好きなのかもしれません。 ところでアニメーションGIFがブラウザ中で無限ループするとどこが開始点なのか分...

IT

Oracleとブロックチェーン

"Block", "Chain" と聞くと私などは行連鎖のことかと勘違いしていたものです。最近は仕事でもそれ以外でもよくBlockchainという単語を見るようになってきていてWIREDという雑誌の最新号で特集されていたのでGoogleってみました。『WIRED』VOL.25(10/11発売) The Power of Blockchain ブロックチェーンは世界を変える|コンデナスト・ジャパンのプレスリリースガヴァメントITの分野で破壊的ともいえるイノヴェイションを次々と打ち出してきた、バルトの小国エストニアオラクル(Oracle)とは何か? ブロックチェーン - Qiitaデータベースのオラクルは全く関係ありません会社/ソフトウェアの名前の"oracle"ではなく"神託"の方の一般名詞の方の派生の"oracle"が用語として出てくるようなのでGoogle検索には工夫が必要だと思います。"Random Oracle","oraclize" などを除外してGoogle検索してみました。結果、WIREDでも取り上げられているエストニア政府でのOracleデータベースの事例が見つかりました。Guardtime Announces KSI Blockchain Integration for Oracle 11g and 12c | GuardtimeKSI blockchain add-on for Oracle database - as implemented with eHealth foundation of Estonia for a national database of health records"oracle database","Blockchain" で検索する方が手っ取り早そうですね。

"Block", "Chain" と聞くと私などは行連鎖のことかと勘違いしていたものです。 最近は仕事でもそれ以外でもよくBlockchainという単語を見るようになってきていてWIREDという雑誌の最新号で特集されていたのでGoogleってみました。 『WIRED』VOL.25(10/11発売) The Power of...

Perl,Python,scripting

Python のデータ・サイエンスでの人気度

2ヶ月前発売の以下の雑誌の表紙がPythonとマイク・タイソンをかけたおやじギャグになっていたのに気付いた方どれぐらいいたのでしょうか。Interface(インターフェース) 2016年10月号 | 本 | Amazon.co.jp第1章 IoT時代にPythonをオススメする理由今Googleってみたらブログでは1人、Twitterでも2,3人ぐらいのみが反応しているようでした。私はこういう非常にターゲットを絞った洒落は大好きです。ところで弊社内のDB関係者の間でもOracle DBユーザーさんが使っている言語は良く話題になります。そしてPython, node.js , R などいくつかの言語用にOracle DB アクセスドライバーを自社開発していてバージョン 12.2 のDBへの接続にも対応しています。DBと少し離れますがデータ・サイエンスでの言語も話題になります。以下の社外サイトの人気投票など参考になるかと思います。R, Python Duel As Top Analytics, Data Science software – KDnuggets 2016 Software Poll ResultsPython grows faster and almost catches up to R. 

2ヶ月前発売の以下の雑誌の表紙がPythonとマイク・タイソンをかけたおやじギャグになっていたのに気付いた方どれぐらいいたのでしょうか。 Interface(インターフェース) 2016年10月号 | 本 | Amazon.co.jp 第1章 IoT時代にPythonをオススメする理由 今Googleってみたらブログでは1人、Twitterでも2,3人ぐらいのみが反応しているようでした。私はこういう非...

DB

DB 12.2 Exadata Express(クラウド)のオプティマイザー動作

先週とあるセミナーで私含め数名の社員で Oracle データベースの次のリリースの紹介をさせていただきました。その日にオプティマイザーの質問をいただいたので担当Product Managerにメールで聞いたところ 回答が返ってきて、かつ、以下のブログに(英語ですが)その回答を含むいくつかの動作詳細を書いてくれました。回答に関する一部分だけ訳してみます。全部を翻訳できず申し訳ないです。Optimizer Adaptive Features in the Exadata Express Cloud Service (Oracle Optimizer)Setting optimizer_adaptive_statistics to FALSE does NOT disable the creation of SQL plan directives.先週のセッション中ではやや曖昧でしたがSQLプランディレクティブは完全にオフられるわけではなく、作成だけはされるそうです。また、この担当者が3週間前にOOW San Francisco で使った資料もアップロードされています。Oracle Optimizer: Upgrading Without Pain [CON6450]Oracle Optimizer has evolved significantly over the years 

先週とあるセミナーで私含め数名の社員で Oracle データベースの次のリリースの紹介をさせていただきました。 その日にオプティマイザーの質問をいただいたので担当Product Managerにメールで聞いたところ 回答が返ってきて、かつ、以下のブログに(英語ですが)その回答を含むいくつかの動作詳細を書いてくれました。 回答に関する一部分だけ訳してみます。全部を翻訳できず申し訳ないです。 Optimize...

Windows

CygwinでOracle Cloud用rpmパッケージの中のWindows関連ファイルを見てみる

前回のVirtualBoxの話の続きです。opc-init というユーティリティーは以下でダウンロード可能です。ちなみにopc="Oracle Public Cloud"です。Compute Cloud Serviceutility that enables initialization of cloud instanceszipファイルの中に rpm パッケージがあります。$ unzip -l opc-init-1.3.0.zip Archive: opc-init-1.3.0.zip Length Date Time Name--------- ---------- ----- ---- 1449 07-20-2016 03:59 README 51420 05-24-2016 23:56 opc-init-py2.6-1.3.0.noarch.rpm 51260 05-24-2016 23:56 opc-init-py2.7-1.3.0.noarch.rpmrpmの中身を展開する標準ツールはrpm2cpioだと思います。Oracle LinuxやRedHat Linuxにはインストールされます。 ですが今回はWindows関連のファイルを見るということなのでCygwinでやってみた記録です。Cygwinもパッケージ管理らしきものはあります。これはrpmを使わないのでrpm系コマンドはインストールしない方が多いと思います。 以前このブログでも書きましたが setup.exe で追加インストールしました。コマンドラインだけでできます。 cpio も後から使うので同じように追加しました。$ ./setup-x86_64 -qP rpm$ ./setup-x86_64 -qP cpio途中省略しますが最終的にrpmの中のWindows関連のpythonスクリプトの中身を見たコマンドは以下です。全てパイプでデータを渡しているのでディスクには何も書いてません。2行目の行頭の'>'はbashでデフォルトのコマンドライン継続記号なのでこれをコピペしないようにご注意ください。$ unzip -p opc-init-1.3.0.zip opc-init-py2.7-1.3.0.noarch.rpm |> rpm2cpio | cpio -i --to-stdout -E <(echo '*windows*.py') | head"""This module provides functionality for provisioning Windows instances. For example,a Windows instance needs to be provisioned with an Administrator password and whetherRDP is enabled or disabled."""

前回のVirtualBoxの話の続きです。opc-init というユーティリティーは以下でダウンロード可能です。ちなみにopc="Oracle Public Cloud"です。 Compute Cloud Service utility that enables initialization of cloud instances zipファイルの中に rpm パッケージがあります。 $ unzip -l...

http

Oracle DBから外部ネットワークへのアクセスを制御する方法

Oracle Open World 2016 も終わり資料も社内ではいくつか見れるようになったので面白いタイトルのセッションを手当たり次第クリックしているところです。ヨーロッパのコンサル会社の方の以下のセッションでこのブログで以前書いたネットワークアクセス制御について説明があったようです。Google Maps APIがサンプルで使われていてなかなか楽しそうです。XMLとJSON機能を対照して理解するのにも良さそうです。Session Catalog | Oracle OpenWorld 2016Oracle now supports JavaScript Object Notation (JSON) in the database, in a way similar to how XML has been supported since version 9例年と同じだとすると社外向けにも後日上記リンクからPDFがダウンロード可能になります。最後にDB12cのマニュアルへのリンクです。DBMS_NETWORK_ACL_ADMINPL/SQLネットワーク・ユーティリティ・パッケージを使用した、データベースから外部ネットワークのサービスおよびリソースへのユーザーのアクセスが制御されます  

Oracle Open World 2016 も終わり資料も社内ではいくつか見れるようになったので面白いタイトルのセッションを手当たり次第クリックしているところです。 ヨーロッパのコンサル会社の方の以下のセッションでこのブログで以前書いたネットワークアクセス制御について説明があったようです。 Google...

Cloud

Oracle Cloud と Active Directory

ADを使ったOracle CloudのSSOの詳細な検証レポートがあがっています。ぜひご参考にどうぞ。IdM実験室: [SAML]Oracle CloudとのSSOを構成する~AD FS編今日はAD FSを使ってOracle CloudへのSSOできるように構成してみたいと思います。(別途Azure AD編も公開予定です)CloudにSSOできればCloudで動く Weblogic の設定はどうなのと思う方がいらっしゃるかと思います。私は不勉強で分からないのですがとりあえずオンプレミスの場合の設定について参考になると思われるリンクをのせます。Steps to configure SAML SSO with ADFS (as IDP) and Weblogic Server (as SP) (Oracle Fusion Middleware )ADFS as Identity Provider and WLS as Service Provider.話が飛躍しますがOracle DBでもActive DirectoryでのSSOがWindows 2000の頃から可能でした。DBが稼働するOSはLinux,UN*X系もサポートされます。The long long route to Kerberos – Laurent Schneidersingle-sign-on to your database with your Windows credentialsマニュアルにも上記に近いことは書いてありますがこの方はかなり詳しい方のようで生々しく書いてあるのでリンクを載せてみました。

ADを使ったOracle CloudのSSOの詳細な検証レポートがあがっています。ぜひご参考にどうぞ。 IdM実験室: [SAML]Oracle CloudとのSSOを構成する~AD FS編 今日はAD FSを使ってOracle CloudへのSSOできるように構成してみたいと思います。(別途Azure AD編も公開予定です) CloudにSSOできればCloudで動く Weblogic...

Data Types

JavaScript & Oracle エバンジェリストのホームページ

2年前にOracle DB 12.1.0.2 のJSON機能を担当した身としてはもっと早く紹介すべきでした。 以下に英語ですが JavaScript evangelist のホームページがありますのでぜひご訪問ください。JavaScript and OracleOracle Database Evangelist who focuses on JavaScript and HTML5タイトルだけの一覧が無さそうなのでRSSをXMLからJSONに変換してさらに Oracle DB 12.1.0.2 の中でJSON関数を使うという非常に回りくどい方法で 出してみました。:)  RSS なので直近10個しかとってきません。SQL> select t.* from2 json_table(3 httpuritype('http://rss2json.com/api.json?rss_url=https%3A%2F%2Fjsao.io%2Ffeed%2F').getCLOB(),4 '$.items[*]' columns (title_c varchar2(64) path '$.title')5 ) t6 /TITLE_C----------------------------------------------------------------Working with Dates Using the Node.js DriverWorking with Dates in JavaScript, JSON, and Oracle DatabaseExtending the JavaScript Layer ? Feedback Wanted!An Update on JavaScript and OracleCreating a Local Sandbox for Node.js and Oracle DatabaseConnection Request Queuing with the Node.js DriverAn Overview of Result Sets in the Node.js DriverRelational to JSON with Node.jsRelational to JSON with ORDSRelational to JSON with APEX_JSON10 rows selected.JSON_QUERY()でもう少し簡単に書く方法など近日中に書きたいと思います。

2年前にOracle DB 12.1.0.2 のJSON機能を担当した身としてはもっと早く紹介すべきでした。 以下に英語ですが JavaScript evangelist のホームページがありますのでぜひご訪問ください。 JavaScript and Oracle Oracle Database Evangelist who focuses on JavaScript and HTML5 タイトルだけの...

Mobile,モバイル

JET CordovaアプリのAndroid端末でのLiveReloadによる迅速開発

先週の続きです。前回は6秒と書きましたが再ビルドの時間を含めるのを忘れていました。Oracle JETでAndroidでもデスクトップブラウザーでも動くハイブリッドアプリを作ってみる10MBの*.apkファイルを転送からインストール実行まで含め6秒ぐらいライブリロードを使えば多くの場合Full buildと転送が不要になると思います。ライブリロードはターゲットがブラウザーやAndroidエミュレーターではサポートされます。実deviceだけ動かないのは悔しいのでいろいろ試していたところ ライブリロード も実Android端末で使えそうなことがわかりました。端末をdebuggableにする必要はありませんが、開発PCとAndroid端末がTCP/IP通信できる必要があります。パケットではなく Wi-Fi を使えば家庭内ルーターや使用や会社環境で可能ではないかと思います。実デバイスでのLiveReloadの正式な(かつ、より良い?)方法はおそらく弊社のホームページでいずれ書かれると思いますのでお待ちください。単純な例ですが動作的には以下のようになると思います。実デバイス画面をSideSyncで表示しています。

先週の続きです。前回は6秒と書きましたが再ビルドの時間を含めるのを忘れていました。 Oracle JETでAndroidでもデスクトップブラウザーでも動くハイブリッドアプリを作ってみる 10MBの*.apkファイルを転送からインストール実行まで含め6秒ぐらい ライブリロードを使えば多くの場合Full buildと転送が不要になると思います。ライブリロードはターゲットがブラウザーやAndroidエミュレー...

In-Memory

SAP CRMのお客様での12c Database In-Memory 導入事例

英語ですがドイツのSAP CRMユーザーBOSCH様が Oracle DB 12c 12.1.0.2.0 In-Memory オプションを導入された 経緯と結果をSAPユーザーカンファレンスSAPPHIREで説明された動画があります。Database In-Memory Learn MoreBosch explains the performance benefits they got from Oracle Database In-Memory with SAP CRM at SAP Sapphire 2016わりと具体的に説明されていると思いますので面白いと思います。僭越ながら以下何点か内容についてのメモです。1. 圧縮率低めに出ているのは基の表が圧縮されているからと説明されています。おそらくAdvanced Row圧縮、旧称OLTP圧縮です。2. インデックスCRMD_ORDER_INDEX表に21個の索引が張られているようです。このうち大部分がBOSCHの方が"Secondary Index"と 説明されているものだと思います。Oracle社員やユーザーさんで"セカンダリーindex"と呼んでいるのを聞いたことがありません。 SAPとOracleで以下のような用語の違いがあるようです。SAPOracleSecondary Index分析用インデックスSAP indexOLTP用index3. 処理速度比較SAPトランザクションの処理時間を比較されたようです。ですのでDB以外の時間も含まれているかもしれません。もう一つは使用プラットフォームが AIX on Power8 であることです。 Power8がIntel,SPARCに比して速い処理もあるとは思いますがこと DB12c In-Memory に関しては 残念ながらAIXではSIMDインストラクションを使用する実装が(まだ)されていないので不利です。IntelかSPARCでは高速度化度合がより高くなったかもしれません。4. ストレージ使用量ディスク使用量が減ったことの説明は省略されたようです。インデックス DROPにより相当使用量が減ったのではと 推測します。またインデックス更新時にはREDO、UNDOも書かれますのでこれも無くなることによりさらに減っていると 思います。 以上参考になればさいわいです。

英語ですがドイツのSAP CRMユーザーBOSCH様が Oracle DB 12c 12.1.0.2.0 In-Memory オプションを導入された 経緯と結果をSAPユーザーカンファレンスSAPPHIREで説明された動画があります。 Database In-Memory Learn More Bosch explains the performance benefits they got from...

Cloud

Oracle JETでAndroidでもデスクトップブラウザーでも動くハイブリッドアプリを作ってみる

月曜にGalaxy Note手書き文字認識サンプルアプリをビルドした件を書きました。SAMSUNGサイトでも書かれていますが Cordova をインストールしコマンドラインで操作しました。Oracle製Javascriptキットの Oracle JET でも Cordova によりハイブリッドアプリが作成可能です。Plugging into Devices with Oracle JET on Cordova (Part 1) (Geertjan's Blog)create AngularJS applications that access the native resources on devices, such as the camera on Android, via Cordova. Let's now do the same thing with an Oracle JET application.Cordovaが動く環境であればそこから先 Oracle JET ハイブリッドアプリを作成できるようになるまでは大して時間はかからないだろうと思い以下のページの手順を試してみました。Hybrid Mobile Apps: Using the Mobile Cloud Service JavaScript SDK with Oracle JETuse the handy Oracle JET generator to stamp out a mobile app template.40分ぐらいでスケルトンアプリをWindows Firefoxで動かし、かつ、Androidエミュレーターに自動デプロイ、かつ、自分のGalaxy実機に手動でデプロイするところまでは行けました。以下の2分10秒のアニメーションGIFで雰囲気をつかんでいただけるでしょうか?向かって右がemulatorで左がGalaxy実機に SideSync というアプリでつないでいるところです。emulator は実行がエラーになりました。emulatorの問題かと思います。あまり使われてないようなので今後は使わない予定です。GalaxyはUSBでつながっています。10MBの*.apkファイルを転送からインストール実行まで含め6秒ぐらいでできるので繰り返し実行もあまり苦にならないかと思います。デバッグ情報は不要なので配布用ビルドではより速くサイクルを回せると思います。ここまでできれば上記ページの残り8割は1時間ぐらいで終わると思います。お前は全部コマンドラインでやるのかと突っ込まれそうですが。実機へダイレクトにデバッグ情報つきアプリをインストールし起動しデバッグする方法もあるようですが恐くて設定していません。その設定をすると LiveReload が動かないようにするという回避策も使えるようです。

月曜にGalaxy Note手書き文字認識サンプルアプリをビルドした件を書きました。 SAMSUNGサイトでも書かれていますが Cordova をインストールしコマンドラインで操作しました。 Oracle製Javascriptキットの Oracle JET でも Cordova によりハイブリッドアプリが作成可能です。 Plugging into Devices with Oracle JET on...

Mobile,モバイル

Galaxy端末固有機能を使うAndroidサンプルアプリをちょっと日本語化

Galaxy Note 7が日本でも発売されそうということでGoogleっていたところ遅ればせながら2月にサムスン社との協業がニュースになっていたことを知りました。Samsung, Oracle to provide updated Apache tools for enterprise developers | ZDNetApache Cordova plug-in tool and sample codes上記のサンプルコードではなくもっと以前からSAMSUNGサイトにあったと思われるサンプルを自分で変更しビルド、実行できるか週末に試してみました。Cordova Plugins for Samsung Demo App | SEAPCordova Plugins for these Samsung Android SDKs: Pen (v4.0.0), MultiWindowちょっとだけUser Interfaceのラベルを日本語にしてみました。変更かけたのはindex.htmlファイルのみです。手書き文字認識(OCR)が英語モードなので”井上”の井は '#' と認識されますね。このデモアプリでは文字認識の言語設定APIを使っていないからだと思います。ビルドする環境を作るのにけっこう時間がかかったのでそこの調査までいたりませんでした。ビルド環境や日本語手書き文字についてはコメントなどいただければまた書こうと思います。

Galaxy Note 7が日本でも発売されそうということでGoogleっていたところ遅ればせながら2月にサムスン社との協業がニュースになっていたことを知りました。 Samsung, Oracle to provide updated Apache tools for enterprise developers | ZDNet Apache Cordova plug-in tool and...

SQL & Tools

タイタニックCSVからのDDL生成。細野晴臣

昨日のエントリーの続きです。おとといはタイタニック乗客者CSVファイルをデータとして使いました。'R'とは関連薄くなってきますがCSVファイルをOracleの表に格納するための表定義を生成する方法を3つご紹介します。まず一つ目はMeetup繋がりということで別の方のMeetup で題材にした"APEX" を使う方法です。APEXがフィールドの長さなどを検出し以下のDDLを生成します。2つ目は SQL Developer です。こちらはWizardでファイル名の指定からカラム型の調整など可能です。SQL Developerのコマンドライン、または、SQLcl でも可能かもしれません。最後に3つ目はGitHubで公開されているツールです。ddl-generator: Guesses table DDL based on dataInfers SQL DDL (Data Definition Language) from table data.Windows7 Cygwin python 環境でもpipですんなりインストールできました。DDLだけ生成させてみると....$ ddlgenerator oracle ../R/train.csv CREATE TABLE train ( passengerid INTEGER NOT NULL, survived SMALLINT NOT NULL, pclass INTEGER NOT NULL, name NVARCHAR2(82) NOT NULL, sex NVARCHAR2(6) NOT NULL, age DECIMAL(4, 2), sibsp INTEGER NOT NULL, parch INTEGER NOT NULL, ticket NVARCHAR2(18) NOT NULL, fare DECIMAL(7, 4) NOT NULL, cabin NVARCHAR2(15), embarked NVARCHAR2(1), CHECK (survived IN (0, 1)));CHECK制約まで頑張ってつけてくれていますね。なかなか賢いです。INSERT文だけの生成も可能です。日本人っぽい名字でgrepかけると....$ ddlgenerator -i oracle --no-creates ../R/train.csv |> grep HosonoINSERT INTO train (passengerid, survived, pclass, name, sex, age, sibsp, parch, ticket, fare, cabin, embarked) VALUES (289, True, 2, 'Hosono, Mr. Masabumi', 'male', 42, 0, 0, '237798', 13, NULL, 'S');ご存じの方も多いと思いますがこの'Hosono'さんは細野晴臣の祖父です。以下の番組は私も見ましたが助かった経緯はかすかに説明されていたような。。。その助かった理由を加味すれば予測精度も上がるかもしれませんね。。。NHKネットクラブ 番組詳細(ファミリーヒストリー「細野晴臣~タイタニックの宿命 音楽家の原点~」)父方の祖父は、日本人唯一のタイタニックの乗客

昨日のエントリーの続きです。おとといはタイタニック乗客者CSVファイルをデータとして使いました。 'R'とは関連薄くなってきますがCSVファイルをOracleの表に格納するための表定義を生成する方法を3つご紹介します。 まず一つ目はMeetup繋がりということで別の方のMeetup で題材にした"APEX" を使う方法です。 APEXがフィールドの長さなどを検出し以下のDDLを生成します。 2つ目は...

Perl,Python,scripting

'R' のOracle DBアクセスドライバー ROracle をWindows7にインストール

昨日夜弊社でのイベントにお越しいただいた皆様ありがとうございました。私も社員ながら後ろの席で参加していました。Oracle Cloud Developers Meetup@東京 - R 中級編 - Oracle Cloud Developers 東京 | Doorkeeper今回はKaggleというデータサイエンティストの為のコンペティションサイトに登録いただき、登竜門である「Titanic: Machine Learning from Disaster」に挑戦していただきます私は2年ぶりぐらいにRを使ったのですがこれを機会にWindows7に 'R' からOracle DBにアクセスしデータを取り込むためのROracleをインストールしてみました。先に補足しますがROracleは Oracle R Enterprise とは別物です。後者の方がデータを移動させることなく、かつ、サーバーのリソースを利用して 計算できるので高速です。まずはOREを検討することになると思います。さてROracleのWindowsへのインストールですがなんとバイナリーがありますね。さっきまで知りませんでした。ROracle 1.2-1 released (Oracle R Technologies)In addition to availability on CRAN, ROracle binaries specific to Windows and other platforms can be downloaded from the Oracle Technology Networkバージョンは一つ古いですが最新バージョンとの差分は少ないようです。 私は半年前にCRANで公開された最新バージョンをインストールしました。以下Cygwin bash中での実行手順です。 以下が終わるとRgui.exeの再起動なしに使えました。実際の使用についてはまたこのブログで書きたいと思います。$ export OCI_LIB64=$(cygpath -m "C:\OracleATS\oxe\app\oracle\product\11.2.0\server\bin")$ export OCI_INC=$(cygpath -m /c/c/OracleATS/oxe/app/oracle/product/11.2.0/server/oci/include/)$ /c/c/ProgramFiles/R/R-3.3.1/bin/R CMD INSTALL ROracle_1.2-2.tar.gz 起動準備中です - 警告メッセージ:Setting LC_CTYPE=ja_JP.UTF-8 failed* installing to library 'C:/ProgramFiles/R/R-3.3.1/library'* installing *source* package 'ROracle' ...** パッケージ 'ROracle' の解凍および MD5 サムの検証に成功しましたfound Oracle Client C:/OracleATS/oxe/app/oracle/product/11.2.0/server/binfound Oracle Client include C:/OracleATS/oxe/app/oracle/product/11.2.0/server/oci/include/copying from C:/OracleATS/oxe/app/oracle/product/11.2.0/server/oci/include/ 警告: this package has a non-empty 'configure.win' file,so building only the main architecturec:/Rtools/mingw_64/bin/gcc -I"C:/ProgramFiles/R/R-3.3.1/include" -DNDEBUG -I./oci -I"d:/Compiler/gcc-4.9.3/local330/include" -O2 -Wall -std=gnu99 -mtune=core2 -c rodbi.c -o rodbi.orodbi.c: In function 'rodbiResBind':rodbi.c:2285:12: warning: unused variable 'class' [-Wunused-variable]警告はこの後にもたくさん出ます。Rtools は別途CRANからダウンロードしてあります。Oracle XE 11.2.0.2 がWindowsに事前インストールされています。接続先は DB12c でも問題なさそうです。PATHにも%ORACLE_HOME%\bin は入っています。これさえあればOCI_LIB64,OCI_INCの2個の環境変数設定は不要かもしれません。64ビット版のみビルドされます。

昨日夜弊社でのイベントにお越しいただいた皆様ありがとうございました。私も社員ながら後ろの席で参加していました。 Oracle Cloud Developers Meetup@東京 - R 中級編 - Oracle Cloud Developers 東京 | Doorkeeper 今回はKaggleというデータサイエンティストの為のコンペティションサイトに登録いただき、登竜門である「Titanic: Ma...

Data Types

地図アプリ作成部品: MapViewer と JET

以前このブログで SQL Developer で東京都品川区などの境界線を表示させた画面ショットを貼り付けました。見れば推測できると思いますがこれは実用的なアプリを作れるものではなく、開発者やDBAの方が個人的に手軽に地理空間データを確認するための機能です。矩形と矩形の重なりが無いかとか。弊社製部品を組み合わせて実用的な地図アプリを作る新しい方法がつい5日前にブログに書かれました。Integrating Oracle Fusion Middleware MapViewer with Oracle JET (Geertjan's Blog)MapViewer is a development toolkit for incorporating interactive maps and spatial analyses. It is optimized for use with Oracle Spatial and Graphこのブログを書いた Geertjan は5月のJava Dayイベントでもいくつかのセッションでプレゼンしています。Java Day Tokyo 2016クラウド・アプリケーションをJavaScriptで開発できるツールキットをオープンソースとして利用可能な「Oracle JET」MapViewer の方は来月Oracle Open Worldで以下の関連セッションがあります。Session Catalog | Oracle OpenWorld 2016map visualization components in Oracle Java Cloud Services, and use Oracle Database Cloud services to run spatial applications and deploy location-based services  

以前このブログで SQL Developer で東京都品川区などの境界線を表示させた画面ショットを貼り付けました。 見れば推測できると思いますがこれは実用的なアプリを作れるものではなく、開発者やDBAの方が個人的に手軽に地理空間データを 確認するための機能です。矩形と矩形の重なりが無いかとか。 弊社製部品を組み合わせて実用的な地図アプリを作る新しい方法がつい5日前にブログに書かれました。 Integr...

Cloud

ネスト仮想化 SaaS Ravello の日本語ブログとKVM

半年前に買収しこのブログでも以前書いた Ravello の社内セミナーも複数回開催され 多くの社員がわくわくしているところです。個人的にKVM(Kernel-based Virtual Machine)を少し使っているのでGoogleって見たところ 日本語でブログを書いている方がいらっしゃいました。Nutanix CE で OpenStack。Part1: Ravello で環境構築 - NTNX>日記Ravello Smart Labs で動作します拡張子が qcow2 というファイル名のディスクイメージということなのでおそらくKVM系のVMだと思います。上の例のような出来合いのKVMでなくて自前でオンプレで先にKVMを作ってクラウドに展開する手順は以下 Ravello のブログなどに 書かれています。Building a cloud ready linux image locally using KVMI’ve created an image from scratch, uploaded it to Ravello, and from that image created a template virtual machineなお、KVM以外にVMwareもサポートしていてそちらの方が実績が多いのではないかと思います。

半年前に買収しこのブログでも以前書いた Ravello の社内セミナーも複数回開催され 多くの社員がわくわくしているところです。 個人的にKVM(Kernel-based Virtual Machine)を少し使っているのでGoogleって見たところ 日本語でブログを書いている方がいらっしゃいました。 Nutanix CE で OpenStack。Part1: Ravello で環境構築 -...

Data Types

マクラーレン・ホンダの66年分のJSONデータの検索

以前2015年の最終順位だけ見ましたが先週66年分のデータをロードしたのでまとめて見てみます。Oracle 12c JSON機能でマクラーレン・ホンダの順位を見てみるOracle DB 12.1.0.2 の新機能であるJSON_VALUE()関数で年間順位を取り出した結果JSON_VALUE()関数の2番目の引数のJSON pathは同じのを使えます。SQL> select count(*) from api_responses2 where3 JSON_VALUE(RESPONSE,'$.MRData.StandingsTable.StandingsLists[0].ConstructorStandings[0].position')=14 / COUNT(*)---------- 8以下の結果と合ってますね。マクラーレン - Wikipediaコンストラクターズタイトル  8なお、McLARENのF1初参戦は1966年らしいので1965年のデータは以下のように空っぽです。 API自体は整形式のJSONを返してきたのでDBに格納する際にはエラーになりませんでした。SQL> select RESPONSE from API_RESPONSES2 where URL like '%/1965/%'3 /--------------------------------------------------------------------------------{"MRData":{"xmlns":"http:\/\/ergast.com\/mrd\/1.4","series":"f1","url":"http://ergast.com/api/f1/1965/constructors/mclaren/constructorstandings.json","limit":"30","offset":"0","total":"0","StandingsTable":{"season":"1965","constructorId":"mclaren","StandingsLists":[]}}}

以前2015年の最終順位だけ見ましたが先週66年分のデータをロードしたのでまとめて見てみます。 Oracle 12c JSON機能でマクラーレン・ホンダの順位を見てみる Oracle DB 12.1.0.2 の新機能であるJSON_VALUE()関数で年間順位を取り出した結果 JSON_VALUE()関数の2番目の引数のJSON pathは同じのを使えます。 SQL> select count(*)...

SQL & Tools

sqlplus でのプロキシー設定注意点

あまり使われていないかもしれませんが sqlplus 自体にHTTP経由でSQLファイルを読み込む機能がありそのため http_proxy 環境変数を参照します。それだけなら良いのですがなんと起動時にhttp_proxy変数が正しそうかどうかチェックするというお節介をします。Google するとわかりますが結構これで引っかかる方がいらっしゃりインストール中にエラーが出るようです。Stupid "root.sh" Crash when Installing GI 12.1.0.2 · Alec's BlogOur sysadmin set a global http_proxy variable which confused sqlplusチェックとは具体的にいうとこのブログで2回前に書いたように "http://" で始まっているかどうかを見ます。curl など多くのコマンドラインツールは前回書いたように "http://" を必要とせず "servername:port" だけでいいのでこれでグローバルに設定されているとOracleインストールに多くの場合エラーが出ると思います。お気をつけください。

あまり使われていないかもしれませんが sqlplus 自体にHTTP経由でSQLファイルを読み込む機能があり そのため http_proxy 環境変数を参照します。 それだけなら良いのですがなんと起動時にhttp_proxy変数が正しそうかどうかチェックするという お節介をします。Google するとわかりますが結構これで引っかかる方がいらっしゃりインストール中にエラーが出るようです。 Stupid "...

Mobile,モバイル

オーストラリアのハッカソンでのアプリ on Oracle Cloud

オーストラリア&ニュージーランドのオープンデータを利用する方法を競い合う政府系主催のHackathonにOracle社員が参加しソースコードを GitHub にアップロードしています。Oracle Public Cloudをいくつか使っています。Ausemon by Joelithmiddle-tier consists of the Oracle Mobile Cloud Service (MCS) to talk to the database (through Oracle Application Container Cloud Service for simplicity)"Pokemon Go" にちなんでネーミングされてますね。Oracle Databaseに関連する部分では Node.js 用ドライバーやSpatialオプションがあります。Database Cloud Service(DBCS) へアクセスするコードはこの Node.js が起動時に読むファイルにあるようです。このイベントは日本だと以下のイベントが近いのではと思いますがどうでしょう。。LODチャレンジ - Wikipediaオープンデータに関する新たなデータづくりやアプリケーションに関する作品を募集し、コンテスト形式で評価しあうイベント  

オーストラリア&ニュージーランドのオープンデータを利用する方法を競い合う政府系主催のHackathonにOracle社員が参加しソースコードを GitHub にアップロードしています。Oracle Public Cloudをいくつか使っています。 Ausemon by Joelith middle-tier consists of the Oracle Mobile Cloud Service...

Discussion & Media

F1データAPIの複数URLのcurlレスポンスをsqlldrでロードしてみる

HTTPレスポンスをSQL*Loaderでそのままロードする方法については以前も書きました。GitHub からOracleへ直接データロード.SQL Loader Express Modecurlに3個引数を与えたことになり3区分のGeoJSONデータを1回でロードできました今回は少し拡張した例です。題材は先週書いたF1オープンデータAPIです。Oracle 12c JSON機能でマクラーレン・ホンダの順位を見てみるOracle DB 12.1.0.2 の新機能であるJSON_VALUE()関数で年間順位を取り出した結果前回は2015年データだけをsqlplusセッションの中でHTTPで読みだす例でした。今回は1950年からの 66年分のデータをsqllderを使ってOracleデータベースにロードしてみます。まず表作成create table API_RESPONSES (RESPONSE varchar2(4000), URL varchar2(4000))JSON制約もつけてみます。alter table API_RESPONSES add constraint api_resp_json check (RESPONSE is JSON)そしてcurlで読み出しパイプでsqlldrへ出力を渡し、DBへロードします。$ http_proxy=corp-proxy:80 curl --silent -w "\t%{url_effective}\n" \http://ergast.com/api/f1/[1950-2015]/constructors/mclaren/constructorStandings.json |sqlldr scott/tiger table=API_RESPONSES data=\'-\' terminated_by=X\'9\' direct=trueSQL*Loader: Release 12.1.0.2.0 - Production on Tue Aug 2 12:50:21 2016Express Mode Load, Table: API_RESPONSESPath used: DirectLoad completed - logical record count 66.Table API_RESPONSES: 66 Rows successfully loaded.Check the log file: API_RESPONSES.logfor more information about the load.以下ちょっとした解説です。http_proxy環境変数によりプロクシサーバーを設定しています。会社のサーバーでテストする場合これが必要な場合が多いと思います。[1950-2015]で66年分を指定しています。これはcurlが66個のURLに展開(expand)します。レスポンスも66個返ってきます。"-w" オプションでレスポンス毎のデリミターに改行コードを埋め込んでいます。JSONデータに改行が入っている場合もっと工夫する必要ありフィールドdelimeterにはタブコードを埋め込んでいます。JSONデータにタブが入っている場合、使えませんが。。。。ロードしたデータの確認、および、データがバイナリーの場合のcurl&sqlldrの使用法については別途書く予定です。

HTTPレスポンスをSQL*Loaderでそのままロードする方法については以前も書きました。 GitHub からOracleへ直接データロード.SQL Loader Express Mode curlに3個引数を与えたことになり3区分のGeoJSONデータを1回でロードできました 今回は少し拡張した例です。題材は先週書いたF1オープンデータAPIです。 Oracle 12c...