スポンサーリンク
カテゴリー:"Oracle"

Oracle で SELECT * に任意のデータ行を追加したい

とにかくカラムの多いテーブルのデータの検証をする場合、やっぱりSQLは SELECT * FROM ・・・ って書くのが楽だったりします。

続きを読む »

Oracle でテーブルやビューを使わずに任意の複数行のデータを取得したい

例えば1ヶ月で1行できるデータがあったとして、そのデータが12ヶ月分揃っているか確認しなくちゃいけなくなったとします。

続きを読む »

Oracle 12c で AUTO INCREMENT がかなり楽に実現できるようになってた

Oracle のテーブルで他の DBMS にあるような AUTO INCREMENT を実現しようとした場合、これまではシーケンスを作成してテーブルにトリガーを仕込んで・・・。というのが一般的な方法だったわけですが、12c からはもっと楽にできるようになっていました。

というのも、テーブルのカラムの DEFAULT に、シーケンスの nextval が指定できるようになったんです。

つまりはこういうこと。

続きを読む »

Oracle でカラムに NOT NULL と DEFAULT を同時に設定するときは順番が大事

Oracle でテーブルを作る際に、NOT NULL と DEFAULT を同時に設定しようとしてハマったので。今更感満載ですがメモメモです φ(..)。

どこでハマったかって、記述する順序なんですよ。例えば以下の SQL ではエラーになってしまいます。

でも NOT NULL と DEFAULT を記述する順番を入れ替えると、通るんですよ。こんな感じで。

カラム名とカラムの型以外の指定の順序なんて、それなりに解釈してくれるものと思っていたのですが、やっぱり順番って大事なんですね。

Oracleで「リスナーがありません」なエラーの対処法いろいろ

久しぶりに Oracle を使ったシステムのテスト環境を作ろうとしたら、「リスナーがありません」というエラーでハマったので、忘れないためにも解決策をメモメモです φ(..)。

ちなみに状況によって「ORA-12224: TNS: リスナーがありません」と「ORA-12541: TNS: リスナーがありません」という、エラーコードの違う2パターンのメッセージが出るようですが、内容的にはどちらも同じっぽいです。

続きを読む »

WindowsのSQLPlusで日本語が文字化けするときの対処法

先日 Windows Server 2008 R2 にインストールした Oracle 10g (10.2.0.5) に、SQLPlus からアクセスしたところ・・・、日本語が文字化けしてるじゃないですか!

症状としては、全角の文字が全て '?' で表示されるというもので、サンプルとしては以下のような感じでした。

C:\> sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Tue Apr 1 10:00:00 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> connect / as sysdba
????????
SQL> 
 

う~ん、これでは何が何やらで作業ができませんがな。というわけで、対処法をメモメモです φ(..)。

続きを読む »

Oracleはカッコがあっても 「ORA-00907: 右カッコがありません。」

久しぶりに Oracle にテーブルを作ろうと create table文を実行したところ、「ORA-00907: 右カッコがありません。」 と怒られてしまいました・・・orz

ちなみに実行したのはこのようなSQLです。

CREATE TABLE USER(
  USER_ID      NUMBER(13)   NOT NULL, 
  USER_NAME    VARCHAR(20)  NOT NULL DEFAULT '', 
  CREATE_DATE  DATE         NOT NULL DEFAULT SYSDATE
)
 

とりあえず目を皿のようにして SQL文を舐めるように見直したのですが、何度数えなおしてもカッコの数は合ってます。あるえ?

続きを読む »

Oracleで数値の切り上げをしよう

Oracleの関数で、数値の丸めについて調べていてふと気になったのですが、四捨五入(ROUND)と切り捨て(TRUNC)はあるのに、切り上げって無いんですね。

ちなみに、ROUND と TRUNC の動作は以下のようになります。

