Archive for: 𔃷月 2012’

StatsPackの使用準備。

2012年7月26日 Posted by PURGE

StatsPackを使用してみようと試みる。

SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql

しかしエラー。
どうやら、X$KCBFWAIT というviewを参照する権限がないらしい。

... Creating views
create or replace view STATS$X_$KCBFWAIT as select * from X$KCBFWAIT
                                                          *
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません

sysdba権限で接続してみる。
しかし、OSユーザが oralceユーザでないとsysdba権限がダメらしい。

Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
に接続されました。
SQL> connect / as sysdba
ERROR:
ORA-01031: 権限が不足しています。

どうやら、OSのoracleユーザでないと怒られるようだ。
今まで、普通に何となく知っているつもりでOracleに接してきた。そのつけあってちょっとハマる。
反省。

su oracle

こんどはOSのユーザを変えて、systemユーザでログイン。そして sysdbaとして接続。

[oracle@work]$ sqlplus system/xxxxx

SQL*Plus: Release 11.2.0.1.0 Production on 木 7月 26 14:49:17 2012
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
に接続されました。
SQL> connect / as sysdba
接続されました。

気を取り直して再度実行。

SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql

しかしまたエラー。
どうやら先程のスクリプト実行が中途半端で、ユーザだけ残ってしまったようだ。

... Creating PERFSTAT user
create user perfstat
            *
行1でエラーが発生しました。:
ORA-01920: ユーザー名'PERFSTAT'は他のユーザー名またはロール名と競合しています
Oracle Database 11g Release 11.2.0.1.0 - 64bit Productionとの接続が切断されました。

迷わず、drop user。

SQL> drop user perfstat cascade;
ユーザーが削除されました。

そして、$ORACLE_HOME/rdbms/admin/spcreate.sql を実行。
PERFSTATユーザが作られるので、パスワードとか表領域とか一時表領域とか尋ねられる。

SQL> @$ORACLE_HOME/rdbms/admin/spcreate.sql

Choose the PERFSTAT user's password
-----------------------------------
Not specifying a password will result in the installation FAILING

perfstat_passwordに値を入力してください: xxxxxx
perfstat
Choose the Default tablespace for the PERFSTAT user
---------------------------------------------------
Below is the list of online tablespaces in this database which can
store user data.  Specifying the SYSTEM tablespace for the user's
default tablespace will result in the installation FAILING, as
using SYSTEM for performance data is not supported.

Choose the PERFSTAT users's default tablespace.  This is the tablespace
in which the STATSPACK tables and indexes will be created.

TABLESPACE_NAME                CONTENTS  STATSPACK DEFAULT TABLESPACE
------------------------------ --------- ----------------------------
DATA1                          PERMANENT
INDEX1                         PERMANENT
SET_DTL                        PERMANENT
SET_HST                        PERMANENT
SET_HST2                       PERMANENT
SET_IDX                        PERMANENT
SET_RP                         PERMANENT
SET_SWK                        PERMANENT
SET_TMP                        PERMANENT
SYSAUX                         PERMANENT *
USERS                          PERMANENT

Pressing <return> will result in STATSPACK's recommended default
tablespace (identified by *) being used.

default_tablespaceに値を入力してください:

Using tablespace SYSAUX as PERFSTAT default tablespace.


Choose the Temporary tablespace for the PERFSTAT user
-----------------------------------------------------
Below is the list of online tablespaces in this database which can
store temporary data (e.g. for sort workareas).  Specifying the SYSTEM
tablespace for the user's temporary tablespace will result in the
installation FAILING, as using SYSTEM for workareas is not supported.

Choose the PERFSTAT user's Temporary tablespace.

TABLESPACE_NAME                CONTENTS  DB DEFAULT TEMP TABLESPACE
------------------------------ --------- --------------------------
TEMP                           TEMPORARY *

Pressing <return> will result in the database's default Temporary
tablespace (identified by *) being used.

temporary_tablespaceに値を入力してください:

Using tablespace TEMP as PERFSTAT temporary tablespace.

すると、実行される。

... Creating PERFSTAT user
... Installing required packages
... Creating views
... Granting privileges
NOTE:
SPCUSR complete. Please check spcusr.lis for any errors.

SQL>
SQL> --
SQL> --  Build the tables and synonyms
SQL> connect perfstat/&&perfstat_password
接続されました。
SQL>
SQL> set showmode off echo off;

…省略…

... Creating STATS$SNAPSHOT_ID Sequence

順序が作成されました。
シノニムが作成されました。
... Creating STATS$... tables
表が作成されました。
シノニムが作成されました。
1行が作成されました。
1行が作成されました。

…省略…

NOTE:
SPCTAB complete. Please check spctab.lis for any errors.
SQL> --  Create the statistics Package
SQL> @@spcpkg
SQL> Rem
SQL> Rem    densor.uk   03/31/93 - Modified
SQL> Rem    cellis.uk   11/15/89 - Created
SQL> Rem
SQL>
SQL> set echo off;
Creating Package STATSPACK...

パッケージが作成されました。

エラーはありません。
Creating Package Body STATSPACK...

パッケージ本体が作成されました。

エラーはありません。

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.
SQL>

うまくいったようだ。

sqlplus 整形覚え書き

2012年7月25日 Posted by PURGE

sqlplus で画面を整形するコマンドの覚え書き。

set lines 180 --1行の幅
set num 10    --列の表示幅(Number型の列)
set pages 50  --1ページ行数

Please install the mysql adapter: `gem install activerecord-mysql-adapter`

2012年7月24日 Posted by PURGE

RedmineがRuby1.9では動作しなかったので、放っておいて早1年。やはり、Redmineは必要なので、Redmine2.0バージョンをインストールしてみることとした。

いろいろエラーに悩まされ、表題のエラー。

adapter を単純にmysql ⇒ mysql2 と書き直せばよい。

Gemfileの修正(ほぼコメントアウト)と、database.yml の修正で何とかなった。

herokuでMysqlを使う

2012年7月19日 Posted by PURGE

herokuでは、デフォルトのストレージとして、共有データベースというPostgreSQLのデータベースを5MB無料で用意している。

開発はMysqlを利用しているので、ぜひherokuでもMysqlを使用したい。そんな時は、herokuのAdd-onsの一つであるClearDBというアドオンを利用できる。これもまた5MBまで無償で利用できる。

ClearDBは、herokuのWeb画面からもアドオン追加できる。
設定方法は、サイト上のドキュメントを見れば記載されているが英語である。

とりあえず、手順の覚書。

まずはherokuログイン。

C:\HerokuTest>heroku login
Enter your Heroku credentials.
Email: xxxx@whoocus.com
Password (typing will be hidden):
Authentication successful.

grepで設定されているDATABASE_URLを調べてみる。
すると、現在のデータベースDATABASE_URL(PostgreSQL)とアドオンしたClLEARDB_DATABASE_URL(Mysql)と共有データベースSHARED_DATABASE_URL(PostgreSQL)のURLをが見ることができる。

C:\HerokuTest>heroku config | grep DATABASE_URL
CLEARDB_DATABASE_URL: mysql://xxxxx:xxxx@us-xx-east.cleardb.com/heroku_1234?reconnect=true
DATABASE_URL:postgres://xxx@xxx.compute-1.amazonaws.com/xxx
SHARED_DATABASE_URL:postgres://xxx:xxx@1234.comput
e-1.amazonaws.com/xxx

そこで、DATABASE_URLをClearDBのURLで書き換える。
気を付けるのは、URLの’mysql://’ → ‘mysql2://’ のように、対応しているgemのバージョンに合わせる。

C:\HerokuTest>heroku config:add DATABASE_URL='mysql2://xxxxx:xxxx@us-xx-east.cleardb.com/heroku_1234?reconnect=true'
Setting config vars and restarting heroku-test... done, v9
DATABASE_URL: mysql2://xxxxx:xxxx@us-xx-east.cleardb.com/heroku_1234?reconnect=true

そこで、herokuでDBのマイグレーション。

C:\HerokuTest>heroku run rake db:migrate
Running `rake db:migrate` attached to terminal... up, run.1

おそらく以上で、Mysqlを認識することでしょう。

railsで階層構造にして、ルーティングエラー

2012年7月19日 Posted by PURGE

管理画面用のURLを別途同一アプリケーションの中で、ディレクトリ階層(/admin/index)を作りたいと思っていたが、ルーティングやらヘルパーやらモデルの動作が中々うまくいかない。

階層は下記のように構成

■ユーザ管理画面コントローラ
app/controller/admin/user_controller.rb

#リダイレクト
format.html {redirect_to admin_user_path(@user.id)}

■ユーザモデル
app/models/user.rb

■ユーザ管理画面ビュー
app/views/admin/users/_form.html.erb

<%= form_for([:admin, @member]) do |f| %>
<% end %>

■ルーティング設定
config/routes.rb

namespace :admin do 
  resources :members 
end

最終的には、下記のサイトにて素晴らしい情報が記載されていた。
感謝感謝!!

