#author("2024-01-11T21:55:28+09:00","default:irrp","irrp")
→データベース関連

→[[SQL一般]]

→Oracleに関するメモ

→T-SQL関連メモ

このページでは主にOracleのSQLに関する情報を載せる。
Sql ServerのSQLに関しては T-SQL関連メモを参照のこと

#contents

*Tips [#q16930ed]
-[[実務に役立つSQLのテクニック集 #SQL - Qiita>https://qiita.com/SimonLee/items/dde1be7c94969697780a]] 2024.1

-[[「なぜ、あのSQLは遅いのか」を正しく的確に調査する方法>http://www.atmarkit.co.jp/ait/articles/1706/28/news006.html]]

-[[ROW_NUMBER 分析ファンクションの使用例>http://www.shift-the-oracle.com/sql/functions/row_number-practice.html]] 2016.2.1

-[[SQL 階層問い合わせ>http://gigazine.net/index.php?/news/comments/20090624_kill_girlfriend_used_to_be_man/]]


*ストアドプロシージャのソースを見たい [#rfd8229a]
-ユーザオブジェクトの中からストアドプロシージャ名を列挙するにはこうする。
 select object_name,object_type from user_objects where object_type='PROCEDURE';
-ソースを見たいときはこういうふうにする。
 select text from user_source where name='適当なプロシージャ名';


*外部表の使い方 [#k7a093ec]
-外部表とは、外部ファイルをあたかも表であるかのように直接参照したもの。ビューの一種と考えられる。
-具体的な設定の仕方は下記URLを参照。
--http://biz.rivus.jp/external_table_practice.html

*一時表領域のファイルをリサイズする方法 [#y4dfe796]
一時表領域は通常のalter tablespaceなどではリサイズできない。以下のようにする。
 --作成時のCREATE文
 CREATE TEMPORARY TABLESPACE WEBGIS_TEMP
 TEMPFILE 'E:\GISDB\TEMP\WEBGIS_TEMP01.DBF' SIZE 18434M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED

このような表領域があるとする。これに対して以下のコマンドを適用する。

 SQL> alter database tempfile 'E:\GISDB\TEMP\WEBGIS_TEMP01.DBF' drop including datafiles;
 データベースが変更されました。

この時点で一時表領域のあるファイル(.DBF)が削除される。~
次に新しいDBFを希望のサイズで作成する。

 SQL>alter database tempfile 'E:\GISDB\TEMP\WEBGIS_TEMP01.DBF' drop including datafiles size 1000M;
 表領域が変更されました。

temp領域を使っているセッションがあると失敗するので全部止めてからやること。

*あるテーブルのフィールドにインデックスがあるか調べる [#h1cf2b6f]
こんな感じ
 select * from user_ind_columns where table_name = <table_name> and column_name=<field_name>;
結果が0件ならインデックスはない。そうでないならある。

*DBに入っている文字列の文字コードを16進ダンプする [#t24fdb0b]

 SELECT RAWTOHEX(フィールド名) from テーブル名

実行例
 >select fld_1,rawtohex(fld_1) from kizon
 FLD_1
 -----------------------
 RAWTOHEX(FLD_1)
 -----------------------
 店舗1
 935895DC8250
 
 店舗2
 935895DC8251
 
 大久保店
 91E58B7695DB9358
 
 馬場店
 946E8FEA9358
 
 t戸山店
 748CCB8E529358

*各テーブルのフィールドプレフィックスを一覧表示するSQL [#s884119b]
 SELECT
  table_name, pr
 FROM 
 (
  SELECT
   table_name,
   SUBSTR(column_name,1,INSTR(column_name,'_') - 1) pr
  FROM
   user_tab_columns
 )
 GROUP BY
  table_name, pr
 ORDER BY
  pr
 ;

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS