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

Oracleデータベースのすべてのバージョン。質問でそのコンテキストが重要な場合は、oracle-11g-r2のようなバージョン固有のタグを追加します。アプリケーションやミドルウェアなどのOracle製品や、MySQLやBerkeleyDBなど、Oracleが所有するその他のデータベース製品には使用しないでください。

3
自動化された方法でOracle DDLをスクリプト化する
Oracle SQL DeveloperはTools -> Database Export...これを介してDDLをエクスポートできますが、これは非常に効果的ですが、手動による介入が必要です。 私は知っDBMS_METADATA.get_ddl()ていますが、エクスポートが完璧ではないことを発見しました。エクスポートされたDBMS_METADATADDLが、キーワードの途中での区切りなどの問題を修正することなく使用できないという問題に遭遇しました。ただし、DMBS_METADATA手動で修正することなく実行できるDDLのエクスポート方法を知っている人がいれば、それも素晴らしい解決策になります。 基本的に、手動でエクスポートしたものと同じ DDLをエクスポートする自動/スクリプト可能な方法を探しています。 どうやってやるの?

2
OracleBulkCopyの具体的な機能とパフォーマンスを最適化するにはどうすればよいですか?
詳細を要約すると、約500万行をベンダー(Oracle)データベースにステージングする必要があります。OracleBulkCopy(ODP.NET)を使用して50万行のバッチですべてがうまくいきますが、5Mにスケールアップしようとすると、1Mマークに達するとパフォーマンスが低下してクロールになり、行がロードされるにつれて徐々に遅くなり、最終的には3時間程度でタイムアウトします。 テーブルの主キーに関連していると思われますが、情報と私が読んでいる多くのことのためにOracleフォーラムとStack Overflowを探し回っています(また、多くの投稿が互いに矛盾しているようです) 。私は誰かがプロセスに関するいくつかの密接に関連した質問にまっすぐに記録を立てることができることを望んでいます: ないOracleBulkCopyクラスは、従来の、またはダイレクト・パス・ロードを使用しますか?何らかの方法でこれを確認できますか? 仮定すると、それはありません使用ダイレクト・パス・ロード:それはOracleが自動的にロードおよびプットバックオンラインその後、それらの間に使用不可能にすべてのインデックスを設定していることは本当ですか?私はこの効果に関するいくつかの声明を読みましたが、繰り返しますが、確認することはできません。 #2がtrueの場合、一括コピー操作を開始する前に、テーブルにどのインデックスが存在するか違いがありますか?もしそうなら、なぜですか? #3に関連して、一般に、使用できないインデックスを使用したバルクロードと、ロードの前に実際にインデックスを削除してから再作成する間に、実際的な違いはありますか? #2が正しくない場合、または理解していないいくつかの警告がある場合、バルクロードの前に明示的にインデックスを使用不可にし、その後 明示的に再構築することは違いがありますか? インデックスビルド以外に、レコードが追加されるにつれて一括コピー操作が徐々に遅くなる原因はありますか?(たぶん、ロギングと関係がありますが、バルク操作はログに記録されないと思われますか?) 最初にPK /インデックスを削除する以外にパフォーマンスを完全に向上させる方法が他にない場合、インデックスが完全に消えないようにするためにどのような手順を実行できますか。つまり、データベースへの接続が失われた場合プロセスの途中?
14 oracle  bulk 

1
CREATE TYPEの後にSQL * PLUSにスラッシュが必要なのはなぜですか?
Typeを定義してTOADでテストしただけで問題はありませんでしたが、すべて問題ありませんでした。しかし、SQL * PLUSで実行するとエラーがスローされました。 例: CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); 何らかの理由でここにスラッシュを追加する必要があります CREATE OR REPLACE TYPE MyType AS OBJECT ( Item1 NUMBER, Item2 NUMBER ); / 私にとっては、スラッシュを必要としないCreate Tableステートメントに似ています。かなり分かりにくいと思います。私はそれがどのように機能するか知っていますが、この設計決定が下された理由を誰でも説明できますか?

