パーティションごとの件数はこんな感じで確認できます。
select count(*) from [table_name] partition( [parition_name] );
サブパーティションの場合は?
続きを読むCHR 関数でできる。CHR(9) がタブ。
こんな感じ
続きを読むset lin 120
set pages 0
set head off
set feed off
set term off
set trims on
set echo off
spool test.tsv
select dummy || CHR(9) || dummy from dual;
spool off
V$SQL の COMMAND_TYPE 列や、V$SESSION の COMMAND列は、NUMBER 型。
これは、V$SQLCOMMAND で定義されている。
SQL> select * from V$SQLCOMMAND order by 1;
COMMAND_TYPE COMMAND_NAME
------------ ------------------------------
0
1 CREATE TABLE
2 INSERT
3 SELECT
4 CREATE CLUSTER
5 ALTER CLUSTER
6 UPDATE
7 DELETE
...
220 DROP FLASHBACK ARCHIVE
222 CREATE SCHEMA SYNONYM
224 DROP SCHEMA SYNONYM
225 ALTER DATABASE LINK
225まであんの?(11.2.0.4) って思ったけど、結構番号がとんでる。
V$ビューの定義を確認してみると、、、
SQL> select VIEW_DEFINITION from V$FIXED_VIEW_DEFINITION
2 where VIEW_NAME ='GV$SQLCOMMAND';
VIEW_DEFINITION
----------------------------------------------------------------------
select inst_id, indx, oct_name from x$oct where indx=oct_type
で、除外されているやつをみてみた。
SQL> select * from x$oct where indx!=oct_type;
ADDR INDX INST_ID OCT_TYPE OCT_NAME
---------------- ---------- ---------- ---------- ------------------------------
000000000C14EDC0 69 1 0
000000000C14EFB0 100 1 0
000000000C14EFC0 101 1 0
000000000C14EFD0 102 1 0
000000000C14EFE0 103 1 0
000000000C14EFF0 104 1 0
000000000C14F000 105 1 0
...
何も面白くなかった。。。
パラメータは、DEFERRED_SEGMENT_CREATION でデフォルトが true 。
つまり、デフォルトだと表を作成してもセグメントは作成されない。テストするときとか、たまに不便。
segment creation immediate 句をつけてあげると即時にセグメントが作成される。
SQL> create table tab1 (id number) ;
表が作成されました。
SQL> create table tab2 (id number) segment creation immediate;
表が作成されました。
SQL> col table_name for a10
SQL> select table_name, segment_created from user_tables
2 where table_name like 'TAB%';
TABLE_NAME SEGMENT_C
---------- ---------
TAB1 NO
TAB2 YES
逆に、遅延セグメント作成したいときは segment creation deferred 。
これも、忘れがち。。。
パラメータのデフォルト値を調べる用事で、DB 作るの面倒だし、なんとか NOMOUNT で起動できないか考えた結果。。。
続きを読む