タグ付けされた質問 「oracle-10g」

Oracle Database 10g(10g R2ではありません)。検索のためにoracleにもタグを付けてください。

7
Oracle-特定のテーブルに対するコミットされていない変更を表示する方法はありますか?
現在、多くのDMLステートメントを実行するバッチプロセスを介してデバッグしていますが、すぐにはコミットしません。トランザクションがコミットされていないときに、別のセッションからの「保留中」の変更を表示できると便利です。これは可能ですか? 例: Insert into table myTable (col1, col2) values ("col1", "col2"); --Somehow view the pending transaction maybe by system view?.... ...other DML statements.... commit;

2
Oracleで変数を宣言して使用するにはどうすればよいですか?
私の主なスキルはSQL Serverにありますが、Oracleクエリのチューニングを行うように頼まれました。次のSQLを作成しました。 declare @startDate int select @startDate = 20110501 そして、私はこのエラーを受け取ります: declare @startDate int select @startDate = 20110501 Error at line 1 ORA-06550: line 1, column 9: PLS-00103: Encountered the symbol "@" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> …

7
複合インデックス:最も選択的な列が最初ですか?
私は読んでいてcomposite indexes、注文について少し混乱しています。このドキュメント(半分以下)が言います 一般に、最も頻繁に使用されると予想される列をインデックスの最初に配置する必要があります。 しかし、それが言った直後 最も選択的な列を最初に置く複合インデックスを作成します。つまり、値が最も多い列です。 オラクルはまた、ここで言い換えると すべてのキーがWHERE句で同じ頻度で使用される場合、CREATE INDEXステートメントでこれらのキーを最も選択性の高いものから最も選択性の低いものに並べると、クエリのパフォーマンスが向上します。 しかし、私は違う答えをするSOの答えを見つけました。それは言う 列を最も選択性の低い列を最初に、最も選択性の高い列を最後に配置します。単独で使用される可能性が高いカラムとのタイリードの場合。 私が参照した最初のドキュメントは、最も頻繁に使用されるものを最初に確認する必要があると述べていますが、SOの答えは、タイブレークのみであるべきだと述べています。次に、順序も異なります。 このドキュメントはまた語るskip scanningと言います スキップスキャンは、複合インデックスの先頭列に個別の値がほとんどなく、インデックスの先頭以外のキーに個別の値が多数ある場合に有利です。 別の記事は言う プレフィックス列は、クエリで最も識別性が高く、最も広く使用される必要があります 最も差別的であることは最も特徴的だと思います。 この研究はすべて、私に同じ質問を導きます。最も選択的な列は最初か最後か?最初の列は、タイブレークで最も使用され、最も選択的である必要がありますか? これらの記事は互いに矛盾しているように見えますが、いくつかの例を提供しています。私が集めたものから、もしあなたが予想しているなら、注文least selective columnの最初のものであることがより効率的であるように思われますIndex Skip Scans。しかし、それが正しいかどうかはよくわかりません。

1
2週間非アクティブになった後、Oracleセッションがまだ生きている理由
DB:Oracle 10g O / S:Windows Server 2003 64ビット Webアプリケーションによって生成されたOracleセッションのリストを照会します(program = w3wp.exeによるフィルター) select * from V$session where UPPER(program) LIKE '%W3%' order by logon_time Logon_Timeによると、2012年7月31日または2012年8月1日からのセッション、または本日(2012年8月21日)より前のセッションがまだ生きているのはなぜですか? sqlnet.oraで構成しました:SQLNET.EXPIRE_TIME = 20したがって、20分ごとにOracleが接続がまだアクティブかどうかをチェックしていることを意味します。 すべてのユーザースキーマにはデフォルトのプロファイルがあります。これは、セッションが期限切れになったり死ぬことはないということを意味しますか? Philのコメントに応えて追加: Philの回答に応じて追加:

5
存在しない制約を削除することも、作成することもできません
運用データのコピーを使用していくつかの移行スクリプトをテストしている間(スクリプトは開発データで正常に実行されます)、奇妙な状況が見つかりました。CONSTRAINTが変更されたため、DROP + ADDコマンドを発行しています。 ALTER TABLE A_DUP_CALLE DROP CONSTRAINT A_DUP_CALLE_UK1; ALTER TABLE A_DUP_CALLE ADD CONSTRAINT A_DUP_CALLE_UK1 UNIQUE ( CONTROL_ID, CALLE_AYTO_DUPL ) ENABLE; DROPコマンドは正常に機能しましたが、ADDコマンドは失敗しました。今、私は悪循環に陥っている。制約が存在しないため、制約を削除できません(最初の削除は期待どおりに機能しました)。 ORA-02443:制約を削除できません-存在しない制約 名前が既に存在するため、作成できません。 ORA-00955:名前は既存のオブジェクトですでに使用されています 私は型A_DUP_CALLE_UK1SQL開発者に検索それがある...箱や!所有者、テーブル名、tablescape ...すべての試合:それは、同じ名前を持つ別のオブジェクトではありませんで、私の元の制約。テーブルは制約の詳細に表示されますが、制約はテーブルの詳細に表示されません。 私の質問: これの説明は何ですか? ライブサーバーで実際のアップグレードを行ったときに、それが起こらないようにするにはどうすればよいですか? (サーバーは10g XEです。タグを作成するのに十分な評判がありません。)