1
Oracle Instant Clientでの名前検索にLDAPを使用
一部は、Oracleクライアントの完全なインストールと競合するバージョンまたはビットの問題があるため、私の開発チーム(メンバー)は、Oracle Instant Clientを使用し、ほとんどの場合、開発マシンへのインストールを避けようとしています。新しいプロジェクト。これは、このセットアップを使用して実稼働環境に展開するまで、非常にうまく機能しています。私たちはほとんどが.NETショップであるため、Javaクライアントではなく、ネイティブクライアント(.NETラッパーを使用)を使用しています。 クライアントは、データベースサービスをLDAPサーバーに登録し、名前の検索にLDAPサーバーを使用することを要求しています。それらは、正しいと思われるファイル(および付随する暗号化構成ファイル)を提供sqlnet.oraしていldap.oraます。特に、sqlnet.oraファイルは、ネットサービス名を検索するための可能なソースとしてLDAPを指定します。 names.directory_path=(tnsnames,ldap) SQL Developerを使用してアクセスできたため(LDAP情報を直接入力できるようになったため)、作業しているマシンがLDAPを使用してサービスにアクセスできると確信しています。それらが正しいと仮定すると、Instant Clientにこの構成を認識させ、名前検索にLDAPを使用するにはどうすればよいですか? 今まで試したこと TNS_ADMIN提供されたファイルを含むディレクトリに環境変数を設定しようとしましたが、これはInstant Clientにtnsnames.oraファイルを認識させるのには問題なく動作しますが、LDAPを調べ始めるには十分ではないようです。結果は次のとおりです(パス、ユーザー名、パスワードが変更されました): (次のコマンドはたまたまWindowsコマンドプロンプトですが、Linuxでも同様のことが実行できると思います。ここでsqlplus見られるのは、同じディレクトリ内のインスタントクライアントバイナリを伴うインスタントバージョンでもあります。) C:\TEMP>SET TNS_ADMIN=C:\path\to\sqlnet\ldap\and\tnsnames\ora\files C:\TEMP>echo %TNS_ADMIN% C:\path\to\sqlnet\ldap\and\tnsnames\ora\files C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LOCALTNSNAME SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:22:25 2014 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With …
14 oracle 

1
UNPIVOTがUNION ALLに変換されるのを防ぐにはどうすればよいですか?
多少複雑なOracleクエリがあり、完了に約30分かかります。クエリの遅い部分を取り出して個別に実行すると、数秒で終了します。以下は、分離されたクエリのSQLモニターレポートのスクリーンショットです。 以下は、完全なクエリの一部として実行される場合と同じロジックです。 色は両方のスクリーンショットの同じ表に対応しています。遅いクエリの場合、Oracle MERGE JOINはに等値条件を持たない2つのテーブル間で実行していますJOIN。その結果、約1億5,000万の中間行が不必要に処理されます。 クエリヒントまたはリライトを使用してこの問題を回避できますが、この問題を将来回避し、バグレポートをOracleに送信できるように、できるだけ多くの根本原因を理解したいと思います。悪いプランを取得するたびUNPIVOTに、クエリテキストUNION ALL内がプラン内に変換されます。さらに調査するために、そのクエリ変換が発生しないようにしたいと思います。この変換の名前を見つけることができませんでした。また、クエリヒントまたはアンダースコアパラメーターを見つけることができませんでした。私は開発サーバーでテストしているので、何でもできます。 私は、クエリ変換を防ぐために行うことができますが何であるUNPIVOTのはUNION ALL?Oracle 12.1.0.2を使用しています。 IPの理由で、クエリ、テーブル名、またはデータを共有できません。単純な複製を思い付くことができませんでした。とはいえ、質問に答えるためにその情報が必要な理由は私にはわかりません。以下は、UNPIVOTクエリと、UNION ALLとして実装された同じクエリの例です。


3
複数の `or`式を避ける
私は次のOracle SQLとその作品を持っていますが、すべてのもので非常にquiteいですor。これを行うより簡潔な方法はありますか? SELECT * FROM foobar WHERE (SUBJECT ='STAT' and TERM ='111') or (SUBJECT ='STAT' and TERM ='222') or (SUBJECT ='ENGLISH' and TERM ='555') or (SUBJECT ='COMM' and TERM ='444') or (SUBJECT ='COMM' and TERM ='333') or (SUBJECT ='STAT' and TERM ='666') ...

