- 追加された行はこの色です。
- 削除された行はこの色です。
#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
;