http://devml.blogspot.jp/2011/01/rails3routesnamespaceformfor.html

form_forの記述の仕方がまだ理解できていないのだが、とりあえず動作した。

form_for での actionのurl指定

2012年7月18日 Posted by PURGE

以前の記事で、http://www.whoocus.com/blog/?p=622階層をつけた場合に、別のことでハマったので覚書。

デフォルトの記述で、下記のようにフォームを指定すると、テンプレートエラーとなってしまう。

<%= form_for(@member) do |f| %>
<% end %>
ActionView::Template::Error (undefined method `members_path' for #<#<Class:0x00000103e5c7f8>:0x00000103e2de08>):
    1: <%= form_for(@member) do |f| %>
    2: 
    3: <% end %>

modelの階層も変わった為に当然 members_path が返されて、未知のメソッドだと怒られる。

そこで、form_forのヘルパー関数では、urlを指定できるようだ。

<%= form_for(@member, :url => admin_members_path) do |f| %>
<% end %>

すると動作する。

tnsnames.ora と listener.ora

2012年7月17日 Posted by PURGE

上記ネットワーク設定ファイルは時々混乱するので覚え書き。

tnsnames.ora は、Oracle Net Managerツールで表示されるところの、サービス・ネーミングで設定されるファイル。主にローカル側にて、接続先となるサーバ情報を設定するファイル。

TNSNAME =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myHost)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = myDB)
    )
  )

listener.ora は、Oracle Net Managerツールで表示されるところの、リスナーで設定されるファイル。主にサーバ側にて、接続を受け入れる場合の設定ファイル。

LISTENERNAME =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
  )
ADR_BASE_MYLISTENER = C:\oracle\product\11.2.0\client_1\log

余談であるが、Oracle Net Manager と Oracle Net Configration Assistant のツール群も時々用途を混乱してしまう。

heroku 新規開発環境での環境構築

2012年7月11日 Posted by PURGE

herokuにアカウントを持って、別PCへ新規の開発環境を作成する手順。
元々、Macで開発を開始して、別ローカルPC(WindowsXP)にて環境構築する必要が出てきた。
とりあえず、Heroku Toolbelt をインストールして、コマンドラインから下記を実行。

C:\works>heroku login
Enter your Heroku credentials.
Email: xxxx@whoocus.com
Password (typing will be hidden):
Authentication successful.

そしてSSHキーを作成する。当然お初の環境なので、新規のPublic keyを発行する。

C:\works>heroku keys:add
Could not find an existing public key.
Would you like to generate one? [Yn] Y
Generating new SSH public key.
Uploading SSH public key C:/Documents and Settings/xxxx/.ssh/id_rsa.pub... done

すると、Windowsなので、ユーザフォルダ直下(C:\Documents and Settings\xxxx\.ssh)に、.sshフォルダ一式が作成される。
これでssh認証される。なんと簡単なことでしょう。

そして、git cloneコマンドにて、ローカルPC環境に複製する。

C:\works>git clone git@heroku.com:xxxx.git AppName
Cloning into 'XXXXX'...
Warning: Permanently added the RSA host key for IP address '99.99.99.999' to the list of known hosts.
remote: Counting objects: 413, done.
remote: Compressing objects: 100% (306/306), done.
remote: Total 413 (delta 140), reused 247 (delta 69)
Receiving objects: 100% (413/413), 94.00 KiB | 14 KiB/s, done.
Resolving deltas: 100% (140/140), done.

これで完了。

Git ユーザ情報設定

2012年7月10日 Posted by PURGE

$ git config --global user.name "Blowfish"
$ git config --global user.name 
Blowfish
$ git config --global user.email "blowfish@whoocus.com"
$ git config --global user.email 
blowfish@whoocus.com

rails admin階層でのrouteパス設定

2012年7月10日 Posted by PURGE

railsにて、admin/index のように、階層を作成したい場合がある。
この場合、下記のようにコントローラを作成できるが、routing で引っかかる。

rails generate controller admin/index index

この場合、config/routes.rb にて namespaceを使用する。

  namespace :admin do
    get "index/index"
  end

はまったのが、下記のようにリンクを作成するとroutingエラーになる。

<%= link_to("管理画面へ", {:controller => index, :action => index} %>

そこで、下記コマンドでルーティング情報を表示してみる。

$rake routes
admin_index_index GET    /admin/index/index(.:format)

そのまま下記のように記述するが、またエラー。

<%= link_to("管理画面へ", admin_index_index %>

どうやら、を付けるようだ。

<%= link_to("管理画面へ", admin_index_index_path %>

うまくいった。