Oracle

java.sql.PreparedStatement で 条件句に空文字があると面倒

例えば、DBのあるテーブルのSUB_NAMEというカラムがあったとする。 Oracleは ''(空文字列) を NULL として扱うので、SUB_NAME = '' という条件句は常にfalseとなる。 SUB_NAMEがNULLだとしてもfalseになる。NULLとの比較は常にfalse。 NULLの列を検索するに…

便利SQL

SQL> set long 2000000000 SQL> select dbms_metadata.get_ddl('TABLESPACE', 'TEMP') from dual; SQL> create table test (no number, text varchar2(100)); SQL> insert into test values(1,'AAAAAAAAAAAAAAAAAAAAA'); SQL> insert into test select no+1,…

UNDOセグメントの状況確認

オラクルが現在使用中のUNDOセグメント状況を確認 SQL> SELECT N.USN, N.NAME, S.STATUS, S.EXTENTS, S.RSSIZE, S.HWMSIZE, S.XACTS FROM V$ROLLNAME N, V$ROLLSTAT S WHERE N.USN = S.USN; USN NAME STATUS EXTENTS RSSIZE HWMSIZE XACTS ---- ---------- -…

UNDOデータファイルのディスクが満タン

大量のデータをDELETEするなど巨大なトランザクションを実行すると、UNDO表領域がものすごいことになりディスクがFULLになってビックリみたいな。 そんなときはUNDO表領域を切り替える。 UNDO表領域はデータベースを立ち上げたまま切り替えられる。 (1)現在…

ノーアーカイブモードに変更

(1)現在のログ・モードを確認 SQL> archive log list データベース・ログ・モード アーカイブ・モード 自動アーカイブ 使用可能 アーカイブ先 /oracle/arch 最も古いオンライン・ログ順序 495 アーカイブする次のログ順序 497 現行のログ順序 497 (2)自動ア…

現在接続しているユーザ

select username from v$session where username is not null ;

sysdateからカレンダーみたいなSQL

月次集計とかするときに、レコードが全く無い月があると YYYYMM01 MTOTAL -------- ---------- 05-08-01 3150 05-12-01 18927 06-01-01 6331 06-03-01 3589みたいに、歯抜けになるのがちょっと嫌。そんな時には select add_months(startm, rownum) yyyymm01 …