忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

Tips-Oracle-SQL

sys.aud$の使用ブロック数を確認する

SELECT TABLE_NAME, NUM_ROWS, AVG_ROW_LEN, BLOCKS, EMPTY_BLOCKS, CASE AVG_ROW_LEN WHEN NULL THEN NULL WHEN 0 THEN 0 ELSE (CEIL(NUM_ROWS / TRUNC(((BLOCK_SIZE - KCBH - UB4 - KTBBH - (INI_TRANS - 1) * KTBIT - KDBH) * (100 - PCT_FREE) / 100 - K…

SELECTした行をロックする

select * from 表名 for update [of 表名.列名] [wait [待機時間]]|[nowait]; ・of句 表を結合する場合に使用し、表とその列名を指定する of句で指定した表のSELECTしたレコードがロックされるが、of句で指定していないレコードはロックされない of句を指定…

v$sessionとv$processの結合例

select s.username, s.process, s.program, p.spid, p.program from v$session s, v$process p where s.paddr = p.addr;

セッション内で実行されたSQLを取得する

select q.sql_text, q.first_load_time, s.login_time from v$sql q, v$session s where q.sql_id = s.sql_id;

Oracle SQLのgroup byとpartition by

どちらもグルーピング(集約)という点では動作は同じ group by 分割後に集約して一行に纏める partition by 分割後に集約して一行に纏めず、更にグループ単位で処理する ・使用例 同じチームで更に順位を付ける RANK()、DENSE_RANK()など 同じチームで更に連…

Oracle結合構文について

a.col1 = b.col1(+)とa left outer join b on a.col1 = b.col1は同じ⇒(+)は相手(a)を全て表示するという意味。 紐づかないレコードもあるため、相手(a)は欠落する場合がある※ANSI SQL:1999結合構文とOracle結合構文はパフォーマンスは変わらない。

dba_free_space単体でUSERS表領域の空き容量を確認する

select tablespace_name ,sum(bytes) / 1024 / 1024 / 1024 size_gb ,sum(blocks)from dba_free_spacewhere tablespace_name = 'USERS'group by tablespace_name;

データベースのブロックサイズを取得する

select value from v$parameter where name = 'db_block_size';

dba_free_space単体でSYSTEM表領域の空き容量をFILE ID単位で確認する

select tablespace_name ,file_id ,block_id ,bytes ,blocksfrom dba_free_spacewhere tablespace_name = 'SYSTEM';

SYSTEM表領域の使用率(表領域)を確認する

set lines 120set pages 100set term offcol tablespace_name format a15col "SIZE(KB)" format a20col "USED(KB)" format a20col "FREE(KB)" format a20col "USED(%)" format 990.99select tablespace_name ,to_char(nvl(ddf.total_bytes / 1024, 0),'999,9…

SYSTEM表領域の使用状況(表領域およびデータファイル)を確認する

col tablespace_name format a30col file_name format a30break on tablespace_nameselect tablespace_name ,' (表領域)' file_name ,sum(bytes) / 1024 / 1024 bytes_mb ,sum(bytes - nvl(c3,0)) / 1024 used_kb ,sum(nvl(c3,0)) / 1024 free_kb ,round*1 /…

SYSユーザのデフォルト表領域を確認する

col OWNER format a30col TABLE_NAME format a30col TABLESPACE_NAME format a30 select owner, table_name, tablespace_name, num_rows, avg_row_len, blocks, empty_blocks from dba_tables where owner = 'SYS';