読者です 読者をやめる 読者になる 読者になる

Gblog

おもにTips

spool で CSV (Comma-Separated Values)

TSV やったんで、CSV もついでに。

こんなかんじ

set lin 120
set pages 0
set head off
set feed off
set term off
set trims on
set echo off
spool test.csv
select dummy || ',' || dummy  from dual;
spool off

 

続きを読む

spool で TSV (Tab-Separated Values)

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

続きを読む

COMMAND_TYPE

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 。

これも、忘れがち。。。

Predicate information って V$SQL_PLAN で見れるのね

しらなかった。

例えば。

続きを読む

インスタンスを起動するのに必要なパラメータは何か?

パラメータのデフォルト値を調べる用事で、DB 作るの面倒だし、なんとか NOMOUNT で起動できないか考えた結果。。。

続きを読む

yum って

Linux

使ったことない。

rpm を追加でインストールする用事があったので少しさわってみました。

 

isoイメージがあるのでこれをリポジトリに。

/media にマウントして

# mount /dev/cdrom /media

リポジトリの設定を超適当に書きます。

/etc/yum.repos.d/oel67.rep

[oel6.7]
name=oel6.7
baseurl=file:///media
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-TEST

 ファイル名も適当です。

多分、大丈夫。

# yum repolist
...
repo id             repo name               status
oel6.7              oel6.7                  3800
...

 試しに動かしてみますが、、、なんかエラー。

# yum search zsh
Loaded plugins: refresh-packagekit, security, ulninfo
http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'public-yum.oracle.com'"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: public_ol6_UEKR3_latest. Please verify its path and try again

どうやら、デフォルトのリポジトリにアクセスできないのが原因のようです。なので、もともとあったリポジトリファイル(/etc/yum.repos.d/*.repo)を退避、退避・・・。

で動くようになりました!

[root@uno-spa yum.repos.d]# yum search zsh
Loaded plugins: refresh-packagekit, security, ulninfo
================================================================= N/S Matched: zsh ==================================================================
zsh.x86_64 : A powerful interactive shell

  Name and summary matches only, use "search all" for everything.

 インストールは簡単。

yum install zsh

みたいな。

設定は面倒(そうでもないか?)ですが使ってみると便利かも。

 

参照:RHELでisoからyumを行う方法 - Qiita