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

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

3
行を複数の列にピボットする
Oracleサーバーへのリンクサーバーを持つSQL Serverインスタンスがあります。PersonOptions次のデータを含む、呼び出されたOracleサーバー上のテーブルがあります。 ╔══════════╦══════════╗ ║ PersonID ║ OptionID ║ ╠══════════╬══════════╣ ║ 1 ║ A ║ ║ 1 ║ B ║ ║ 2 ║ C ║ ║ 3 ║ B ║ ║ 4 ║ A ║ ║ 4 ║ C ║ ╚══════════╩══════════╝ 結果が次のようになるように、そのデータをピボットする必要があります。 ╔══════════╦═════════╦══════════╦══════════╗ ║ PersonID ║ OptionA ║ Option B ║ …

4
Oracleデータベーステーブルをcsvファイルにアンロードするにはどうすればよいですか?
Oracle 11gリリース1データベースから特定のデータを取得し、1つ以上のCSVファイルとして提供する必要があります。データは複数のテーブルやビューに存在します。これらはすべてコマンドラインを介して機能するはずです。これに対する最善のアプローチは何でしょうか?

3
OracleデータベースのSIDを変更できますか?
サーバーはOracle Database 11g Enterprise Editionリリース11.1.0.7.0-64ビットです サーバー上のテストデータベースのSIDを簡単にすばやく変更する方法はありますか? データベースの削除と再作成は私にとってオプションです。しかし、私はより少ない時間を必要とするものを探しています。 クライアントtnsnames.oraで名前を割り当てるもう1つのオプションは、一元管理されないため、エラーが発生しやすくなります。 SQL-Serverにデータベースをドロップして作成する時間と比較して、新しいOracleデータベースを作成するのに必要な時間は非常に長くなります。さらにSQL-Serverでは、SQL-Serverインスタンスの名前を変更できます。[通常、SQL-Serverが実行されているサーバーの名前を変更すると、サーバーの名前も変更するまで問題が発生します。

6
Oracleで非常に大きなレコードセットを削除する最良の方法
私は、非常に大きな(1つのテーブルに5億行を超える1TBに近いデータ)Oracleデータベースバックエンドを持つアプリケーションを管理しています。データベースは実際には何もしません(SProcsもトリガーも何もしません)、それは単なるデータストアです。 毎月、2つのメインテーブルからレコードを削除する必要があります。パージの基準はさまざまで、行の経過時間といくつかのステータスフィールドの組み合わせです。通常、1か月あたり1,000〜5,000万行をパージします(インポートにより、週に約300〜500万行を追加します)。 現在、この削除は約50,000行のバッチで実行する必要があります(つまり、50000の削除、comit、50000の削除、コミット、繰り返し)。バッチ全体を一度にすべて削除しようとすると、データベースが約1時間応答しなくなります(行数によって異なります)。このようなバッチで行を削除することはシステム上で非常に大雑把であり、通常、1週間にわたって「時間の許す限り」それを行う必要があります。スクリプトを継続的に実行できるようにすると、ユーザーが受け入れられないパフォーマンスの低下を招く可能性があります。 この種のバッチ削除もインデックスのパフォーマンスを低下させ、最終的にデータベースのパフォーマンスを低下させる他の影響があると考えています。1つのテーブルに34個のインデックスがあり、インデックスデータのサイズは実際にはデータ自体よりも大きくなっています。 ITスタッフの1人がこのパージを行うために使用するスクリプトを次に示します。 BEGIN LOOP delete FROM tbl_raw where dist_event_date < to_date('[date]','mm/dd/yyyy') and rownum < 50000; exit when SQL%rowcount < 49999; commit; END LOOP; commit; END; このデータベースは 99.99999%増加している必要があり、年に一度だけ2日間のメンテナンスウィンドウがあります。 これらのレコードを削除するためのより良い方法を探していますが、まだ見つかっていません。助言がありますか?

1
Oracle 11gリスナーがORA-12514およびORA-12505エラーで失敗する
開発マシンでOracle 11gのインスタンスをローカルで実行し、SqlPlusを介してローカルインスタンスに直接接続できます。 c:\>sqlplus ace SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta SQL> select count(*) from my_table ; COUNT(*) ---------- 5297 しかし、リスナーを介して接続することはできません。 c:\>sqlplus -L "user/pw@(DESCRIPTION = (ADDRESS …

2
listener.oraでSID_LIST_LISTENERを使用せずにOracleリスナーを構成する方法
次のlistener.oraを使用してORACLE 11gサーバーにアクセスできます。 # listener.ora Network Configuration File: D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.111.111)(PORT = 1521)) ) ) そして、そのサーバー上のすべてのインスタンスを提供します。 lsnrctl status 私の問題は、仮想マシンでOracle 11gを新規インストールするとき、次のようなlistener.oraを使用する必要があることです。 # listener.ora Network Configuration …

5
Oracleでは、複数の挿入で再利用される変数にsequence.nextvalを保存するにはどうすればよいですか?
いくつかのテーブルにテスト用のデータを入力するスクリプトを書いています。 私は次のようなものを書きたいのですが、どうすればいいのかわかりません(私はOracle 11gです) SET ENABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE SET DISABLED_USER_ID = SEQ.NEXTVAL; // PSEUDOCODE INSERT INTO USERS (ID, USR_NAME) VALUES (:ENABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', :ENABLED_USER_ID); INSERT INTO USERS (ID, USR_NAME) VALUES (:DISABLED_USER_ID, 'ANDREW'); INSERT INTO CAR (CAR_ID, CAR_NAME, USR_ID) VALUES (CARSEQ.NEXTVAL, 'FORD', …

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

2
LNNVL正当化
LNNVLは、Oracleの組み込み関数であり、FALSEまたはUNKNOWNと評価される条件に対してTRUEを返し、TRUEと評価される条件に対してFALSEを返します。私の質問は、単にNULL値を処理するのではなく、真理条件の反対を返すことの利点は何でしょうか? たとえば、ヌルを含む可能性のあるStartCommission列とCurrentCommission列を持つEmpテーブルがあるとします。次の例では、値がnullでない行のみが返されます。 SELECT * FROM Emp WHERE StartCommission = CurrentCommission; いずれかのコミッションがnullである行を含めたい場合、次のようなことができます。 SELECT * FROM Emp WHERE StartCommission = CurrentCommission OR StartCommission IS NULL OR CurrentCommission IS NULL; この構文を短縮する関数が存在するように思われますが、LNNVLを使用すると、すべての等しくないレコードとNULLを持つすべてのレコードが返されます。 SELECT * FROM Emp WHERE LNNVL(StartCommission = CurrentCommission); これにNOTを追加すると、nullのない行のみが返されます。この場合に望ましい機能は、真の条件を真、偽の条件を偽に保ち、未知の条件を真と評価することです。ここで低ユースケースを実際に作成しましたか?不明をtrueに、trueをfalseに、falseをtrueにしたいというのは本当ですか? create table emp (StartCommission Number(3,2), CurrentCommission Number(3,2)); insert into emp values (null,null); insert …


1
トリガーで変更テーブルエラーが発生しないのはなぜですか?
トリガー内の変更テーブルでDMLステートメントを使用できないことはわかっています(または少なくとも知っていました)。Oracleのドキュメントからの抜粋: 変更テーブルは、UPDATE、DELETE、またはINSERTステートメントによって変更されるテーブル、またはDELETE CASCADE制約の影響によって更新される可能性があるテーブルです。 トリガーステートメントを発行したセッションは、変更テーブルをクエリまたは変更できません。この制限により、トリガーが一貫性のないデータセットを参照するのを防ぎます。 ただし、insert into empSQL DeveloperまたはSQL * Plusを使用してこのデモトリガーが「変更テーブル」エラーで失敗しない理由を理解できません。 CREATE OR REPLACE TRIGGER emp_bri BEFORE INSERT ON emp FOR EACH ROW BEGIN SELECT max(id) + 1 INTO :NEW.id FROM emp; UPDATE emp SET salary = 5000; END emp_bri; 挿入は次のid値で正常に完了し、すべてのempレコードを更新します。Oracle Database 11g Enterprise Editionリリース11.2.0.1.0を使用しています。複合トリガーについて読みましたが、サンプルでは使用していません。

2
SQL-SERVER 2008リンクサーバー経由でOracleのCLOB列を読み取れないのはなぜですか?
SQL-Server 2008からOracle 11gデータベースのデータにアクセスしたい リンクサーバーを設定し、実行時に select * from [Link_server_name]..Oracle_schema.Oracle_table Oracle_tableにはNumber列とvarchar2列が含まれ、すべて例外として機能します。 しかし、Oracle_tableにCLOB列が含まれていると、次のエラーが発生します。 Der OLE DB-Anbieter 'MSDAORA'fürden Verbindungsserver 'L_V407SR8T' hat die Meldung 'Unspecified error'zurückgeben。 Der OLE DB-Anbieter 'MSDAORA'fürden Verbindungsserver 'L_V407SR8T' hat die Meldung 'Oracleエラーが発生しましたが、エラーメッセージをOracleから取得できませんでした。zurückgeben。 Der OLE DB-Anbieter 'MSDAORA'fürden Verbindungsserver 'L_V407SR8T' hat die Meldung 'Data type is not supported。' zurückgeben。 メッセージ7306、レベル16、状態2、行1 ダイ「 "MCCAPP"。 "DOGGRUPPEN"」-Tabelle …


2
sqlnet.oraまたはtnsnames.oraの変更には再起動が必要ですか?
Oracleのsqlnet.oraまたはtnsnames.oraファイルを変更するときはいつでも、システムを再起動する必要がありますか?私のインスタンスでは、参照しているマシンにOracleクライアントしかインストールしていませんが、好奇心から、Oracleサーバーのインストールにはどのような意味がありますか?

1
需要予測の分解のための単純なスキーマの設計
次の場合の基本的なスキーマ設計を思い付かなければならないトレーニング演習として、単純なデータベース設計タスクを実行しています。 製品の親子階層があります(例:原材料>作業中>最終製品)。 注文は各レベルで行われます。 注文数は、次の6か月間、毎週のバケットで確認できます。 製品レベルごとに需要予測を行うことができます。 次の6か月以内の任意の週の需要予測を今日行うことができます。 需要予測は、次の6か月間の毎週のバケットに対して行われます。 需要予測は通常、階層の上位レベル(原材料または仕掛品レベル)で行われます。下位レベル(最終製品)に分解する必要があります。 需要予測を上位レベルから下位レベルに分解する方法は2つあります。 ユーザーは最終製品の割合分布を指定します。たとえば、作業中の予測は1000だとします。ユーザーは、バケット10の最終製品1に40%、最終製品2に60%が欲しいと言っています。次に、今から10週目(日曜日から土曜日)の予測値最終製品1の場合は400、最終製品2の場合は600になります。 ユーザーは、バケット5の最終製品に対する注文に従って分解するだけで、バケット5の最終製品1と2の注文はそれぞれ200と800であり、EP1の予測値は((200/1000)* 100)%になります。 EP2の場合、「(作業中)」の予測の((800/1000)* 100)%になります。 予測は次の6か月間、毎週バケットで表示可能であり、理想的な形式は次のとおりです。 product name | bucket number | week start date | week end date | forecast value | created_on PRODUCT_HIERARCHYテーブルは次のようになります。 id | name | parent_id __________________________________________ 1 | raw material | (null) 2 | work in …

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