6
Oracle SQLクエリで増分番号を作成する
テーブルを作成せずにOracle SQLクエリで増分番号を作成する方法は?「with」句を使用してみましたが、期待した結果が得られませんでした。Oracle 10gを使用しています ここに私が試したコードがありますが、動作していないようです: WITH TABLE3 AS ( SELECT 2008 YEARS FROM dual WHERE 1=1 union all select t3.YEARS+1 from TABLE3 t3 WHERE 1=1 AND t3.YEARS < 2011 ) select YEARS from TABLE3 私が望む期待される結果は: 2008 2009 2010 2011
13 oracle-10g 

1
Oracle Databaseのコミットvs高速コミットvsコミットアウト
Oracle Databaseに関連するこれら3つの用語の違いについて、誰かが私の理解を検証できるかどうか疑問に思っていました。 多くの情報源はこれらの用語を混同し、それらを詳細に説明していないため、情報を見つけるのは少し難しいものでした。 私が収集したものから: コミットと高速コミットはまったく同じです。すべてのコミットは高速コミットです。 基本的に、高速コミットは、元に戻す/ロールバックセグメントヘッダーのトランザクションテーブルのフラグを更新するだけで、トランザクションがコミットされたことを示します。ただし、実際のブロックは再検討されません。つまり、データブロックのヘッダーにある対象トランザクションリスト(ITL)のUNDOバイトアドレス(UBA)は、対応するUNDOセグメントのトランザクションテーブルを指します。さらに、対応する行のロックバイトは解放されず、ITLのロックカウントは変更されません(行はロックされたままです)。 コミットクリーンアウトでは、ブロックが再訪され、ITLがコミットSCNで更新されます。ただし、ITLのロックカウントと各行に格納されているロックバイトはまだ更新されず(高速コミットのように行はロックされたままです)、ブロックが変更されても、REDOは生成されません。 正常にコミットされた(==高速コミットされた)ブロックは、次にタッチされたときに遅延ブロッククリーンアウトを実行します(そしてREDOを生成します)。 コミットクリーンアウトが行われたブロックは、次にタッチされたときに遅延ログブロッククリーンアウトが行われます(そして、REDOが生成されます)。 誰かがこれらのポイントを検証できることを願っています!ありがとう!

2
複数のクエリ列に同じCASE WHEN条件を使用する
SELECT複数の列が同じCASE WHEN条件を使用して、条件が1回だけチェックされるように句を書き換える「より良い」方法はありますか? 以下の例を参照してください。 SELECT CASE testStatus WHEN 'A' THEN 'Authorized' WHEN 'C' THEN 'Completed' WHEN 'P' THEN 'In Progress' WHEN 'X' THEN 'Cancelled' END AS Status, CASE testStatus WHEN 'A' THEN authTime WHEN 'C' THEN cmplTime WHEN 'P' THEN strtTime WHEN 'X' THEN cancTime END AS lastEventTime, CASE testStatus WHEN …

3
行ロック競合のトレース、デバッグ、修正
遅くなって、私は多くの行ロックの競合に直面しました。競合するテーブルは特定のテーブルのようです。 これは一般的に何が起こるかです- 開発者1は、Oracle Formsのフロントエンド画面からトランザクションを開始します 開発者2は、同じ画面を使用して別のセッションから別のトランザクションを開始します 〜5分で、フロントエンドが応答しなくなったようです。セッションをチェックすると、行ロックの競合が示されます。誰もが投げる「解決策」は、セッションを終了することです:/ データベース開発者として 行ロックの競合を排除するために何ができますか? ストアドプロシージャのどの行がこれらの行ロックの競合を引き起こしているかを調べることは可能でしょうか このようなコーディングの問題を軽減/回避/排除するための一般的なガイドラインは何でしょうか? この質問が無制限で不十分な情報であると感じた場合は、気軽に編集してください。 問題のテーブルには多くの挿入と更新が行われています。最も忙しいテーブルの1つだと思います。SPはかなり複雑です-簡単にするために-さまざまなテーブルからデータをフェッチし、それを作業テーブルに取り込みます。作業テーブルで多くの算術演算が行われ、作業テーブルの結果が問題のテーブルに挿入/更新されます。 データベースのバージョンは、Oracle Database 10g Enterprise Editionリリース10.2.0.1.0-64ビットです。ロジックのフローは両方のセッションで同じ順序で実行され、トランザクションは長時間(または少なくともそうだと思われます)開いたままにならず、トランザクションのアクティブな実行中にロックが発生します。 更新:テーブルの行数は予想よりも大きく、約310万行です。また、セッションをトレースした後、このテーブルに対するいくつかの更新ステートメントがインデックスを使用していないことがわかりました。なぜそうなのか-よくわかりません。where句で参照される列にはインデックスが付けられます。現在、インデックスを再構築しています。

