<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/kogo/">
    <title>メモ</title>
    <link>http://w.atwiki.jp/kogo/</link>
    <atom:link href="https://w.atwiki.jp/kogo/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>メモ</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-03-05T19:58:23+09:00</dc:date>
    <utime>1204714703</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/6.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/7.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/5.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/12.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/11.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/10.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/kogo/pages/9.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/6.html">
    <title>wsh</title>
    <link>https://w.atwiki.jp/kogo/pages/6.html</link>
    <description>
      *wshのちょっとしたスクリプト
**ログを書くhta
C:\log.txtにログを書く。テキストボックスには一番新しいログの内容を初期表示する。
 &lt;html&gt;&lt;head&gt;
 &lt;title&gt;test&lt;/title&gt;
 &lt;script language=&quot;VBScript&quot;&gt;
 Option Explicit
 &#039;********************************************
 &#039; 初期処理
 &#039;********************************************
 Dim logfile
 Dim history_cnt
 
 logfile = &quot;C:\log.txt&quot;
 
 Sub Window_onLoad
     window.resizeTo 400,100
     ReadFile(logfile)
 End Sub
 &#039;********************************************
 &#039; ログ出力メイン
 &#039;********************************************
 Sub PutLog
     Dim text
     text = document.form1.txt_log.value
     WriteToFile(text)
     window.close()
 End Sub
 &#039;********************************************
 &#039; ログファイル書き込み
 &#039;********************************************
 Sub WriteToFile(text)
   Dim fso
   Dim textFile
   Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
   Set textFile = fso.OpenTextFile(logfile, 8, True)
   textFile.WriteLine Now &amp; &quot; &quot; &amp; text
   textFile.Close
 End Sub
 
 &#039;********************************************
 &#039; ログファイル読み込み
 &#039;********************************************
 Sub ReadFile(text)
   Dim fso
   Dim textFile
   Dim line
   Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
   Set textFile = fso.OpenTextFile(logfile)
   Do While textFile.AtEndOfStream &lt;&gt; True
     line = textFile.ReadLine
     If line &lt;&gt; &quot;&quot; Then document.form1.txt_log.value = Midb(line,41,Lenb(line)-40)
   Loop
   textFile.Close
 End Sub
 &lt;/script&gt;
 
 &lt;!-- ///// 画面表示 ///// --&gt;
 &lt;HTA:APPLICATION SCROLL=&quot;no&quot; BORDER=&quot;dialog&quot; BORDERSTYLE=&quot;static&quot;&gt;
 &lt;/head&gt;
 &lt;body onLoad=&quot;document.form1.txt_log.focus()&quot;&gt;
 &lt;form name=&quot;form1&quot;&gt;
     &lt;p&gt;
        &lt;!--
        &lt;select name=&quot;sel_log&quot;&gt;
          &lt;option value=&quot;&quot;&gt;&lt;/option&gt;
        &lt;/select&gt;&lt;br&gt;
        --&gt;
        &lt;input type=&quot;text&quot; name=&quot;txt_log&quot; value=&quot;&quot; size=&quot;60&quot;&gt;
        &lt;input type=&quot;button&quot; value=&quot;OK&quot; onClick=&quot;PutLog()&quot; /&gt;&lt;/p&gt;
 &lt;/form&gt;
 &lt;/body&gt;&lt;/html&gt;

