Symfoware

Symfowareについての考察blog

Debian squeezeにOracle NoSQL Databaseをインストールする

Oracle NoSQL Databaseがダウンロードできるようになりました

ダウンロードして、Debianで動かして見ます。


Javaのインストール



Oracle NoSQL DatabaseはJavaで動作するので、事前にopenjdkをインストールしておきます。


# apt-get install openjdk-6-jdk



※今回は、jdkをインストールしましたが、jreでもOKのはず。


インストール後、「java -version」を実行して、以下のような内容が表示されれば
Javaのインストールは完了しています。


# java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.9) (6b18-1.8.9-0.1~squeeze1)
OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)









Oracle NoSQL Database, Enterprise Editionのダウンロード



以下のURLから、Oracle NoSQL Databaseをダウンロードできます。
http://www.oracle.com/technetwork/database/nosqldb/downloads/index.html

まだCommunity Editionは準備中のようですので、今回はEnterprise Editionを
ダウンロードしました。

「Accept License Agreement」をチェックして、kv-1.1.100.tar.gzをクリック。

05_001_20111029225901.png


オラクルのアカウント入力を求められます。
アカウントを持っていない場合は、「サインアップ」からアカウントを作成して入力。

05_002_20111029225900.png


ユーザー名、パスワードを入力して「サインイン」をクリックすると、ダウンロードが始まります。






インストールと起動



ダウンロードしたkv-1.1.100.tar.gzを/optに保存しました。
ファイルを解凍します。


# cd /opt/
# tar zxf kv-1.1.100.tar.gz




以下、解凍したフォルダのdocにあるAdminGuide/install.htmlを参考に、
動作を確認しました。

クライアントのバージョンを確認すると、「11gR2.1.1.100」でした。


# java -jar /opt/kv-1.1.100/lib/kvclient-1.1.100.jar
11gR2.1.1.100




データを格納するフォルダを作成します。
今回は、「/opt/kv-1.1.100/data」としました。


# mkdir /opt/kv-1.1.100/data





kvctlを使用して、初期化を行います。


# /opt/kv-1.1.100/bin/kvctl makebootconfig \
-root /opt/kv-1.1.100/data \
-port 5000 \
-admin 5001 \
-harange 5010,5020





データベースを起動。


# /opt/kv-1.1.100/bin/kvctl start -root /opt/kv-1.1.100/data




javaのjpsコマンドを使用して、起動を確認します。


# jps -m
6944 ManagedService -root /opt/kv-1.1.100/data -class Admin -service BootstrapAdmin.5000 -config config.xml
6980 Jps -m
6896 StorageNodeAgentImpl -root /opt/kv-1.1.100/data -config config.xml




※jspは実行しているJavaのプロセスを表示するコマンドです。
http://www.ne.jp/asahi/hishidama/home/tech/java/application.html#jps
知りませんでした。



通信できるか確認します。


# /opt/kv-1.1.100/bin/kvctl ping -port 5000
SNA at hostname: debian, registry port: 5000 is not registered.
    No further information is available




エラーっぽい内容ですが、これでOKだそうです。
起動できていないときは、こんな内容になるみたいです。


Could not connect to registry at localhost:5000
Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused







管理ツールによる設定



起動してすぐにデータベースが使用可能となるわけではありません。
データの配置場所や、レプリケーションメンバーの設定が必要なようです。

※今回は、一台の端末で起動確認を行ったので、レプリケーションメンバーの
指定は行っていません。


以下のコマンドで管理ツールを起動。


# /opt/kv-1.1.100/bin/kvctl runadmin -port 5000 -host localhost
kv->





「mystore」という名前で設定を開始します。


kv-> configure mystore




まず、「Boston」という名前のDatacenterを定義。
「Savvis」はコメントです。


kv-> plan -execute -name "Deploy DC" deploy-datacenter "Boston" "Savvis"
1




定義した内容を表示して見ます。


kv-> show plans
   1 Deploy DC                SUCCEEDED