2
新しいまたは異なるテーブルスペースへのスキーマのインポート
データの作成元とは異なる単一の新しいテーブルスペースまたは異なるテーブルスペースを使用して、スキーマをOracle 11gR2にインポートする便利な方法はありますか? 例として、OLDDBからBLOG_DATAをエクスポートしました。すべてのユーザーデータはUSERSテーブルスペースに保存されています。 NEWDBで、BLOG_DATAスキーマをインポートしますが、このユーザー専用に作成されたBLOG_DATAテーブルスペースにユーザーオブジェクトを保存します。 BLOG_DATAユーザーを作成し、BLOG_DATAテーブルスペースを作成し、そのユーザーのデフォルトのテーブルスペースとして設定し、適切な無制限のクォータを追加しました。 CREATE TABLESPACE blog_data DATAFILE SIZE 1G; CREATE USER blog_data IDENTIFIED BY secretpassword DEFAULT TABLESPACE blog_data QUOTA UNLIMITED ON blog_data; GRANT connect,resource TO blog_data スキーマは次のようなものでOLDDBからエクスポートされました exp blog_data/secretpassword@OLDDB file=blog_data.dmp 以下のフィルの優れた答えを読んだ後、私は不思議に思いました: データにはデフォルトの表領域(ユーザーがクォータを持っている唯一の表領域)以外に移動する場所がないため、これによりimpはすべてのユーザーオブジェクトをそのデフォルトの表領域に配置するように強制されますか? imp blog_data/secretpassword@NEWDB file=blog_data.dmp これにより、newdbのblog_dataテーブルスペースにblog_dataスキーマ全体が配置されますか?これが機能しない理由や、特定のオブジェクトなどで問題が発生する理由はありますか? 更新: 簡単なテストを行ったところ、これが事実であることがわかりました。Impオブジェクトを元のテーブルスペースに配置できない場合(テーブルスペースが存在しないなど)、そのユーザーのデフォルトのテーブルスペースにオブジェクトを配置します。詳細な説明:http : //www.dolicapax.org/?p=57 それでも、Philが示唆しているようにData Pumpを使用することは、好ましい選択肢であると思われます。

2
OracleからSQL Serverにデータを移動する最も簡単な方法は何ですか?
当社の製品の1つは、データベースバックエンドとしてOracleとSQL Serverの両方をサポートしています。OracleバックエンドからMicrosoft SQL Serverに切り替えることを希望するお客様がいますが、これは私たちにとって典型的な移行ではありません。 すべてのデータをOracleスキーマ全体からSQL Serverデータベースに取得する最も簡単な方法は何ですか? スキーマにはプレーンな古いテーブルのみが含まれ、空想的なものは何もありません。手作業で移行しても問題ないストアドプロシージャが1つまたは2つある場合があります。 OracleのSQLDeveloperを使用してテーブルデータをCREATEand INSERTステートメントとしてエクスポートできますが、これらはSQL Serverで使用される構文と一致せず、構文エラーを手動で修正する必要がありません。

2
インデックスを定義するときに列の特定の順序に利点がありますか
たとえば、2つのインデックスがある場合: CREATE INDEX IDX_1 ON MY_TABLE_1 (ITEM, DATE, LOCATION) COMPUTE STATISTICS; CREATE INDEX IDX_2 ON MY_TABLE_1 (DATE, LOCATION, ITEM) COMPUTE STATISTICS; これはIDX_2冗長になりますか?そうでない場合、列を宣言する順序を決定するにはどうすればよいですか? 通常のクエリに合わせてインデックスを調整する必要がありますか?
13 oracle  index 


5
Oracleのどの機能が、小規模なプロジェクトにとって魅力的な選択肢ですか?
Oracleのライセンス処理[a](および、程度は低いもののコスト)を考えると、PostgreSQLまたはMySQLよりもOracleを選択する決定要因は何かと常に疑問に思っていました。 私の会社は、ほとんどの場合、専用のDB管理なしでデータベースを実行する単純なWindowsサーバーボックスが1つしかない小規模プロジェクトでも、Oracle(可能な場合はXE)を選択しています。(小さいとは、データが常にOracle XEのかなり小さいサイズの制約に適合することを意味しないことに注意してください。) 私は常にこの選択に疑問を呈してきましたが、少なくとも1つのデータベース製品にしかさらされないという利点があります。 それでも、RDBMSが必要な新しいプロジェクトを考えますが、データベースのプロジェクトと範囲は非常に小さく、単純なWindowsサーバーボックスで実行されるOracleの独自の機能に基づいて(専用の管理はあまり行いません)別のRDBMS? 追加のコンテキスト:データベースの展開の多くは、顧客サイトで「低管理」モードで実行できます。つまり、データベースは一度セットアップされます。サイトでの正しい動作とパフォーマンスに関する初期テストがいくつかあります。この後、データベースは実行されます。定期的な管理は行われていません。何かが壊れている場合にのみ、(専門のDBAではなく)技術者がデータベースをチェックし、何が起きているのかを把握しようとします。バックアップは主にオフラインバックアップとして行われます。一部のプロジェクトでは、顧客はRDBMSが関係していることすら気にしません。彼らは、自分のアプリを機能する(または機能しない)ブラックボックスと見なしています。 [a]:私が仕事をしているところ、収益が少ない場合、地元のOracleの代表者は製品の販売にあまり関心がないので、数名のプロジェクトマネージャーが小規模プロジェクトの適切なライセンスを取得するのに数か月かかりました。