**InternetExplorerを操作する
 Dim logintest
 Dim array1, file
 Dim fso, data_csv, readstr
 Dim UntanFromFile, NameFromFile, PassFromFile
 
 &#039;file = &quot;C:\tmp\ログインテストツール\test.cvs&quot;
 file = &quot;test.cvs&quot;
 
 set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 set data_csv =fso.OpenTextFile(file,1)
 
 set logintest = CreateObject(&quot;WScript.Shell&quot;)
 logintest.Run(&quot;http://test.co.jp/login.cfm&quot;)
 
 Do While Not data_csv.AtEndOfStream
    readstr = data_csv.ReadLine
    array1 = split(readstr,&quot;,&quot;,-1)
    UntanFromFile = array1(0)
    NameFromFile = array1(1)
    PassFromFile = array1(2)
 
    WScript.sleep(2000)
 
    &#039;ログイン
    logintest.Sendkeys(&quot;{TAB}{TAB}&quot;)
    logintest.Sendkeys(UntanFromFile)
    logintest.Sendkeys(&quot;{TAB}&quot;)
    WScript.sleep(500)
    logintest.Sendkeys(NameFromFile)
    logintest.Sendkeys(&quot;{TAB}&quot;)
    WScript.sleep(500)
    logintest.Sendkeys(PassFromFile)
 
    &#039;「ログイン」ボタンを押す
    logintest.Sendkeys(&quot;{TAB}&quot;)
    logintest.Sendkeys(&quot;{ENTER}&quot;)
    WScript.sleep(4000)
 
    &#039;「ログアウト」ボタンを押す
    logintest.Sendkeys(&quot;{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}&quot;)
    logintest.Sendkeys(&quot;{ENTER}&quot;)
    WScript.sleep(2000)
 
    &#039;「ログイン画面へ」ボタンを押す
    logintest.Sendkeys(&quot;{TAB}{TAB}&quot;)
    logintest.Sendkeys(&quot;{ENTER}&quot;)
    WScript.sleep(1000)
 Loop
 
 data_csv.Close


**MDBに接続して結果をテキスト出力する
 mdbfile = &quot;test.mdb&quot;
 filename = &quot;output.txt&quot;
 Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 Set textFile = fso.OpenTextFile(filename, 8, True)
 
 On Error Resume Next
 
 Const adOpenStatic = 3
 Const adLockOptimistic = 3
 
 Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
 Set objRecordSet = CreateObject(&quot;ADODB.Recordset&quot;)
 
 objConnection.Open _
     &quot;Provider=Microsoft.Jet.OLEDB.4.0; &quot; &amp; &quot;Data Source=&quot; &amp; mdbfile
 
 objRecordSet.Open &quot;SELECT * FROM MSysObjects&quot; , _
     objConnection, adOpenStatic, adLockOptimistic
 
 objRecordSet.MoveFirst
 
 Do Until objRecordSet.EOF
     textFile.WriteLine objRecordSet.Fields.Item(&quot;name&quot;)
     objRecordSet.MoveNext
 Loop
 
 textFile.Close


**メールを送る
自前のSMTPサーバ
 Set oMsg = CreateObject(&quot;CDO.Message&quot;)
 oMsg.From = &quot;{From Address}&quot;
 oMsg.To = &quot;{To Address}&quot;
 oMsg.Subject = &quot;windows標準機能からメール&quot;
 oMsg.TextBody = &quot;テストメッセージです&quot; &amp; vbCrLf &amp; Now
 oMsg.Send

外部SMTPサーバを使う
 Set oMsg = CreateObject(&quot;CDO.Message&quot;)
 oMsg.From = &quot;{From Address}&quot;
 oMsg.To = &quot;{To Address}&quot;
 oMsg.Subject = &quot;Test2&quot;
 oMsg.TextBody = &quot;テストメッセージです&quot; &amp; vbCrLf &amp; Now
 oMsg.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/sendusing&quot;) = 2
 oMsg.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserver&quot;) = &quot;smtp1.ibis.intec.co.jp&quot;
 oMsg.Configuration.Fields.Item (&quot;http://schemas.microsoft.com/cdo/configuration/smtpserverport&quot;) = 25
 oMsg.Configuration.Fields.Update
 oMsg.Send


**ファイルを読み書きする
 &#039;----------------------------------------------------------------------
 &#039; QuickLogger v.0.1
 &#039; Appends the date and a line of text to a file.
 &#039; Based on code written by Joshua Fitzgerald, 7/2005.
 &#039; Modified by Gina Trapani, 7/2006.
 &#039;----------------------------------------------------------------------
 Option Explicit
 
 Dim filename
 filename = &quot;worklog.txt&quot;
 
 Dim text
 text = InputBox(&quot;Add to &quot;&amp;filename&amp;&quot;:&quot;, &quot;Quick Logger&quot;)
 WriteToFile(text)
 
 Sub WriteToFile(text)
   Dim fso
   Dim textFile
   Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
   Set textFile = fso.OpenTextFile(filename, 8, True)
   textFile.WriteLine Now &amp; &quot; &quot; &amp; text
   textFile.Close
 End Sub    </description>
    <dc:date>2008-03-05T19:58:23+09:00</dc:date>
    <utime>1204714703</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/kogo/pages/1.html</link>
    <description>
      #search()
&amp;counter()人のアクセスがありました。

*[[Oracle]]
*[[Oracleのテーブルサイズ見積]]
*[[Oracle(PL/SQL)]]
*[[ruby]]
*[[javascript]]
*[[subversion]]
*[[wsh]]
*[[UNIX]]
*[[SQLServer]]    </description>
    <dc:date>2008-02-03T18:45:10+09:00</dc:date>
    <utime>1202031910</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/7.html">
    <title>ruby</title>
    <link>https://w.atwiki.jp/kogo/pages/7.html</link>
    <description>
      #contents()

*rubyのべんりなscript

**xmlを解析する

こんなxmlを解析するrubyスクリプト

 &lt;guitars title=&quot;My Guitars&quot;&gt;
    &lt;make name=&quot;Fender&quot;&gt;
       &lt;model sn=&quot;123456789&quot; year=&quot;2006&quot; country=&quot;japan&quot;&gt;
          &lt;name&gt;62 Reissue Stratocaster&lt;/name&gt;
          &lt;price&gt;750.00&lt;/price&gt;
          &lt;color&gt;Fiesta Red&lt;/color&gt;
       &lt;/model&gt;
       &lt;model sn=&quot;112233445&quot; year=&quot;2007&quot; country=&quot;mexico&quot;&gt;
          &lt;name&gt;60s Reverse Headstock Stratocaster&lt;/name&gt;
          &lt;price&gt;699.00&lt;/price&gt;
          &lt;color&gt;Olympic White&lt;/color&gt;
       &lt;/model&gt;
    &lt;/make&gt;
    &lt;make name=&quot;Squier&quot;&gt;
       &lt;model sn=&quot;445322344&quot; year=&quot;2003&quot; country=&quot;China&quot;&gt;
          &lt;name&gt;Standard Stratocaster&lt;/name&gt;
          &lt;price&gt;179.99&lt;/price&gt;
          &lt;color&gt;Cherry Sunburst&lt;/color&gt;
       &lt;/model&gt;
    &lt;/make&gt;
 &lt;/guitars&gt;

 require &quot;rexml/document&quot;
 include REXML    # so that we don’t have to prefix everything
                  # with REXML::...
 doc = Document.new File.new(&quot;guitars.xml&quot;)
 #全て表示する
 #print doc
 #名前を全て表示する
 doc.elements.each(&quot;guitars/make/model/name&quot;){ |element|
   puts element.text
 }
 #価格を全て取り出して合計する
 total = 0
 doc.elements.each(&quot;guitars/make/model/price&quot;) { |element|
    total += element.text.to_i
 }
 puts &quot;Total is $&quot; + total.to_s
 #属性yearを全て表示
 XPath.each( doc, &quot;//model/attribute::year&quot;){ |element|
   puts element
 }


**置換する
ruby -i.bak rep.rb data.txtって書くと、data.txtにある文字列を置換する。
元のファイルはrep.txt.bakという名前で保存される。

 #rep.rb 置換する
 while gets
   gsub(/INITIAL *[0-9]*K *NEXT *[0-9]*K/,&#039;INITIAL 8K NEXT 8K&#039;)
   print
 end


**excelファイルをテキストに変換
 #! C:\ruby-1.8\bin
 
 require &#039;win32ole&#039;
 
 fname = ARGV[0]
 
 def getAbsolutePath filename
   fso = WIN32OLE.new(&#039;Scripting.FileSystemObject&#039;)
   return fso.GetAbsolutePathName(filename)
 end
 filename = getAbsolutePath(fname)
 
 xl = WIN32OLE.new(&#039;Excel.Application&#039;)
 
 book = xl.Workbooks.Open(filename)
 begin
   puts &quot;&lt;h1&gt;&quot; + book.Name + &quot;&lt;/h1&gt;&quot;
 
   #各シートの処理
   book.Worksheets.each do |sheet|
     puts &quot;&lt;h2&gt;&quot; + sheet.Name + &quot;&lt;/h2&gt;&quot;
 
     #各行の処理
     sheet.UsedRange.Rows.each do |row|
 
       #各セルの内容を配列に入れる
       record = []
       row.Columns.each do |cell|
         record &lt;&lt; cell.Value
       end
       puts record.join
 
     end
   end
 ensure
   book.Close
   xl.Quit
 end

**excelファイルをgrep
 #! C:\ruby-1.8\bin
 #######################################
 # grepxls.rb: エクセルファイルをgrepする
 #     param1: ファイル名
 #     param2: grepする文字列
 #######################################
 require &#039;win32ole&#039;
 
 #パラメータ取得
 fname = ARGV[0]
 str = ARGV[1]
 
 re = Regexp.new(str)
 
 def getAbsolutePath filename
   fso = WIN32OLE.new(&#039;Scripting.FileSystemObject&#039;)
   return fso.GetAbsolutePathName(filename)
 end
 filename = getAbsolutePath(fname)
 
 xl = WIN32OLE.new(&#039;Excel.Application&#039;)
 
 book = xl.Workbooks.Open(filename)
 begin
   #各シートの処理
   book.Worksheets.each do |sheet|
 
     rownum = 0
     #各行の処理
     sheet.UsedRange.Rows.each do |row|
 
       rownum += 1
       #各セルの内容を配列に入れる
       record = []
       row.Columns.each do |cell|
         record &lt;&lt; cell.Value
       end
 
       #puts record.join(&quot;,&quot;)
       if record.join =~ re then
         puts book.Name + &quot;:&quot; + sheet.Name + &quot;:&quot; + rownum.to_s + &quot;:&quot; + record.join
       end
     end
   end
 ensure
   book.Close
   xl.Quit
 end    </description>
    <dc:date>2008-02-03T18:44:18+09:00</dc:date>
    <utime>1202031858</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/5.html">
    <title>Oracle</title>
    <link>https://w.atwiki.jp/kogo/pages/5.html</link>
    <description>
      #contents

*DBA

**表に対するオブジェクト権限を付与するSQLを既存環境からつくる

systemユーザでログインしてこのSQLを実行する

 SELECT &#039;GRANT &#039; || Privilege || &#039; ON &#039; || Table_Name || &#039; TO &#039; || grantee || &#039;;&#039;
 FROM DBA_TAB_PRIVS
 WHERE grantor =&#039;{付与元ユーザ}&#039;
 AND grantee = &#039;{付与先ユーザ}&#039;
 ORDER BY grantee;

結果はこんな感じ。

 GRANT ALTER ON emp TO {付与先ユーザ};
 GRANT SELECT ON emp TO {付与先ユーザ};
 GRANT INSERT ON emp TO {付与先ユーザ};
 ...

付与元ユーザでログインしてこのSQLを実行する


**SQLトレースを取るための準備

autotraceに必要なロールを作成し、テーブルへの参照権限を与える
 SQL&gt; connect sys as sysdba
 パスワードを入力してください:
 接続されました。
 SQL&gt; @/oracle/product/9.2.0/sqlplus/admin/plustrce.sql

検索を実行するユーザでplan_tableを作成
 SQL&gt; connect user/pwd@sid
 SQL&gt; @/oracle/product/9.2.0/rdbms/admin/utlxplan.sql


**データファイルをいじる
 alter database datafile &#039;/oracle/dbf/tbs_test_01.dbf&#039; resize 40m;
 alter tablespace tbs_md01 add datafile &#039;/oracle/dbf/tbs_test_02.dbf&#039; size 20m;

**レコード長をざっくり計算
 select
 count(*) as column_cnt,
 sum(DATA_LENGTH) as record_length
 from
 user_tab_columns
 where
 table_name = &#039;T_JYUTMISI&#039;

date型は7byte、number型は一律22byteで計算してます。


**コアレス（連続領域をくっつける）
 alter tablespace tbs_goto_hell coalesce;

でも、領域のお尻しか消せない。真ん中に空いた穴はそのまま。


**インポートとエクスポート
 imp {usr}/{pwd}@{sid} file=t_uri.dmp tables=T_uri log=imp_uri2.log ignore=y
 exp {usr}/{pwd}@{sid} file=t_uri.dmp tables=T_uri log=exp_uri.log direct=Y compress=Y

ignoreオプションをつけると、tableが存在していても無理やり詰め込む

**パッケージやファンクションの定義をみる

パッケージに含まれる関数・プロシージャのパラメータを一覧表示
 select *
 from ALL_ARGUMENTS
 where package_name=&#039;PK_TEST&#039;
 order by position;

パッケージ内の関数などを一覧表示
 select PROCEDURE_NAME
 from ALL_PROCEDURES
 where object_name = &#039;PK_TEST&#039;;


**PCTUSEDとPCTFREE

-PCTUSED(維持するべき使用率)が大きい
--ブロックが満杯の状態を常に維持できる 　　
→全件検索には有利
--INSERTのパフォーマンスは劣化する可能性あり 　　
→もともとDELETEされることがないなら、関係ない

-PCTFREE(データが増えた時のためにとる余裕％)が大きい
--更新によってレコード長が長くなる場合に向いている（移行行を防ぐことが
できる）
→UPDATEが行われない表には大きな値を設定する必要は無い。
--ブロックに余裕がある（空いている領域が多い→レコードは多く格納されて
いない）
→全件検索が中心の表には不利（1ブロックあたりのレコード数が少ないという
ことは同じ件数でも多くのブロックが必要）



**テーブルが実際に使っている領域サイズ
 SELECT DISTINCT
     a.OWNER,
     a.SEGMENT_TYPE,
     a.SEGMENT_NAME,
     c.CREATED,
     a.TABLESPACE_NAME,
     NVL(F.BYTES, 0) AS NO_USE_SIZE,
     NVL(G.BYTES, 0) AS TOTAL_SIZE ,
     NVL(G.MAXBYTES,0) AS MAX_SIZE,
     (NVL(G.BYTES, 0) - NVL(F.BYTES, 0)) AS USE_SIZE ,
     b.FILE_NAME,
     b.BYTES
 FROM
     dba_segments a,
     dba_data_files b,
     all_objects c,
    (SELECT
         TABLESPACE_NAME,
         SUM(BYTES) BYTES
     FROM
         DBA_FREE_SPACE
     GROUP BY
         TABLESPACE_NAME
    ) F,
    (SELECT
         TABLESPACE_NAME,
         SUM(BYTES) BYTES,
         SUM(MAXBYTES) MAXBYTES
     FROM
         DBA_DATA_FILES
     GROUP BY
         TABLESPACE_NAME
    ) G
 WHERE
     a.TABLESPACE_NAME = b.TABLESPACE_NAME       AND
     a.SEGMENT_NAME = c.OBJECT_NAME       AND
     a.OWNER = c.OWNER       AND
     c.SUBOBJECT_NAME IS NULL       AND
     a.TABLESPACE_NAME = f.TABLESPACE_NAME       AND
     a.TABLESPACE_NAME = g.TABLESPACE_NAME 
     AND c.OBJECT_NAME LIKE &#039;T_JYUT%&#039;
 ORDER BY
     a.OWNER,
     a.SEGMENT_TYPE,
     a.SEGMENT_NAME

**LOCK情報
 col USERNAME heading ユーザ名 format a7
 col to_char(LOGON_TIME,&#039;yyyy/mm/dd_hh24:mi:ss&#039;) heading 接続開始時刻 format a19
 col SID heading SID format 999
 col SERIAL# heading SERIAL# format 999999
 col MACHINE format a15
 col PROGRAM format a27
 col STATUS format a8
 col SERVER format a10
 col OSUSER format a14
 col OBJECT_NAME heading LOCK対象TBL format a20
 set pagesize 999
 set lin 120
 prompt
 prompt === 接続ユーザ 一覧 ===
 select USERNAME, SID, SERIAL#, to_char(LOGON_TIME,&#039;yyyy/mm/dd_hh24:mi:ss&#039;),
 STATUS, SERVER, OSUSER, MACHINE, PROGRAM
 from v$session where USERNAME is not null
 order by LOGON_TIME;
 prompt
 prompt === LOCK 一覧 ===
 select a.USERNAME, a.SID, a.SERIAL#, a.OSUSER, a.MACHINE, a.PROGRAM,
 c.OBJECT_NAME
 from v$session a, v$lock b, dba_objects c
 where a.SID = b.SID
 and b.ID1 = c.OBJECT_ID
 and c.OBJECT_ID in ( select ID1 from v$lock where TYPE = &#039;TM&#039; )
 order by b.SID, c.OBJECT_NAME;

**セッション情報
Oracleに接続中のセッション情報を表示する
セッションを切断する場合、systemユーザでログインして以下のコマンドを発行する
alter system kill session &#039;&lt;下記SQLで取得したSID_SERIAL&gt;&#039;;

 COLUMN SID_SERIAL FORMAT A15
 COLUMN osuser     FORMAT A15
 COLUMN username     FORMAT A10
 Column status format a10
 Column Program format a60
 SET PAGES 33
 SET LINE 4000
 SELECT
   sid || &#039;,&#039; || serial#  AS SID_SERIAL,
   username       ,
   status         ,
   osuser,
   program,to_char(LOGON_TIME,&#039;mm/dd hh24:mi&#039;)
 FROM
   V$SESSION;


** 指定したテーブルに付与されたインデックスをみる
 COLUMN TABLE_OWNER     FORMAT A10
 COLUMN TABLE_NAME      FORMAT A15
 COLUMN INDEX_NAME      FORMAT A20
 COLUMN COLUMN_NAME     FORMAT A20
 COLUMN COLUMN_POSITION FORMAT 99
 set line 2000
 SELECT
   TABLE_OWNER    ,
   TABLE_NAME     ,
   INDEX_NAME     ,
   COLUMN_NAME    ,
   COLUMN_POSITION
 FROM
   ALL_IND_COLUMNS
 WHERE
   TABLE_OWNER like UPPER(&#039;&amp;TableOwner&#039;) AND
   TABLE_NAME  like UPPER(&#039;&amp;TableName&#039;)
 ORDER BY
   TABLE_NAME     ,
   INDEX_NAME     ,
   COLUMN_POSITION


**現在実行されているSQL
 set pagesize 999
 set lin 120
 col USERNAME format a9
 col SID format 999
 col SERIAL# format 999999
 col OSUSER format a15
 col SQL_TEXT format a70
 SELECT S.USERNAME, S.OSUSER, S.SID, S.SERIAL#, T.ADDRESS, T.SQL_TEXT
 FROM V$SQLTEXT T, V$SESSION S
 WHERE S.SQL_ADDRESS = T.ADDRESS
 AND S.SQL_HASH_VALUE = T.HASH_VALUE
 AND S.USERNAME is not null
 ORDER BY S.OSUSER, T.ADDRESS, T.PIECE;


**コンパイルされているソースを見る
 set line 4000
 set pages 0
 select
   lpad(to_char(line),5,&#039;0&#039;) || &#039;: &#039; ||  text
 from
   all_source
 where
   owner = upper(&#039;&amp;uid&#039;) and
   name like upper(&#039;%&amp;pk_name%&#039;) and
   line &gt;= &amp;line_from and
   line &lt;= &amp;line_to and
   type = &#039;PACKAGE BODY&#039;
 /


**表領域を指定して格納されているオブジェクト、サイズを見る
 set line 5000
 col tablespace_name format a30
 col SEGMENT_NAME format a30
 select
        TABLESPACE_NAME
        ,SEGMENT_NAME
        ,FILE_ID
        ,BLOCK_ID
        ,BYTES/1024 AS SIZE_KB
        ,BLOCKS
 from DBA_EXTENTS
 where TABLESPACE_NAME = &#039;TBS_WK01_I&#039;
 union
 select
        TABLESPACE_NAME
        ,&#039;&lt;free&gt;&#039;
        ,FILE_ID
        ,BLOCK_ID
        ,BYTES/1024 AS SIZE_KB
        ,BLOCKS
 from DBA_FREE_SPACE
 where TABLESPACE_NAME = &#039;TBS_WK01_I&#039;
 order by file_id,block_id

**表領域ごとの空き容量
 col tablespace_name format a30
 col free_kb format 999,999,999,999,999
 select
     TABLESPACE_NAME,
     SUM(FREE_KB) AS FREE_KB
 from
 (
     select
            A.TABLESPACE_NAME
            ,A.BYTES/1024 AS FREE_KB
     from DBA_FREE_SPACE A,
          (
            SELECT TABLESPACE_NAME,FILE_ID,MAX(BLOCK_ID) AS max_block
            FROM DBA_EXTENTS
            GROUP BY TABLESPACE_NAME,FILE_ID
          ) B
     where A.TABLESPACE_NAME = B.TABLESPACE_NAME
       and A.FILE_ID = B.FILE_ID
       and A.BLOCK_ID &gt; B.max_block
 )
 GROUP BY
     TABLESPACE_NAME
 /

**表領域ごとの使用率
 col TABLESPACE_NAME format a20
 col USED format a20
 set line 2000
 select
     A.TABLESPACE_NAME,
     A.INITIAL_EXTENT,
     A.NEXT_EXTENT,
     B.USED_SIZE_KB,
     To_Char( Round( B.USED_SIZE_KB / A.INITIAL_EXTENT * 100 ) ) || &#039;%&#039; AS USED 
 from
     dba_tablespaces A,
     (   /* tablespaceの使用サイズを計算 */
         select
             TABLESPACE_NAME,
             SUM(SIZE_KB) AS USED_SIZE_KB
         from
         (
             select
                    TABLESPACE_NAME
                    ,SEGMENT_NAME
                    ,FILE_ID
                    ,BLOCK_ID
                    ,BYTES/1024 AS SIZE_KB
                    ,BLOCKS
             from DBA_EXTENTS
             union
             select
                    TABLESPACE_NAME
                    ,&#039;&lt;free&gt;&#039;
                    ,FILE_ID
                    ,BLOCK_ID
                    ,BYTES/1024 AS SIZE_KB
                    ,BLOCKS
             from DBA_FREE_SPACE
         )
         GROUP BY
             TABLESPACE_NAME
     ) B
 where
     A.TABLESPACE_NAME = B.TABLESPACE_NAME
 /


**表領域ごとの使用量、空き、無駄領域を計算する
 set line 2000
 col tablespace_name format a30
 col data_kb format 999,999,999,999
 col free_kb format 999,999,999,999
 col lost_kb format 999,999,999,999
 col used_pct format a10
 select
     TABLESPACE_NAME,
     SUM(DATA_KB) AS DATA_KB,
     SUM(FREE_KB) AS FREE_KB,
     SUM(LOST_KB) AS LOST_KB,
     To_CHAR( 
       Round( (SUM(DATA_KB) + SUM(LOST_KB)) / 
              (SUM(DATA_KB) + SUM(FREE_KB) + SUM(LOST_KB)) *
               100) 
       ) || &#039;%&#039; AS USED_PCT
 from
 (
     select
            TABLESPACE_NAME
            ,SEGMENT_NAME
            ,FILE_ID
            ,BLOCK_ID
            ,BYTES/1024 AS DATA_KB
            ,0          AS FREE_KB
            ,0          AS LOST_KB
     from DBA_EXTENTS
     union
     select
            A.TABLESPACE_NAME
            ,&#039;&lt;free&gt;&#039;
            ,A.FILE_ID
            ,A.BLOCK_ID
            ,0            AS DATA_KB
            ,A.BYTES/1024 AS FREE_KB
            ,0            AS LOST_KB
     from DBA_FREE_SPACE A,
          (
            SELECT TABLESPACE_NAME,FILE_ID,MAX(BLOCK_ID) AS max_block
            FROM DBA_EXTENTS
            GROUP BY TABLESPACE_NAME,FILE_ID
          ) B
     where A.TABLESPACE_NAME = B.TABLESPACE_NAME
       and A.FILE_ID = B.FILE_ID
       and A.BLOCK_ID &gt; B.max_block
     union
     select
            A.TABLESPACE_NAME
            ,&#039;&lt;free&gt;&#039;
            ,A.FILE_ID
            ,A.BLOCK_ID
            ,0            AS DATA_KB
            ,0            AS FREE_KB
            ,A.BYTES/1024 AS LOST_KB
     from DBA_FREE_SPACE A,
          (
            SELECT TABLESPACE_NAME,FILE_ID,MAX(BLOCK_ID) AS max_block
            FROM DBA_EXTENTS
            GROUP BY TABLESPACE_NAME,FILE_ID
          ) B
     where A.TABLESPACE_NAME = B.TABLESPACE_NAME
       and A.FILE_ID = B.FILE_ID
       and A.BLOCK_ID &lt; B.max_block
 )
 GROUP BY
     TABLESPACE_NAME
 /    </description>
    <dc:date>2006-12-06T19:55:11+09:00</dc:date>
    <utime>1165402511</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/14.html">
    <title>javascript</title>
    <link>https://w.atwiki.jp/kogo/pages/14.html</link>
    <description>
      *背景色のフェードアウト

 &lt;html&gt;
 &lt;head&gt;
 &lt;script type=&quot;text/javascript&quot;&gt;
 cnt = 0;
 function fadeBgColor(targetID) {
   pat = &#039;fedcba9876543210&#039;
   pat = &#039;0123456789abcdef&#039;
   itv = 100;
   c = pat.charAt(cnt++);
   document.getElementById(targetID).style.backgroundColor =&quot;#&quot;+c+c+c+c+c+c
   if(cnt &lt; pat.length)
   setTimeout(&quot;fadeBgColor(&#039;&quot; + targetID+ &quot;&#039;)&quot;,itv);
   if(cnt == pat.length)cnt = 0;
 }
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;body id=&quot;all&quot; onLoad=&quot;fadeBgColor(&#039;all&#039;)&quot;&gt;
 &lt;div&gt;
 &lt;h1&gt;fade out&lt;/h1&gt;
 &lt;/div&gt;
 &lt;/body&gt;
 &lt;/html&gt;    </description>
    <dc:date>2006-11-17T10:59:38+09:00</dc:date>
    <utime>1163728778</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/13.html">
    <title>subversion</title>
    <link>https://w.atwiki.jp/kogo/pages/13.html</link>
    <description>
      *subversion

**TortoiseSVNの差分比較で文字化けする
スペースやタブが半角の「サ」や「キ」になってしまう。
これは、「ビュー」&gt;「空白を表示」メニューを「非表示」に指定するととりあえず気にならない。    </description>
    <dc:date>2006-11-07T19:23:00+09:00</dc:date>
    <utime>1162894980</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/12.html">
    <title>Oracleのテーブルサイズ見積</title>
    <link>https://w.atwiki.jp/kogo/pages/12.html</link>
    <description>
      coldfusionで作ったけど意味は覚えてない。
このまま忘れてしまうのも勿体ないので残す。
もし必要になったらソースを読んで考える。



 &lt;CFSETTING ENABLECFOUTPUTONLY=&quot;YES&quot;&gt;
 
 &lt;CFSET Variables.owner = &quot;&quot;&gt;
 &lt;CFSET Variables.tname = &quot;&quot;&gt;
 &lt;CFSET Variables.records = &quot;&quot;&gt;
 &lt;CFSET Variables.data_length = 0&gt;
 &lt;CFSET Variables.sum_rowsize = 0&gt;
 &lt;CFSET Variables.err = FALSE&gt;
 
 &lt;!--- [[Oracle]]パラメータ ---&gt;
 &lt;!--- table ---&gt;
 &lt;CFSET Variables.ora_KDBH = 14&gt;
 &lt;CFSET Variables.ora_KTBIT = 24&gt;
 &lt;CFSET Variables.ora_INITRANS = 3&gt;
 &lt;CFSET Variables.ora_KTBBH = 48&gt;
 &lt;CFSET Variables.ora_UB4 = 4&gt;
 &lt;CFSET Variables.ora_KCBH = 20&gt;
 &lt;CFSET Variables.ora_DB_BLOCK_SIZE = 8192&gt;
 &lt;CFSET Variables.ora_PCTFREE = 10&gt;
 &lt;CFSET Variables.ora_KDBT = 4&gt;
 &lt;CFSET Variables.ora_UB1 = 1&gt;
 &lt;CFSET Variables.ora_SB2 = 2&gt;
 &lt;CFSET Variables.hsize = Variables.ora_DB_BLOCK_SIZE
                  - Variables.ora_KCBH
                  - Variables.ora_UB4
                  - Variables.ora_KTBBH
                  - (Variables.ora_INITRANS - 1) * Variables.ora_KTBIT
                  - Variables.ora_KDBH&gt;
 &lt;CFSET Variables.availSpace = Ceiling(Variables.hsize * (1 - Variables.ora_PCTFREE / 100))
                  - Variables.ora_KDBT&gt;
 &lt;!--- index ---&gt;
 &lt;CFSET Variables.ora_fixedHeader = 113&gt;
 &lt;CFSET Variables.ora_INITRANS = 10&gt;
 &lt;CFSET Variables.ora_PCTFERR = 10&gt;
 &lt;CFSET Variables.transactionHeader = 24 * Variables.ora_INITRANS&gt;
 &lt;CFSET Variables.ora_entryHeader = 2&gt;
 &lt;CFSET Variables.ora_RowidLength = 6&gt;
 &lt;CFSET Variables.blockHeaderSize = Variables.ora_fixedHeader + Variables.transactionHeader&gt;
 &lt;CFSET Variables.availableDataSpaceParBlock = (Variables.ora_DB_BLOCK_SIZE - Variables.blockHeaderSize)
                                             - ((Variables.ora_DB_BLOCK_SIZE - Variables.blockHeaderSize) * (Variables.ora_PCTFERR / 100))&gt;
 
 
 
 &lt;!--- form情報を取得する ---&gt;
 &lt;CFIF IsDefined(&quot;form.owner&quot;) EQ TRUE&gt;
     &lt;CFSET Variables.owner = UCase(form.owner)&gt;
 &lt;/CFIF&gt;
 &lt;CFIF IsDefined(&quot;form.tname&quot;) EQ TRUE&gt;
     &lt;CFSET Variables.tname = UCase(form.tname)&gt;
 &lt;/CFIF&gt;
 &lt;CFIF IsDefined(&quot;form.records&quot;) EQ TRUE AND Trim(form.records) NEQ &quot;&quot;&gt;
     &lt;CFSET Variables.records = form.records&gt;
 &lt;/CFIF&gt;
 &lt;CFIF IsDefined(&quot;form.memo&quot;) EQ TRUE&gt;
     &lt;CFSET Variables.memo = form.memo&gt;
 &lt;CFELSE&gt;
     &lt;CFSET Variables.memo = &quot;&quot;&gt;
 &lt;/CFIF&gt;
 &lt;CFIF IsDefined(&quot;Form.db&quot;) EQ TRUE&gt;
     &lt;CFSET Variables.db = Form.db&gt;
 &lt;CFELSE&gt;
     &lt;CFSET Variables.db = &quot;0&quot;&gt;
 &lt;/CFIF&gt;
 
 &lt;!--- クリアボタン押下時 ---&gt;
 &lt;CFIF IsDefined(&quot;form.btn_clear&quot;) EQ TRUE&gt;
     &lt;CFSET Variables.owner = &quot;&quot;&gt;
     &lt;CFSET Variables.tname = &quot;&quot;&gt;
     &lt;CFSET Variables.records = &quot;&quot;&gt;
     &lt;CFSET Variables.memo = &quot;&quot;&gt;
     &lt;CFSET Variables.db = &quot;0&quot;&gt;
     &lt;cfoutput&gt;入力欄をクリアしました。&lt;BR&gt;&lt;/cfoutput&gt;
 &lt;/CFIF&gt;
 
 &lt;!--- データソースの設定 ---&gt;
 &lt;CFIF Variables.db EQ &quot;0&quot;&gt;
     &lt;CFSET Variables.DATASOURCE = Application.CM_DS&gt;
 &lt;CFELSE&gt;
     &lt;CFSET Variables.DATASOURCE = Application.CM_DSS&gt;
 &lt;/CFIF&gt;
 
 &lt;!--- 計算ボタン押下時 ---&gt;
 &lt;CFIF IsDefined(&quot;form.btn_calc&quot;) EQ TRUE&gt;
     &lt;!--- 入力チェック ---&gt;
     &lt;CFIF Trim(Variables.owner) EQ &quot;&quot;&gt;
         &lt;cfoutput&gt;&lt;font color=&quot;red&quot;&gt;テーブル所有者は必須入力です。&lt;BR&gt;&lt;/font&gt;&lt;/cfoutput&gt;
         &lt;CFSET Variables.err = TRUE&gt;
     &lt;/CFIF&gt;
     &lt;CFIF Trim(Variables.tname) EQ &quot;&quot;&gt;
         &lt;cfoutput&gt;&lt;font color=&quot;red&quot;&gt;テーブル名は必須入力です。&lt;BR&gt;&lt;/font&gt;&lt;/cfoutput&gt;
         &lt;CFSET Variables.err = TRUE&gt;
     &lt;/CFIF&gt;
     &lt;CFIF Trim(Variables.records) EQ &quot;&quot;&gt;
         &lt;cfoutput&gt;&lt;font color=&quot;red&quot;&gt;想定件数は必須入力です。&lt;BR&gt;&lt;/font&gt;&lt;/cfoutput&gt;
         &lt;CFSET Variables.err = TRUE&gt;
     &lt;CFELSE&gt;
         &lt;CFIF IsNumeric(Variables.records) EQ FALSE&gt;
             &lt;cfoutput&gt;&lt;font color=&quot;red&quot;&gt;想定件数には数値を入れて下さい。&lt;BR&gt;&lt;/font&gt;&lt;/cfoutput&gt;
             &lt;CFSET Variables.err = TRUE&gt;
         &lt;/CFIF&gt;
     &lt;/CFIF&gt;
     &lt;CFIF Variables.err EQ FALSE&gt;
         &lt;CFQUERY NAME=&quot;GET_TABLEINFO&quot; DATASOURCE=&quot;#Variables.DATASOURCE#&quot; DBTYPE=&quot;#Application.CM_DT#&quot;&gt;
             SELECT
                 column_id, 
                 column_name,
                 data_type,
                 DECODE(data_type,&#039;NUMBER&#039;,data_precision,data_length) ||
                     DECODE(data_scale,0,NULL,NULL,NULL, &#039;,&#039;||data_scale) as col_size,
                 DECODE(nullable,&#039;Y&#039;,&#039;NULL&#039;,&#039;NOT NULL&#039;) as null_opt,
                 DECODE(data_type,&#039;NUMBER&#039;,data_precision,data_length) as data_length
             FROM
                 ALL_TAB_COLUMNS
             WHERE
                 owner = &#039;#Variables.owner#&#039; AND
                 table_name = &#039;#Variables.tname#&#039;
             ORDER by
                 column_id
         &lt;/CFQUERY&gt;
         &lt;CFIF GET_TABLEINFO.RecordCount EQ 0&gt;
             &lt;cfoutput&gt;&lt;font color=&quot;red&quot;&gt;データがありません。&lt;BR&gt;&lt;/font&gt;&lt;/cfoutput&gt;
             &lt;CFSET Variables.err = TRUE&gt;
         &lt;/CFIF&gt;
     &lt;/CFIF&gt;
 
     &lt;CFIF Variables.err EQ FALSE&gt;
         &lt;CFQUERY NAME=&quot;GET_INDEX&quot; DATASOURCE=&quot;#Variables.DATASOURCE#&quot; DBTYPE=&quot;#Application.CM_DT#&quot;&gt;
             SELECT
                 owner,
                 index_name
             FROM
                 ALL_INDEXES
             WHERE
                 owner = &#039;#Variables.owner#&#039; AND
                 table_owner = &#039;#Variables.owner#&#039; AND
                 table_name = &#039;#Variables.tname#&#039;
             ORDER BY
                 index_name
         &lt;/CFQUERY&gt;
     &lt;/CFIF&gt;
 
 &lt;/CFIF&gt;
 
 
 &lt;!--- 
 ****************************************************
                     画面表示
 ****************************************************
  ---&gt;
 &lt;CFSETTING ENABLECFOUTPUTONLY=&quot;NO&quot;&gt;
 &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;
 &lt;html lang=&quot;ja&quot;&gt;
 &lt;head&gt;
     &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=Shift_JIS&quot;&gt;
     &lt;title&gt;データベース領域見積試算画面&lt;/title&gt;
     &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;../default.css&quot;&gt;
     &lt;style TYPE=&quot;text/css&quot;&gt;
     &lt;!--
         div.query_item { margin-left: 2em; }
         table { margin-left: 2em }
     --&gt;
     &lt;/style&gt;
 &lt;/head&gt;
 &lt;body&gt;
 &lt;h1&gt;データベース領域見積&lt;/h1&gt;
 &lt;p&gt;開発環境の定義情報と想定件数からテーブル、インデックスに必要なサイズを見積ます。
 &lt;!--- 
 **************************************
             検索条件表示
 **************************************
  ---&gt;
 &lt;div class=&quot;query_item&quot;&gt;
 &lt;form name=&quot;f1&quot; method=&quot;post&quot; action=&quot;DbEstimate.cfm&quot;&gt;
     &lt;CFOUTPUT&gt;
     環境：
     &lt;cfif Variables.db EQ &quot;0&quot;&gt;
         &lt;input type=&quot;radio&quot; name=&quot;db&quot; value=&quot;0&quot; checked&gt;本番
         &lt;input type=&quot;radio&quot; name=&quot;db&quot; value=&quot;1&quot;&gt;整備
     &lt;cfelse&gt;
         &lt;input type=&quot;radio&quot; name=&quot;db&quot; value=&quot;0&quot;&gt;本番
         &lt;input type=&quot;radio&quot; name=&quot;db&quot; value=&quot;1&quot; checked&gt;整備
     &lt;/cfif&gt;&lt;br&gt;
 
     テーブル所有者：&lt;input type=&quot;text&quot; name=&quot;owner&quot; value=&quot;#Variables.owner#&quot;&gt;
     テーブル名：&lt;input type=&quot;text&quot; size=&quot;40&quot; name=&quot;tname&quot; value=&quot;#Variables.tname#&quot;&gt;
     想定件数：&lt;input type=&quot;text&quot; name=&quot;records&quot; value=&quot;#Variables.records#&quot;&gt;
     &lt;br&gt;
     備考：&lt;br&gt;
     &lt;textarea name=&quot;memo&quot; cols=80 rows=4&gt;#Variables.memo#&lt;/textarea&gt;&lt;br&gt;
     &lt;/CFOUTPUT&gt;
     &lt;input type=&quot;submit&quot; name=&quot;btn_calc&quot; value=&quot;計算&quot;&gt;
     &lt;input type=&quot;submit&quot; name=&quot;btn_clear&quot; value=&quot;入力クリア&quot;&gt;&lt;br&gt;
 &lt;/form&gt;
 &lt;/div&gt;
 &lt;br&gt;
 &lt;!--- クリアボタン押下時 ---&gt;
 &lt;CFIF IsDefined(&quot;form.btn_clear&quot;) EQ TRUE&gt;
     &lt;CFABORT&gt;
 &lt;/CFIF&gt;
 
 &lt;!--- 
 **************************************
             結果表示
 **************************************
  ---&gt;
 &lt;!--- 計算ボタン押下時 ---&gt;
 &lt;CFIF IsDefined(&quot;form.btn_calc&quot;) EQ TRUE AND Variables.err EQ FALSE&gt;
     &lt;h2&gt;テーブル&lt;/h2&gt;
     &lt;cfoutput&gt;
     &lt;h3&gt;#Variables.tname#&lt;/h3&gt;
     &lt;table border=&quot;1&quot;&gt;
     &lt;!--- &lt;caption&gt;#Variables.tname#&lt;/caption&gt; ---&gt;
     &lt;/cfoutput&gt;
         &lt;th&gt;No&lt;/th&gt;
         &lt;th&gt;カラム名&lt;/th&gt;
         &lt;th&gt;属性&lt;/th&gt;
         &lt;th&gt;項目長&lt;/th&gt;
         &lt;th&gt;NULL制約&lt;/th&gt;
         &lt;th&gt;データ長&lt;/th&gt;
     &lt;CFOUTPUT QUERY=&quot;GET_TABLEINFO&quot;&gt;
         &lt;tr&gt;
             &lt;!--- カラム番号 ---&gt;
             &lt;td align=&quot;right&quot;&gt;#GET_TABLEINFO.column_id#&lt;/td&gt;
 
             &lt;!--- カラム名 ---&gt;
             &lt;td&gt;#GET_TABLEINFO.column_name#&lt;/td&gt;
 
             &lt;!--- データ属性 ---&gt;
             &lt;td&gt;#GET_TABLEINFO.data_type#&lt;/td&gt;
 
             &lt;!--- 項目長 ---&gt;
             &lt;td align=&quot;right&quot;&gt;#GET_TABLEINFO.col_size#&lt;/td&gt;
 
             &lt;!--- NULL制約 ---&gt;
             &lt;td&gt;#GET_TABLEINFO.null_opt#&lt;/td&gt;
 
             &lt;!--- データ長 ---&gt;
             &lt;CFIF GET_TABLEINFO.data_length GT 250&gt;
                 &lt;CFSET Variables.data_length = GET_TABLEINFO.data_length + 3&gt;
             &lt;CFELSE&gt;
                 &lt;CFSET Variables.data_length = GET_TABLEINFO.data_length + 1&gt;
             &lt;/CFIF&gt;
             &lt;CFSET Variables.sum_rowsize = Variables.sum_rowsize + Variables.data_length&gt;
             &lt;td align=&quot;right&quot;&gt;#Variables.data_length#&lt;/td&gt;
         &lt;/tr&gt;
     &lt;/CFOUTPUT&gt;
     &lt;/table&gt;&lt;br&gt;
 
 
     &lt;!--- 
     **************************************
                 DBサイズ見積
     **************************************
     ---&gt;
     &lt;CFOUTPUT&gt;
     &lt;CFSET Variables.sum_rowsize = Variables.sum_rowsize + ( 3 * 1 )&gt;
     &lt;table border=&quot;1&quot;&gt;
     &lt;!--- &lt;caption&gt;見積り情報&lt;/caption&gt; ---&gt;
         &lt;CFIF Variables.ora_UB1*3 + Variables.ora_UB4 + Variables.ora_SB2 GT Variables.sum_rowsize&gt;
             &lt;CFSET Variables.row_space = (Variables.ora_UB1*3 + Variables.ora_UB4 + Variables.ora_SB2) + Variables.ora_SB2&gt;
         &lt;CFELSE&gt;
             &lt;CFSET Variables.row_space = Variables.sum_rowsize + Variables.ora_SB2&gt;
         &lt;/CFIF&gt;
         &lt;tr&gt;&lt;td&gt;１レコードが使用するサイズ&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.row_space# byte&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
         &lt;CFSET Variables.NumOfRowsInBlock = Fix( Variables.availSpace / Variables.row_space )&gt;
         &lt;tr&gt;&lt;td&gt;１ブロック内に格納できるレコード件数&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.NumOfRowsInBlock# 件&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
         &lt;tr&gt;&lt;td&gt;想定レコード件数(未入力の場合１件とする)&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.records# 件&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
         &lt;CFSET Variables.use_blocks = Ceiling( Variables.records / Variables.NumOfRowsInBlock )&gt;
         &lt;tr&gt;&lt;td&gt;使用するブロック数&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.use_blocks# ブロック&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
         &lt;CFSET Variables.table_size = Variables.use_blocks * Variables.ora_DB_BLOCK_SIZE / 1024&gt;
         &lt;tr&gt;&lt;td&gt;&lt;b&gt;必要なサイズ&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;#Variables.table_size#K&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
 
         &lt;CFSET Variables.init_records = (Variables.table_size / 8) * Variables.NumOfRowsInBlock&gt;
         &lt;tr&gt;&lt;td&gt;格納可能件数&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.init_records# 件&lt;/td&gt;&lt;/tr&gt;
     &lt;/table&gt;
     &lt;/CFOUTPUT&gt;
     &lt;br&gt;
 
     &lt;CFIF GET_INDEX.RecordCount GT 0&gt;
     &lt;h2&gt;インデックス情報&lt;/h2&gt;
         &lt;CFSET Variables.preColPos = 0&gt;
 
         &lt;CFOUTPUT QUERY=&quot;GET_INDEX&quot;&gt;
             &lt;CFSET Variables.total_length = 0&gt;
 
     &lt;h3&gt;#GET_INDEX.index_name#&lt;/h3&gt;
             &lt;table border=&quot;1&quot;&gt;
             &lt;!--- &lt;caption&gt;#GET_INDEX.index_name#&lt;/caption&gt; ---&gt;
                 &lt;th&gt;No&lt;/th&gt;
                 &lt;th&gt;カラム名&lt;/th&gt;
                 &lt;th&gt;項目長&lt;/th&gt;
 
             &lt;CFQUERY NAME=&quot;GET_INDEXINFO&quot; DATASOURCE=&quot;#Variables.DATASOURCE#&quot; DBTYPE=&quot;#Application.CM_DT#&quot;&gt;
                 SELECT
                     I.column_position,
                     I.column_name,
                     DECODE(T.data_type,&#039;NUMBER&#039;,T.data_precision,T.data_length) as column_length
                 FROM
                     ALL_IND_COLUMNS I,
                     ALL_TAB_COLUMNS T
                 WHERE
                     I.table_owner = T.owner AND
                     I.table_name = T.table_name AND
                     I.column_name = T.column_name AND
                     I.index_owner = &#039;#GET_INDEX.owner#&#039; AND
                     I.index_name = &#039;#GET_INDEX.index_name#&#039;
                 ORDER BY
                     column_position
             &lt;/CFQUERY&gt;
             &lt;CFLOOP QUERY=&quot;GET_INDEXINFO&quot;&gt;
                 &lt;tr&gt;
                     &lt;td&gt;#GET_INDEXINFO.column_position#&lt;br&gt;&lt;/td&gt;
                     &lt;td&gt;#GET_INDEXINFO.column_name#&lt;br&gt;&lt;/td&gt;
                     &lt;td&gt;#GET_INDEXINFO.column_length#&lt;br&gt;&lt;/td&gt;
                 &lt;/tr&gt;
                 &lt;CFSET Variables.total_length = Variables.total_length + GET_INDEXINFO.column_length&gt;
             &lt;/CFLOOP&gt;
             &lt;/table&gt;&lt;br&gt;
             &lt;!--- 
             **************************************
                     インデックスサイズ見積
             **************************************
             ---&gt;
             &lt;table border=&quot;1&quot;&gt;
             &lt;!--- &lt;caption&gt;見積り情報&lt;/caption&gt; ---&gt;
                 &lt;tr&gt;&lt;td&gt;項目長の合計&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.total_length#&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
                 &lt;tr&gt;&lt;td&gt;カラム数&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#GET_INDEXINFO.RecordCount#&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
                 &lt;CFSET Variables.avgEntrySize = Variables.ora_entryHeader
                                               + Variables.ora_RowidLength
                                               + GET_INDEXINFO.RecordCount
                                               + Variables.total_length&gt;
                 &lt;tr&gt;&lt;td&gt;avg_entry_size&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.avgEntrySize#&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
                 &lt;CFSET Variables.blockForIndex = 1.05 * (
                                                     (Variables.init_records * 1.3 * Variables.avgEntrySize)
                                                    / (Fix(Variables.availableDataSpaceParBlock/Variables.avgEntrySize) * Variables.avgEntrySize))&gt;
                 &lt;tr&gt;&lt;td&gt;block for index&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;#Variables.blockForIndex#&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
 
                 &lt;CFIF Variables.ora_DB_BLOCK_SIZE * Ceiling(Variables.blockForIndex) / 1024 EQ 4&gt;
                     &lt;CFSET Variables.index_size = 8&gt;
                 &lt;CFELSE&gt;
                     &lt;CFSET Variables.index_size = Variables.ora_DB_BLOCK_SIZE * Ceiling(Variables.blockForIndex) / 1024&gt;
                 &lt;/CFIF&gt;
                 &lt;tr&gt;&lt;td&gt;&lt;b&gt;必要なサイズ&lt;/b&gt;&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;&lt;b&gt;#Variables.index_size#K&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
             &lt;/table&gt;&lt;br&gt;
         &lt;/CFOUTPUT&gt;
     &lt;/CFIF&gt;
 &lt;/CFIF&gt;
 &lt;/body&gt;
 &lt;/html&gt;    </description>
    <dc:date>2006-10-25T20:53:40+09:00</dc:date>
    <utime>1161777220</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/11.html">
    <title>UNIX</title>
    <link>https://w.atwiki.jp/kogo/pages/11.html</link>
    <description>
      *忘れていたコマンド

**入力を受け取る
 echo &quot;運用日を入力して下さい[yyyymmdd]&quot;
 set datetmp = $&lt;
 set unyodate = `date_np $datetmp 1`
 echo $unyodate    </description>
    <dc:date>2006-09-27T18:50:52+09:00</dc:date>
    <utime>1159350652</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/10.html">
    <title>Oracle(PL/SQL)</title>
    <link>https://w.atwiki.jp/kogo/pages/10.html</link>
    <description>
      *PL/SQL
**いつも忘れる例外識別子

 ACCESS_INTO_NULL         未初期化オブジェクトに代入した ORA-06530
 COLLECTION_IS_NULL       コレクション未初期化 ORA-06531
 CURSOR_ALREADY_OPEN      カーソルが既にオープンされている ORA-06511
 DUP_VAL_ON_INDEX         キーが重複した ORA-00001
 INVALID_CURSOR           カーソルがオープンされていない ORA-01001
 INVALID_NUMBER           数値が正しくない ORA-01722
 LOGIN_DENIED             ログインできない ORA-01017
 NO_DATA_FOUND            SELECT INTO レコードなし ORA-01403
 NOT_LOGGED_ON            ログインできていない ORA-01012
 PROGRAM_ERROR            PL/SQL 内部エラー ORA-06501
 ROWTYPE_MISMATCH         互換性なし ORA-06504
 STORAGE_ERROR            PL/SQL メモリ不足 ORA-06500
 SUBSCRIPT_BEYOND_COUNT   コネクション要素オーバ ORA-06533
 SUBSCRIPT_OUTSIDE_LIMIT  有効範囲外添字 ORA-06532
 TIMEOUT_ON_RESOURCE      タイムアウト ORA-00051
 TOO_MANY_ROWS            複数行あり ORA-01422
 VALUE_ERROR              算術エラー ORA-06502
 ZERO_DIVIDE              ゼロの割り算 ORA-01476

-SQLCODEには値がコードがマイナス付きで設定される。ORA-06511 なら、-6511。但し、ORA-01403 は、SQLCODE として、+100 が返るので注意する。

-SQLERRM では、SQLCODE に対応するエラーメッセージを取得できる。errmsg := sqlerrm(-6511);    </description>
    <dc:date>2006-09-27T18:49:32+09:00</dc:date>
    <utime>1159350572</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/kogo/pages/9.html">
    <title>SQLServer</title>
    <link>https://w.atwiki.jp/kogo/pages/9.html</link>
    <description>
      *SQLServerの便利機能

**手軽なワークテーブルをつくる
 select * into #emp_tmp from emp

&quot;#&quot;で始まる名前はワークテーブルとみなされる。
DBの接続が切れた時点で削除される。
[[Oracle]]にもあったらいいのに。    </description>
    <dc:date>2006-09-27T18:23:33+09:00</dc:date>
    <utime>1159349013</utime>
  </item>
  </rdf:RDF>
