1 名前:ますっち mailto:m_mitsuo@naver.co.jp [03/07/24 01:08] 初心者から管理者までオラクルでわからないことは ここの皆で解決していきましょう!!! 前スレ・関連サイト:>>2
136 名前:デフォルトの名無しさん [03/09/23 08:33] >>133 バックアップ要件がわからないからなんとも答えようがないな。 とりあえず、
137 名前:136の続き [03/09/23 08:37] DB止めてもいいんならデータファイルと制御ファイルをコピーしときな。 止められないんなら、初心者には難しいよ。
138 名前:デフォルトの名無しさん mailto:sage [03/09/23 08:46] >>135 「普通」だけではなんとも言えんが。 条件を満たしていれば、インストール&起動は可能。
139 名前:デフォルトの名無しさん mailto:sage [03/09/23 08:47] >>133 他にも、コマンドプロンプトから、EXPコマンドとかな。 まずは、管理者向けマニュアル読め。
140 名前:デフォルトの名無しさん [03/09/24 18:26] select * from tab で全テーブルでる。 ed でエディタ起動。
141 名前:デフォルトの名無しさん [03/09/24 18:26] conn aaaa/rrrr@iiii でdb繋ぎ直し
142 名前:デフォルトの名無しさん mailto:sage [03/09/24 18:54] >>140-141 まとめて1ポストでおながいします
143 名前:デフォルトの名無しさん [03/09/26 10:30] わかりますた。 select * from tab で全テーブルでる。 ed でエディタ起動。 conn aaaa/rrrr@iiii でdb繋ぎ直し
144 名前:ますっち [03/09/26 11:07] 端末1と端末2の2つのマシンがOracleに接続している。 端末1からPL/SQLを実行する。 端末2からも同じPL/SQLを実行した場合 待ち状態にして端末1の処理が終了後、端末2の処理を実行したい。 ようするに、このPL/SQLが実行中に同じPL/SQLを実行した場合 後者を待ち状態にして前者が終了後に実行するというのを 実現したいのですがどうやったら良いでしょうか? PL/SQLだけで可能でしょうか?
145 名前:デフォルトの名無しさん mailto:sage [03/09/26 16:31] >>144 処理状況を書き込む表作っちゃうのが簡単。 それがイヤならDBMS_PIPE(だった?)とか。
146 名前:デフォルトの名無しさん [03/09/27 00:51] >>144 それってpl/sqlの中身はDBへの変更が主だったりする? ソウじゃなくてファイル出力処理とかDBとは関係ない事? 前者ならロックかけておけば後者は処理途中で必然的に待ち状態になるとおもうんだけどな。 前者がコミット切った時点で後者の処理が走ると思うけど。
147 名前:ますっち [03/10/02 10:42] >>145-146 ありがとうございます!!! DBへの更新系の処理ではないので Oracle側でやるのではなく アプリ側で対応するようにしました。。。
148 名前:ますっち [03/10/02 10:44] SQLServerでOracleのパーティション表と 同じ機能のものってありますか??
149 名前:デフォルトの名無しさん mailto:sage [03/10/02 13:59] …それをなぜここで聞く? ↓で聞くべし。 MS SQL Server 総合スレ pc2.2ch.net/test/read.cgi/db/1057061513/l50
150 名前:ORACLE初心者です [03/10/07 01:37] 30日以前のデータを抽出することすらできない俺に どなたか力を。。 TBL -------------------- YMD VARCHAR2(8) ・・・ select * from TBL where to_date(YMD,'RRRR-MM-DD') < to_date(sysdate-30,'RRRR-MM-DD') 特定レコードで「ORA-01861 リテラルが書式文字列と一致しません」 が発生してしまいます。 特定行を削除しても同じなのでデータが悪さしていると思えないし・・
151 名前:デフォルトの名無しさん [03/10/07 01:54] >>150 to_date(sysdate-30,'RRRR-MM-DD') 少なくとも、sysdate-30って既にdate型だから to_dateする必要無いのでは?
152 名前:デフォルトの名無しさん [03/10/07 01:58] >>150 それと、 YMD VARCHAR2(8) to_date(YMD,'RRRR-MM-DD') RRRR-MM-DDで10文字の様な気がするけど VARCHAR2(8)で足りるのか?
153 名前:デフォルトの名無しさん [03/10/07 01:59] >>150 'RRRR-MM-DD' ↑ この部分の RRRR ってなんでしょうか?? RRRRは初めて見るのですが、、、 ちなみに下記のやり方でOKなのでは?? select * from TBL where to_date(YMD,'YYYY/MM/DD') < sysdate - 30 ;
154 名前:デフォルトの名無しさん [03/10/07 02:01] >>150 さらに、RRRRと書こうと思ったら 先を超されてしもた。 ので、俺のメモ書きをコピーしとく 日付書式 yyyy,yyy,yy,y 西暦で下4桁年、下3桁年… rr 西暦で下二桁年で、50〜49で上二桁が解釈される。現在では99は1999のことで、01は2001のこと mm 月(01〜12) month 月(1月〜12月) mon 月(JAN〜DEC) dd 日(1〜31) day 日(日曜日〜土曜日) dy 省略形(日〜土) d 週における曜日(日=1,…,土=7) hh,hh12 時間(12時間表記) hh24 時間(24時間表記) mi 分 ss 秒
155 名前:ORACLE初心者です [03/10/07 03:24] 151〜154さん ありがとうございます。RRRR→YYYYですね。 ora-01861は下文でも発生します。 select * from TBL where YMD < sysdate-30 補足として @39075行目までは表示される。 (39076行目を削除するも変わらず) Acount(*)に変えると上文YMDの箇所でエラーとなる。
156 名前:ORACLE初心者です [03/10/07 03:32] >152 to_date(YMD,'RR-MM-DD')もだめです。。。 >153 ご指摘どおりYYYYで試してみましたがだめでした。 構文が問題では無い気がしてきました。
157 名前:デフォルトの名無しさん mailto:sage [03/10/07 09:04] >>150 まず、>>153 をそのままコピペして試したか? それから、「特定レコードで」ora-01861なら、そのレコードのデータを確認せい。 日付にならん数値とか入ってないか?
158 名前:ORACLE初心者です [03/10/07 11:06] >157 はいコピってやってみました。 途中までは処理が走るってことはやはりデータに問題があると 言ったほうがよいですよね? ...でも見た目問題なさそうだしなー。
159 名前:デフォルトの名無しさん [03/10/07 12:21] >>158 実行環境はSQL*PLUS? データに問題があるのであれば 最初に出てくる方を何件か削除したら 39075行目って数字がずれたりするかな? select YMD from TBL; は何も問題は無いの?
160 名前:157 mailto:sage [03/10/07 12:28] >>158 そうだと思う。 っていうか、問題を切り分けろ。 1つづつ可能性をつぶせ。 select ROWNUM,to_date(YMD,'YYYY/MM/DD') from TBL; とかやって、問題の行を特定しろ。 であやしい行が判ったら、 select * from TBL where ROWNUM=xxx; とかだ。 一歩づつ、具体的に進め。
161 名前:ORACLE初心者です [03/10/08 01:47] >159,160 お世話になります。 >159 8iでSQL*Plusで行っています。 select YMD from TBL;では問題ありませんでした。
162 名前:ORACLE初心者です [03/10/08 01:49] >160 アドバイスありがとうございます select ROWNUM,to_date(YMD,'YYYY/MM/DD') from Q_SKF; ('RR/MM/DD'でも結果は同じ) ROWNUM TO_DATE( ---------- -------- 1 03-08-20 2 03-08-20 ・・・ 39066 03-08-21 39067 03-08-21 39068 03-08-21 39069 03-08-21 39070 03-08-21 39071 03-08-21 39072 03-08-21 ROWNUM TO_DATE( ---------- -------- 39073 03-08-21 39074 03-08-21 39075 03-08-21 ERROR: ORA-01861: リテラルが書式文字列と一致しません。 39075行が選択されました。
163 名前:ORACLE初心者です [03/10/08 01:52] 尚、特定行(それ以外も?)は抽出できませんでした。 SQL> select * from Q_SKF where ROWNUM=39076; レコードが選択されませんでした。 SQL> ed ファイル afiedt.bufが書き込まれました。 1* select * from Q_SKF where ROWNUM=39075 SQL> / レコードが選択されませんでした。 SQL> ed ファイル afiedt.bufが書き込まれました。 1* select * from Q_SKF where ROWNUM=39074 SQL> / レコードが選択されませんでした。
164 名前:ORACLE初心者です mailto:sage [03/10/08 07:56] すんません データの見直しを行うことにします。
165 名前:デフォルトの名無しさん [03/10/10 19:47] ちなみにotnを探せば、日付形式としての不正を抽出するFUNCTIONが紹介されていたぞ それあたりを試してみると良いね。
166 名前:デフォルトの名無しさん [03/10/12 11:03] ROWNUM TO_DATE( ---------- -------- 39073 03-08-21 39074 03-08-21 39075 03-08-21 で 1* select * from Q_SKF where ROWNUM=39075 SQL> / レコードが選択されませんでした。 これって・・・
167 名前:デフォルトの名無しさん [03/10/12 14:21] 昔ある環境でエクスポートしたファイルがあります。 このエクスポートしたファイルの中身を確認する方法ってありますか?
168 名前:デフォルトの名無しさん [03/10/13 15:07] >>163 rownum はそんな使い方はできないの。 rowid もselectしてがんばってくれ。
169 名前:デフォルトの名無しさん mailto:sage [03/10/16 02:41] >>165 おぉ、それ俺が書いたの。 おそレスだけど自分の勉強になりそうだからってやつっしょ。 どこの掲示板だったんだか忘れたけど。。。
170 名前:デフォルトの名無しさん [03/10/16 22:53] >>169 思い出して >>164 も、結果報告お願い。
171 名前:デフォルトの名無しさん [03/10/17 11:18] 質問です。 [CODE] [NAME] 001 ヤマダ 002 タナカ 003 サトウ 004 タナカ 005 ヤマダ の様なテーブルより [CODE]でソートされた重複しない[NAME]レコードを取得したいのですが、 方法がわかりません。 [NAME] ヤマダ タナカ サトウ と、ほしいのです。 distinct と order by を使ってやってみたのですが、上手くいきませんでした。 どなたか宜しくお願いします。
172 名前:デフォルトの名無しさん mailto:sage [03/10/17 11:21] Oracle 関係ないじゃん。 SQL の入門書でも読め
173 名前:デフォルトの名無しさん [03/10/17 15:49] >>171 テーブル名 temp_list select name from (select min(code), name from temp_list group by name order by 1);
174 名前:デフォルトの名無しさん [03/10/17 16:14] 昔ある環境でエクスポートしたファイルがあります。 このエクスポートしたファイルの中身を確認する方法ってありますか?
175 名前:デフォルトの名無しさん mailto:sage [03/10/17 17:45] とりあえずエディタで開いてみればぁ
176 名前:デフォルトの名無しさん [03/10/17 19:14] oracle 9i Lite(トライアル版)というのをダウンロードして windows2000のPCにインストールしてみた。 Oracle Universal Installerで Mobileサーバーというのと MobileDevelopmentKit というのをインストールした。 それで、このPCだけで(スタンドアローン) データベースというものを 使ってみたいだけなんだけど、この後何をすればいいのかさっぱりわからん。 何を読んだらいいのか教えてけろ・・・ちなみに試用期間は30日なので 切れないうちに教えてください・・
177 名前:デフォルトの名無しさん mailto:sage [03/10/18 01:31] Liteじゃだめ
178 名前:171 mailto:sage [03/10/18 10:37] >>173 助かりました。 ありがとうございました。
179 名前:デフォルトの名無しさん mailto:sage [03/10/19 02:57] >>174 実データはインポートしないでimpのログだけ吐かせるオプションってなかったか? 何のスキーマをどこに突っ込もうとしようとするダンプなのか知るのに使ってた気が するんだが・・・
180 名前:169 mailto:sage [03/10/20 03:12] >>170 またもや、おそくなったけど 9iの部屋の「to_dateの結果が正しいか判定するSQL? 」という 一連のスレッドがそれじゃないかと思われます。
181 名前:デフォルトの名無しさん [03/10/22 20:23] >>180 どうもありがとう。 to_date以外でも使えそうな良いアイデアだな。 thx
182 名前:デフォルトの名無しさん mailto:sage [03/10/23 00:07] 勉強用に安価に入手できるバージョンはありますか?
183 名前:デフォルトの名無しさん mailto:sage [03/10/23 00:25] hxxp://otn.oracle.comから無料でどぞ。>>182 PSRとかは手に入らないけど必要ないでしょ。
184 名前:デフォルトの名無しさん [03/10/23 11:32] 30日間トライアル版しか無いの?<無料
185 名前:デフォルトの名無しさん [03/10/23 12:11] >>184 無料といったら期間限定のトライアル版しかないと思いますが・・・
186 名前:デフォルトの名無しさん [03/10/23 12:15] >>183 hxxp?
187 名前:183 mailto:sage [03/10/24 01:25] いいからOTN行ってLicense Agreement読んでみ。英語がわからんとかいうヘタレは諦めれ。 直リンすんなゴルァ、を回避するためですが何か?>>186
188 名前:デフォルトの名無しさん mailto:sage [03/10/24 05:17] >>187 ttp://じゃないのはなぜ?
189 名前:デフォルトの名無しさん [03/10/25 00:04] >>188 そんな形式にこだわるのは何故?
190 名前:デフォルトの名無しさん mailto:sage [03/10/25 00:57] hxxp,fxpってのは英語で情報交換してる掲示板でよく見かける直リン回避の仕方だね。 リバースエンジニアリングやってる奴ら(特にブラックハット)が好んで使ってる。 スレの趣旨からずれまくってるのでsage。
191 名前:デフォルトの名無しさん mailto:sage [03/10/27 00:04] >>189 2ちゃんブラウザのたぐいはttp://も クリッカブルになるからでしょう。
192 名前:デフォルトの名無しさん mailto:sage [03/10/27 08:39] んな自分勝手な・・・。
193 名前:デフォルトの名無しさん mailto:sage [03/10/27 22:53] >192 ↑こうレスするのを嫌がる人もいる。
194 名前:デフォルトの名無しさん mailto:sage [03/10/28 20:07] それまた自分勝手な・・・。
195 名前:デフォルトの名無しさん [03/10/31 16:41] Web帳票もどきのシステムを作ることになったんですが、書き込み欄に 文字数で全角50000文字まで入るようにとか言われてます。(しかも複数) varchar2では4000byteまでしか扱えないし、テーブルのカラムのほとんどを ラージオブジェクトにするのも違う気がします。皆さん、こういうのはどうして ますか? つか、普通にテキストファイルに保存したほうがいいのではとも思ったんですが 上司がデータベースに拘っているので…。
196 名前:デフォルトの名無しさん mailto:sage [03/10/31 17:02] テキストファイルに落としてポインタをDBに入れときゃいいじゃん…
197 名前:デフォルトの名無しさん [03/10/31 17:18] >>195 俺は使わないけど、 LONG使ってみて。 どうなったかも報告して。
198 名前:デフォルトの名無しさん mailto:sage [03/10/31 18:47] >>195 ORACLEのバックアップで一緒に済ませたいんだろ?>上司 ファイル名をDBに保存、テキスト保存。 バックアップは別途用意し説得するのが一番だろうなあ
199 名前:デフォルトの名無しさん [03/10/31 19:13] 1列が100KBでそれが複数列でとなると やはり外に置くか、LOBにするかだろうな。 LONGでもPL/SQLだと32760byteだし 何で入れるかに依ってごちゃっとするよね。 その文字を入れるとして、どれくらいの種類の 文章を入れるかというのもあると思うし その列をどう使うのかなぁ?
200 名前:デフォルトの名無しさん [03/10/31 20:00] 上司ってエンジニア?一本毛の生えた素人?
201 名前:デフォルトの名無しさん mailto:sage [03/10/31 20:29] 一本も毛の生えてない素人じゃないか?
202 名前:200 [03/10/31 22:00] やっぱり、毛という毛は1本も生えてない素人か
203 名前:デフォルトの名無しさん [03/10/31 22:48] SEだからといって、一般人より何か知ってるかというと・・・なことも多いこの業界。
204 名前:デフォルトの名無しさん mailto:sage [03/10/31 22:59] でも「素人か」って鼻で笑っちゃあSE失格だよな。 データベースに拘ってるっていうところをそのまんま 鵜呑みにしたり、理由を勝手に憶測したりしないで、 もう少し掘り下げてインタビューして顧客の真の要件を 明らかにしよう。
205 名前:195 mailto:sage [03/10/31 23:01] >>196 ,198 自分も少し考えたんですが、データベースと別に保存というのは設計として どうなのよと思ったので自己却下しました。 そんなにおかしなことではなかったんですね。ありがとうございます。 >>197 ありがとうございます。 LONG型は1項目までしか定義できないようなので諦めましたです。 >>199 多少扱いは面倒ですが、慣れてもいるのでLOBしかないかなーと思っています。 ちなみに内容は会議の議事録と、偉い人たちのコメント等々です。 いまのところ、キーに対応した文章が閲覧できればいいようですが、全文検索 なんて言われたら…(;´Д`) >>200 この道30年のベテランエンジニアを自称していますが、業務経験は20年前にN88-BASIC のみという凄腕です。頭髪はだいぶ薄いですが、かろうじて残っています。
206 名前:デフォルトの名無しさん mailto:sage [03/10/31 23:47] >>205 ひょっとしてNUL?
207 名前:200 [03/11/01 08:04] >>204 SEか素人かが問題ではない。 毛があるかどうかが問題だ。 大体オマイは、2ちゃんで匿名相手にインタビューして、 真の要件解析をするのか? そんなことより、>>205 より毛が生えてるエンジニアということが解析された。 俺にとっては十分な答えだ。
208 名前:デフォルトの名無しさん mailto:sage [03/11/01 10:35] 2chで言葉を選んでどうする 簡潔に、「ハゲは馬鹿ばっか」 でいいだろ
209 名前:200 [03/11/01 11:07] >>208 ありがとう。その通り。
210 名前:204 mailto:sage [03/11/01 13:11] >>207 当然、要件分析すんのは>>195 だ。 つか、なんで>>200 が反応するんだ?
211 名前:200 [03/11/01 13:22] >>204 暇だったから。ゴメンチャイ
212 名前:デフォルトの名無しさん mailto:sage [03/11/01 13:48] スレスト依頼でもしてくるか。
213 名前:デフォルトの名無しさん [03/11/02 13:17] すいません、SQL質問スレが見つからなかったのでここで質問させてください。 主キーにSequenceを使って連番振るときに、どれくらいのサイズにしておくものなんでしょうか? もちろん要件によるのでしょうが。 例えば、登録件数は少ない(数100件程度)が、頻繁に追加・削除が行われるようなテーブルの場合 はどうしておくものなのでしょうか? 主キーに6桁ほど取っておいて、MAXVALUE=999999にしてCYCLEにしておく? でもinsert時にキーがぶつかったら? エラー処理で、insetが成功するまでnexvalで値をとり続ける? そんなコーディングって一般的なの? ・・・普通はどんなカンジにしておくものなんでしょう???
214 名前:デフォルトの名無しさん mailto:sage [03/11/02 15:32] ハァ?
215 名前:213 mailto:sage [03/11/02 16:55] >>214 やっぱ考え方自体がおかしい?
216 名前:デフォルトの名無しさん [03/11/02 19:57] >>213 その程度の件数であまりSequenceなんて使ったことないけど。 世の中には、4件しか無いテーブルにインデックスはる人もいるからなぁ。
217 名前:213 [03/11/02 21:31] >>216 そ、そうなんですか。 この程度の件数だと普通どうやって連番振ってるものなんでしょうか? すみません。あんまりこーゆー事を考えて使ったことがないもので。。。
218 名前:デフォルトの名無しさん [03/11/02 21:49] >>217 何のために、それをするの?
219 名前:213 [03/11/03 01:40] >>218 うまく言えないんですけど・・・ あるシステム上でユーザが任意で作成できる オブジェクトを管理するためです。 OSのファイル管理と同じようなものだと思っていただければ良いかと。 ファイルに対してユニークなキーを振るようなイメージです。
220 名前:デフォルトの名無しさん mailto:sage [03/11/03 01:51] ユニークなキーを得るというのと連番を得るのは別次元でかんがえたら?
221 名前:213 [03/11/03 02:09] あ、すみません。217で"連番"って書いちゃってましたね。。。 はい、別に連続した番号でなくても良いです。ユニークでありさえすれば。 ユニークなキーを採番するためにSequenceを使うのかなと思ったのですが、 使い方間違ってるのでしょうか???
222 名前:デフォルトの名無しさん mailto:sage [03/11/03 03:30] DB板でやればいいのに・・・
223 名前:デフォルトの名無しさん mailto:sage [03/11/03 07:48] キーとして使うんなら、おなじキー値を再利用しなくても済むように考えた方が楽。
224 名前:デフォルトの名無しさん mailto:sage [03/11/03 18:57] rowidって知らんの?
225 名前:デフォルトの名無しさん [03/11/03 19:02] >>224 数百でrowidはでかくないか?
226 名前:デフォルトの名無しさん [03/11/03 21:40] >>221 よくわからないけど、その数字を使うのかどうか。 使わないならSequenceなんて考えなくても uniqueはuniqueだ。 その数字を何かに使うのであれば そんなに重要な項目だったら テーブルに一つnumber型の列を加えて unique制約なりprimaryつけて、そこで管理するね。
227 名前:のぶきち [03/11/03 22:20] オラクル初心者です。 オラクルというよりSQLに関しての質問なのですが、 SQLポケットリファレンスに載っておらず、困りはてています。 AというテーブルにUPDATEをかけたいのですが、 そのUPDATEをかける値はBというテーブルから取ってきたいのです。 AとBを結合してBの値でAを複数レコードUPDATEすることは可能なのでしょうか?
228 名前:デフォルトの名無しさん [03/11/03 22:31] >>227 状況がよくわからないけどできます。 update文のset句の = の右辺には(select 〜 from 〜)みたい副問い合せとか テーブル名.列名みたいなのとかもできます。
229 名前:213 mailto:sage [03/11/03 22:33] >>222-226 ありがとうございます。まだ私の考えが足りてないようで・・・ もう少しやり方を考えてみます。
230 名前:のぶきち [03/11/03 22:42] >>228 お返事ありがとうございます。 ネットで調べまくったら見つかりましたが、こういうことですよね? この例はORACLEのようなのですが、DB2やDB2/400 などでも 同じことはできるのでしょうか?(ORACLE質問スレなのにすいません) update kprod p set p.price = (select new.price from knewprice new where new.prodno = p.prodno ) where exists (select 'x' from knewprice new where new.prodno = p.prodno );
231 名前:デフォルトの名無しさん [03/11/03 23:22] >>230 聞く前に、やってみれ。 疑問に思ったらとりあえずやってみれ。 うまく逝かなかったら調査だ。
232 名前:デフォルトの名無しさん [03/11/09 23:03] 初心者です。どなたか教えてください。。。 フラグが1である、ID、更新日、更新時間の抽出をしたいのですが、 IDと更新日が同じ場合は更新時間が古い方を取り出したいです。 その際、GROUP BY句を一切使用せずに抽出する方法って、あるのでしょうか? GROUP BYを使えば SELECT id,date,MIN(time) FROM data WHERE flg = 1 GROUP BY id,date と、簡単に出来るのですが・・・。 どなたか、よろしくお願いします。
233 名前:デフォルトの名無しさん mailto:sage [03/11/09 23:24] まずなぜ Group By を使いたくないか書け
234 名前:デフォルトの名無しさん mailto:sage [03/11/09 23:25] つうか、MIN を使う時点で GROUP BY が必須な気がするが・・・
235 名前:デフォルトの名無しさん mailto:sage [03/11/09 23:31] NOT EXISTS使え SELECT id, date, time FROM data A WHERE flg = 1 AND NOT EXISTS ( SELECT * FROM data WHERE id = A.id AND date = A.date AND time < A.time ) しかし、GROUP BY使いたくないってのはなんで? グループ化列以外の列の情報が欲しいから?
236 名前:デフォルトの名無しさん [03/11/09 23:50] 232です。ありがとうございました!! 使いたくない理由も、その通りで、これ以外のグループ化をしない他の列も 抽出したかったからです。先に理由を書かずに質問してしまってごめんなさい。 本当にありがとうございました。