kv-> show topology
dc=[dc1] name=Boston





自分自身を、Boston Datacenterのノードとして追加。

kv-> plan -execute -name "Deploy n01" deploy-sn 1 localhost 5000 "comment"
2





管理用ポートの追加。

kv-> plan -execute -name "Deploy admin" deploy-admin 1 5001
3




「BostonPool」という名前のStorage Node Poolを追加します。

kv-> addpool BostonPool
kv-> show topology
dc=[dc1] name=Boston
 sn=[sn1] dc=dc1 localhost:5000 status=RUNNING

kv-> joinpool BostonPool 1
AllStorageNodes: sn1
BostonPool: sn1






Replication Nodesを定義。

kv-> plan -execute -name "Deploy the store" deploy-store BostonPool 1 300






状態を確認すると、以下のような表示になっていると思います。


kv-> show plans
   1 Deploy DC                SUCCEEDED
   2 Deploy n01             SUCCEEDED
   3 Deploy admin             SUCCEEDED
   4 Deploy the store         SUCCEEDED





これで設定は完了です。
「quit」で管理ツールを終了します。

kv-> quit








付属のサンプルプログラム



付属のサンプルプログラムをコンパイルして、実行して見ます。


「/opt/kv-1.1.100」に移動してコンパイル。

# cd /opt/kv-1.1.100
# javac -g -cp lib/kvclient-1.1.100.jar examples/hello/*.java




実行。

# java -cp /opt/kv-1.1.100/lib/kvclient-1.1.100.jar:/opt/kv-1.1.100/examples \
hello.HelloBigDataWorld \
-host localhost -port 5000 -store mystore

Hello Big Data World!




とりあえず、動いているようです。





管理画面



http://localhost:5001/で管理画面にアクセスできます。

05_003_20111029225900.png





停止



以下のコマンドで、停止します。


# /opt/kv-1.1.100/bin/kvctl stop -root /opt/kv-1.1.100/data








全然理解出来ていませんが・・・今度、データを登録するサンプルを書いてみます。




テーマ:データベース - ジャンル:コンピュータ

  1. 2011/10/29(土) 23:00:36|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Oracle テーブル単位でのバックアップ、リストア(exp,imp)

Oracleでテーブル単位にバックアップを取得(exp)したり、
バックアップからリストア(imp)するときのコマンドメモ書き


テーブル単位のバックアップ

exp system/[password]@[DB名] file=[出力するファイルのフルパス] rows=y tables=([スキーマ名].[テーブル名])



テーブル単位のリストア

imp system/[password]@[DB名] file=[リストアに使用するファイルのフルパス] fromuser=[出力したときのスキーマ] touser=[リストアするときのスキーマ] tables=([テーブル名]) ignore=y



ignore=yをつけておかないと、create tableを実行したときのエラーで
止まってしまいます。
※テーブルごと削除して、インポートするのが作法なのかも。


コマンドの例

exp system/password@SAMPLEDB file=C:\backup\tbl1.dmp rows=y tables=(SC_SAMPLE.TBL1)

imp system/password@SAMPLEDB file=C:\backup\tbl1.dmp fromuser=SC_SAMPLE touser=SC_SAMPLE tables=(TBL1) ignore=y






テーマ:データベース - ジャンル:コンピュータ

  1. 2010/02/04(木) 12:15:02|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:1
  5. | 編集

sqlplusを使用してテキストファイルに記載されたSQLを実行する

テキストファイルに記載したINSERT等のSQL文を一括で実行したいときがあります。
sqlplusを使用すれば、テキストファイルに記載したSQLを一括で実行することが可能です。


sqlplusを起動して、
@[SQL文を記載したファイルのフルパス]
としてやればOK

イメージはこんな感じ。


Oracle Database 10g Release 10.2.0.2.0 - Production
に接続されました。
SQL>@c:\sql\all_inst.txt



注意点として、sqlplusは自動的にトランザクションを開始するようで、
明示的にcommit;を実行してやらないとデータを確定してくれません。