2
データベースリンクを介したクエリのタイムアウトはありますか?
編集/序文: DBリンククエリのタイムアウトに関する質問に特に関心があるため、この質問はSOから移行されました。SOから提供される回避策は多少問題ありませんが、質問自体に本当に興味があります。 動機: データベースリンクを使用して、クエリを「永久に」(2日以上、セッションを終了するまで)実行しました。問題は、リモートデータベースが利用できなくなり、まだ知られていない理由でノーORA-02068が発生し(ここでは説明しません)、クエリが待機して待機したことです。 (クエリは、PL / SQLパッケージのプロシージャを実行するdbms_schedulerジョブによって発行されます。その結果、ジョブもスタックしました。ただし、この質問の中心には特に関係ありません) 私は、テストDBの1つを静止モードにして、データベースリンクを介してクエリを実行することにより、この状況をシミュレートしました。予想どおり、クエリは手動でキャンセルされるか、リモートDBが静止解除されるまで待機していました。 質問: リモートデータベースの動作と稼働時間を制御できないため、データベースリンクを使用しているクエリにタイムアウトを設定する可能性を模索しています。 私はすでにプロファイル(CPU_PER_CALLなど)、sqlnet.oraパラメーター、ローカルの名前付けパラメーターを接続文字列に直接追加((connect_timeout=10)データベースリンク定義への追加など)、コマンドを... for update wait 1で実行していますが、ビジーセッションまたはアイドルセッションで機能しますが、待機中のセッション。 したがって、データベースリンクの「ローカル」側で、データベースリンクを介したクエリのタイムアウトを設定するオプションを探しています。 以下のようないくつかの解決策alter session set xyzかはselect ... from a@b "wait 100" --(yes, I know this syntax doesn't exist)、私はこれらの特定のDBにはDBA権限を持っていないとして、高く評価されるだろう。 私は現在10gR2を使用していますが、数週間で11gR2にアップグレードするので、これらのバージョンのアイデアは役に立ちます。

2
オブジェクトテーブルに存在しないように見えるオブジェクトを見つけるにはどうすればよいですか?
というオブジェクトがありますcot_ntn_pi_v。これは同義語だと言われました。all_synonymsテーブルには表示されません。ビューまたはテーブルのように見えますが、すべてのオブジェクトのテーブルにはありません。そこから選択できますが、「存在しない」ためドロップできず、「この名前はすでに別のオブジェクトで使用されています」と同じ名前で新しいテーブルを作成できません。 私は怒っていますか、それとも本当に愚かなことをしていますか?

4
Oracleのテーブルのインデックスによって消費されている実際のスペースを見つける方法は?
Oracle 10gのテーブルのインデックスによって消費されている実際のスペースを見つけたいです。オラクルが将来使用するために予約したスペースを含めるつもりはありません。(Oracleによるオーバーヘッドは考慮すべきではありません。)割り当てられたバイトではなく、使用されたバイトが欲しいです。 今後のお手伝いをお願いします。 また、テーブルの長いフィールドの実際のサイズを見つける方法はありますか。 PS:vsize()およびdbms_lob.getlength()は機能しません。

1
Oracle 10gのSQL置換機能
3〜4年前に、DBAが緊急インシデントの解決のためにリアルタイムSQL置換のOracle 10g機能を使用したというOracleブログをどこかで読みました。基本的に、彼は特定のクエリAを受信するたびに代わりに別のクエリBを実行するようにOracleを構成しました。アプリケーションコードの変更やスキーマの変更はありません。単純な「AではなくBクエリを実行する」タイプの構成のみです。 その機能を使用する予定はありませんが(いくつかの望ましくない結果が考えられます)、好奇心からそれは本当に存在しますか?はいの場合、その機能は何と呼ばれますか?

2
正しい方法でOracleインスタンスを削除する
AIX 6.0 OSで作成されたoracleインスタンス(oracle 10.2.0.4.0)を削除したい。ターミナルですべてのdbfファイルとctlファイルを削除できることはわかっていますが、これは最善の方法ではないと思います。私はそれを行うためのよりクリーンな方法である必要があると思います。 前もって感謝します。

5
最後に特殊文字を含むOracleソートvarchar2列
OracleでVarchar2またはNVarchar2列を独自のカスタム定義の順序に並べ替えるにはどうすればよいですか。または、最初に文字、次に数字、次にすべての特殊文字を配置する既存のオプションがあります。 最初のアプローチは、文字を数字に手動でマッピングする関数を使用することでした。 select id, sorted_column from some_table order FN_SPECIAL_SORT_KEY(sorted_column,'asc') 特殊なソート関数は、各文字を2桁の数値にマップし、戻り値はソートに使用されます。これは本当に高額な連結であるように見え、間違っているように感じます。 for i in 1..length(sorted_text) loop v_result:=v_result || case substr(sorted_text,i,1) WHEN ' ' THEN 82 WHEN '!' THEN 81 WHEN '"' THEN 80 WHEN '#' THEN 79 WHEN '$' .............. WHEN 'u' THEN 15 WHEN 'U' THEN 15 WHEN 'v' THEN …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.