2
PL / SQLを実行するアプリケーション開発者のOracleでの作業
Oracleのスキーマレベルの権限の欠如をどのように処理しますか?オラクルのセキュリティアーキテクチャは、オブジェクトレベルの権限のみを必要とするアプリケーションに適しています。また、制限をほとんど必要としないDBAにも適しています。ただし、フロントエンドアプリケーションと複数のスキーマのPL / SQLを使用して開発を行うプログラマにとって、アーキテクチャには大きなギャップがあるようです。以下に、私のオプションとその欠点をいくつか示します。 各プログラマーが独自のスキーマで開発を行うようにします。DBAは、それらを必要とするプログラマーにオブジェクトレベルの特権を付与します。パッケージ開発はすべてDBAが行う必要があります。主な欠点は、プログラマーがデータベースのパフォーマンスを損なうために、少しバケットのようにデータベースを使用することです。プログラマーにデータベースで開発してほしいのですが、この方法では大いに落胆します。 各プログラマーに開発に必要な12個程度のスキーマのユーザー名/パスワードを与えます。これらのアプリケーションスキーマにプロシージャ、テーブルなどを作成するためのアクセス許可を与えます。このアプローチの欠点のいくつかは、複数のログイン自分自身としてログインすることはほとんどありません。クロススキーマ開発も困難です。 プログラマーが開発に必要な各スキーマのプロキシ認証特権を付与します。これにより、プロキシ権限以外の権限を付与する必要なく、ユーザーは自分自身としてログインしたままになります。欠点には、プロキシするスキーマごとに個別の接続を維持する必要があるプログラマーが含まれます。接続を絶えず変更する必要があるため、クロススキーマ開発はより面倒です。また、認証に合格したパブリックデータベースリンクを使用するパッケージは、プロキシ接続内でコンパイルされません。 各プログラマにDBA特権を付与します。–ここでの欠点はセキュリティです。スキーマプログラマーをスキーマから締め出すことはできず、プログラマーは他のプログラマー(DBA)になりすますことができます。 各プログラマーにSELECT / INSERT / CREATE / etcを付与するオプションがないようです。開発を行うために必要なスキーマに対する権限。自分でログインして、1つの接続を使用して作業を行います。アクセスできるスキーマ内の新しいオブジェクトはすぐに使用できます。 何か不足していますか?PL / SQL開発を行うアプリケーションプログラマをどのように扱いますか?

5
Oracle 12c Express Enterprise Manager Webページがロードされません
問題の概要 Oracle 12c EM Express Webインターフェースを参照すると、次のようなURLを使用するとページがタイムアウトします。 http(s):// hostname:5500 / em http(s)://hostname.domain:5500 / em IPアドレスまたはlocalhostを含むURLを使用すると、ページの読み込みは非常に遅くなります(最大5分)。 http(s):// ip-address / em http(s):// localhost / em ホスト名を使用すると、リスナーログにエラーが表示されます(これらの複数): 03-DEC-2015 11:25:33 * http * (ADDRESS=(PROTOCOL=tcps)(HOST=<ip address>%14)(PORT=52925)) * handoff * http * 12518 TNS-12518: TNS:listener could not hand off client connection TNS-12560: TNS:protocol adapter error IPアドレスまたはlocalhostを使用する場合、リスナーログにエラーは表示されません。 03-DEC-2015 …

5
大きなアプリケーションのために、同じデータベースの異なるスキーマのテーブルに外部キーを作成するのは悪い考えですか?
私は大きなpl / sql Webベースのアプリケーションを専用サーバーに転送する作業をしています。このアプリケーションは、プログラムコードの70パッケージを含む1つのスキーマにあります。このアプリケーションは、さまざまな時期に約15人で作成されました。また、異なるスキーマの参照テーブルに外部キーを作成することは通常の習慣でした。異なるスキーマに同じ参照テーブルを保持する必要がないため、本当に便利でデータベースを非常にクリーンに保つためです。 しかし、とにかく私のDBA(DBを使用して新しいインスタンスを作成し、Solarisゾーン内にアプリケーションをコピーした)は、今日、「異なるスキーマの外部キーは悪で、破壊する必要があります!」彼は自分の見解を説明しなかった。 大きなアプリケーションでそれを行うのは本当に悪い考えですか?

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