もう一つの方法としてコマンドプロンプトを起動して
cd c:\sql
と、カレントディレクトリをSQL文を記載したテキストファイルが置いてある
ディレクトリに移動してから、sqlplusを起動。

start [SQL文を記載したファイル名]
としてやることでも実行できました。


Oracle Database 10g Release 10.2.0.2.0 - Production
に接続されました。
SQL>start all_inst.txt




ちょっとはまったのは、列数が多いテーブルのinsert文を一行で書いている
テキストを実行しようとするとエラーになってしまいました。

sqlplusから実行するときは、一行の文字数が2500以下である必要があります。
改行して、一行を2500文字以下にしてやれば、無事実行することができました。




テーマ:データベース - ジャンル:コンピュータ

  1. 2010/02/03(水) 12:14:33|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

リモートのOracle 10gにOracle XE Clientで接続する

製品版のOracle 10gにOracle XE Clientをインストールした
クライアントから接続できるか試してみました。

Oracle XE Clientのダウンロードとインストールはこちら。

Oracle Database 10g Express Edition ODBCドライバのインストール


まず、リスナー名の確認を行います。
[スタート]-[Oracle-OraDB10g_home1]-[コンフィグレーションおよび移行ツール]-[Net Manager]
を開いて、対象のデータベースに登録されているサービス名を確認。

04_01_20100111171305.png


例だとSAMPLEDBに対して、SAMPLEDB.sv01というサービス名が設定されることが確認できます。


ODBC接続の設定はこんな感じ。

04_02_20100111171304.png

TNSサービス名に
[サーバーのIP]/[Net Managerで確認したサービス名]
と設定するのがミソ。


sqlplusコマンドからは、こんな感じで接続できます。


C:\>sqlplus system/password@192.168.1.1/SAMPLEDB.sv01

SQL*Plus: Release 10.2.0.1.0 - Production on 月 1月 11 16:12:56 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.



Oracle Database 10g Release 10.2.0.2.0 - Production
に接続されました。
SQL>




最初、TNSサービス名っていう意味がわからなくてはまりました。



テーマ:データベース - ジャンル:コンピュータ

  1. 2010/02/02(火) 12:12:05|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Oracle データのバックアップを行う(exp)

本格的にOracleを使い始める前に、データのバックアップ方法を調べてみました。

単にバックアップファイルを得るのであれば、expというコマンドを
使用すればよいようです。

テーブルをEXPORTする



コマンドの実行例



早速バックアップを実行してみます。

一番簡略化した構文は
exp [id]/[password] table=[テーブル名] file=[出力するファイル名]
のようです。

postテーブルの内容を/tmp/post.dmpに出力してみます。

# exp test/passwdtest tables=post file=/tmp/post.dmp
Export: Release 10.2.0.1.0 - Production on
Copyright (c) 1982, 2005, Oracle. All rights reserved.

接続先: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
AL32UTF8キャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエクスポートを実行します

指定された表をエクスポートします... 従来型パス経由...
.. 表                         POSTをエクスポート中     122877行エクスポートされました。
エクスポートは警告なしで正常終了しました。



無事出力されたようです。




出力したファイルの内容



出力した/tmp/post.dmpの内容を見てみると


TABLE "POST"
CREATE TABLE "POST" ("ZIP_CODE" CHAR(7), "ADDRESS" NCHAR(100)) PCTFREE 10 PCTUS
ED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 31457280 FREELISTS 1 FREELIST GROU
PS 1 BUFFER_POOL DEFAULT) TABLESPACE "TEST" LOGGING NOCOMPRESS
INSERT INTO "POST" ("ZIP_CODE", "ADDRESS") VALUES (:1, :2)
(以下、データ)



どうやら、テーブルの定義と実データを出力しているようです。

MySQLで言うところの、mysqldumpとおなじ感じという認識でいいのかな?





テーマ:データベース - ジャンル:コンピュータ

  1. 2010/01/07(木) 12:46:53|
  2. Oracle
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
前のページ 次のページ