ROUND(number)numberの小数点以下を四捨五入する
ROUND(number, integer)numberの小数点integer桁目の次の桁で四捨五入し、
小数点integer桁までの数値にする
TRUNC(number)numberの小数点以下を切り捨てる
TRUNC(number, integer)numberの小数点integer桁目の次の桁以下を切り捨て、
小数点integer桁までの数値にする

さて、じゃあ切り上げはどうするの? というところなんですが、操作対象の桁に4を足して四捨五入したり、9を足して切り捨てれば何とかなりそうです。

例えば、ROUND(number+0.4) とか、TRUNC(number+0.9) とすれば良さそうですよね。

うん、いい感じ。

また小数点第何位とかを求める時には、ROUND(1.234 + 0.004, 2) とかすれば出来ます。

頻繁に使う場合は関数を作っておくと、何かと便利そうです。幸いWeb上に関数のソースを公開されている方を見つけることが出来たので、僕は素直に使わせてもらうことにします。

参照リンク
 ・ORACLE SQL 四捨五入・切り上げ・切り捨てをする - ROUND、TRUNC、ROUNDUP 関数 | saka-en
  (切り上げの関数ROUNDUPのソースを公開しておられます)

Windows Server 2008 R2 に Oracle 10g をインストールしよう

Windows Server 2008 R2(以下、Win2008R2)に Oracle10g(以下、10g)をインストールするための覚え書きです。

まず前提として、Win2008R2 は64bit版しかないので、10gも64bit版の x64 のものをインストールする事になるわけですが・・・。

ところがこの64bit用のインストールディスクが問題でして、バージョンは 10.2.0.4 というものなのですが、Win2008R2 には対応してないんですよ。

しかも困ったことに、Win2008R2に対応した10gにするためには 10.2.0.5 のパッチを当てないといけません。つまりどうしても先に 10.2.0.4 をインストールしておく必要があるんです。

それなのに、あぁ、それなのに、 10.2.0.4 のインストーラーを起動すると、「このOSのバージョンには対応してません」 とか言われてそこで止まっちゃうんですよ。一体どうしろと?

続きを読む »

Oracle 9i で 「ORA-16032」 エラーでインスタンスを起動できなかったので

Oracle 9i でテストサーバーを作っていたのですが、「ORA-16032」 エラーでインスタンスを起動できなかったので、対処法のメモです。

ちなみにテストサーバーなんですが、本番サーバーのバックアップファイルを使って構築しました。

手順としては、新規の Oracle をインストールして一度インスタンスをシャットダウンします。次にファイルのパスを合わせてバックアップからファイルをコピーして、インスタンスを起動するというものです。

で、実際に出たエラーがこちら。

SQL> connect / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup
ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated
ORA-09291: sksachk: invalid device specified for archive destination
OSD-04018: ?w???????f?B???N?g?????????f?o?C?X???A?N?Z?X???????????B
O/S-Error: (OS 2) ?w?????????t?@?C???????????????????B
SQL>

調べてみますと、どうやら 「アーカイブログファイルを書き出すフォルダに書き込み出来ないよ」 ということのようです。

というわけで、先ずは PFILE(init<SID>.ora) ファイルを開いてアーカイブログファイルの書き出し先をチェックします。

そしたらですねぇ、フォルダは全て本番サーバーに合わせたとおもってたのに、そのフォルダを作り忘れてました・・・orz

というわけで、今回はフォルダを作成して無事に解決したわけですが、既にフォルダが有る場合はアクセス権の確認をして下さい。

それでも上手くいかない場合は、PFILE が古い可能性があるので動いている環境で SPFILE から PFILE を書き出し直してから再度確認してください。

スポンサーリンク

プロフィール


  • 書いてる人:夢界 陸

    名古屋在住のおっさん。
    プログラミングやガジェットの話など、 日々の興味を徒然と綴っています。



    Twitterやってます @mukairiku



    運営サイト
    www.mukairiku.net

ブログ内検索

Licenses

  • Creative Commons License

OTHER

  • このブログのはてなブックマーク数

Blog powered by TypePad

スポンサーリンク