忍者ブログ
忘れっぽい開発者の備忘録。基本的に自分用メモです。
[1] [2] [3
2017.12.18,Mon
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2011.02.02,Wed
Oracleでデータベースの情報(DBIDとかサービス名とか)が分からない場合、
下記のSQLで取得出来ます。

■現在日付の取得
SELECT  dbid,name,db_unique_name
FROM  v$database;
 
まあ、サービス名が分からないとかそういうのはあんまりないかな…。
サービス名をど忘れした場合とかに使うといいかもしれません。
PR
2011.02.01,Tue
 Oracleでは現在日付はsysdateで取得できます。
 
■現在日付の取得
SELECT sysdate FROM dual;

■日付型を文字型に変換
to_char(sysdate ,'yyyy/mm/dd hh24:mi:ss')

■文字型を日付型に変換
to_date('2010/01/05' ,'yyyy/mm/dd')
 
■使用例
※使用テーブル
product_mst
id product insert_date
1 書籍 2011/01/01
2 CD 2011/01/05
3 DVD 2011/01/10

※目的
product_mstのinsert_dateが2010/01/05~2010/01/10のものを取得。

※SQL
SELECT product , to_char(insert_date,'yyyy/mm/dd')
FROM product_mst
WHERE insert_date >= to_date('2011/01/05','yyyy/mm/dd')
AND insert_date <= to_date('2011/01/10','yyyy/mm/dd')
;








※結果
product insert_date
CD 2011/01/05
DVD 2011/01/10



2011.02.01,Tue
■1行コメントアウト
-- SELECT a FROM b;
 
■複数行コメントアウト
/*
SELECT a
FROM b; 
*/
 
※綺麗な書き方ではないですが、SQL実行ツールだったらこういう書き方でも通ります。
でも推奨しません。たぶん他の人がこれを見たら「うわ、この人sql苦手だろ…」とか思われます。
 
-- SELECT a
FROM c;
/*
FROM b;
 
2011.02.01,Tue
今までに発生したエラーと、その原因のまとめ。
通常はオラクルエラー対処法(http://www.shift-the-ORAcle.com/oerrs/)を見ることをおすすめします。


ORA-00904:無効な識別子です。

原因 指定したカラムが存在しない、カラムの名前を間違えている
対処 カラムの名前を修正した


ORA-00917:カンマがありません。
原因 カンマがない、もしくはカンマが必要以上にある
対処 カンマを修正した


ORA-00918:列の定義が未確定です。
原因 結合したテーブルの中に、同じ名前のカラムが存在する
対処 結合したテーブルに別名をつけ、別名.カラム という形に修正した


ORA-00933:SQLコマンドが正しく終了されていません。
原因 カンマが抜けている、全角スペースが入っている、SQLが途中で切れている
対処 カンマを適切な場所に入れ、スペースを半角に修正。
SQLが切れていた場合は再度完全なものを実行し直した。

ORA-00936:式がありません。
原因 カンマが抜けている、全角スペースが入っている。
対処 カンマを適切な場所に入れ、スペースを半角に修正。


ORA-00947:値の個数が不足しています。
原因 カンマが抜けている、全角スペースが入っている。
対処 カンマを適切な場所に入れ、スペースを半角に修正。


ORA-00957:列名が重複しています。
原因 insertなどでsetとvalueの数が一致していない
対処 setとvalueの値を同じにした。


ORA-00979:GROUP BYの式ではありません。
原因 SELECT nvl(decode・・・ というSQLを作ったときに、group句にnvl部分を入れていなかったためにエラー発生。
対処 nvl(decode・・・ではなく、decode・・・からgroup句に入れる。


ORA-01403:データが見つかりません。
原因 データに不備があったため、結果が取得出来ていなかった。
(本来、数値型のカラムになぜか文字型が入っていた)
対処 データの内容を修正した。


PLS-00402:列名の重複を避けるためにはカーソルのSELECTリストに別名が必要です。
原因 カーソルでSELECTした列名に別名をつけていたが、それが重複していた
対処 重複しないように別名をつけた


まだ追加するかも?
2011.02.01,Tue
 今まで上司、先輩等に教わってきたチューニング方法と、自分の解釈?について。
※正しくない場合もあるので要注意。
 
・テーブルを繋げる時、全体レコード数が少ないテーブルから多いテーブルへ繋げる。
→アクセスする件数が減るため、速くなる。
  (と言っても、仕様上繋げるのが正しいテーブルじゃないと意味無いですよ)
 
・インデックスを見る。インデックスを限りなく多く見るようにする。
→データの検索速度を向上させるために作られたものなので見るようにした方が速い。
でもインデックス貼りまくったら元も子もない。
 
・TABLE ACESS FULLに極力ならないようにする。
→アクセスする件数が多くなるほど遅くなる。
 
・VIEW同士繋げると重い
→意味が分からない。VIEWって結局SELECTと一緒の事してると思うんだけど。
 ネットで見かけた情報だと、実行計画が上手くいかないから、という原因もあるらしい。
 意味が分からなくても怖いからVIEW同士繋げたことはない。
 なので真偽は分からない。
 
・VIEWで集約関数使うと重いので、使わないようにする(ネットで見かけた内容)
→速度量ってみたけどあんまり変わらなかった。
 
 
 
また追加するかも?
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
ブログ内検索
Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]