• ベストアンサー

oracle10gと9iの違いについて

お世話様です。 最近、DBサーバをoracle9iからoracle10gに変えることになったのですが、 oracle9iで select LEVEL, 項目1, 項目2 FROM テーブル1 のSQLが動いていたのですが、 oracle10gでは、このSQLが動かなくなり、 connect by区を指定するようにエラーが出てくるようになってしまいました。 oracleのバージョンによって、動かなくなると言うことはあるのでしょうか? それともORACLEの設定を変更すると動くようになるのでしょうか。 ご教授よろしくお願い致します。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

検証したところ、再現しました。ORACLEの仕様が変わったのだと思います。 しかし、9i以前でも select LEVEL, 項目1, 項目2 FROM テーブル1 ではLEVELは常に、ゼロを返しませんか? なさりたいこと(得たい結果)を補足されると別の解決策があるかも しれませんよ。

mario_f4ej
質問者

お礼

ORACLE7の環境があったので、 そこでためしたところ結果として0が返ってきました。 バージョンの違いが原因なのですね。 データを移行するのにPL/SQL内のSQLに上記のようなSQLがあり、 エラーが発生しておりました。 実際にLEVEL擬似列に関しては、内部で使っていなかったのですが、 なぜ以前のORACLEでは動いていたか、の調査でつまづいていました。 ご解答ありがとうございました。

関連するQ&A

  • Oracle10g と9iの同居

    Oracle10gと9iを同じサーバで運用したいです。 (どちらもDATABASEです。) 1つのサーバで、バージョンの違うDBを運用することは可能ですか? 以前、8iと9iは同居可能と聞いたことがありますが、 10gと9iも同居可能ですか? 教えてください。よろしくお願いします。

  • oracle 9i と SQL SERVER 2005 DBリンクにつ

    oracle 9i と SQL SERVER 2005 DBリンクについて とても困ってます。 よろしくお願いします。 仕事で、oracle 9iとSQL SERVER 2005をDBリンクさせて、oracle 9iのTableとSQL SERVER 2005のTableを結合させて、SELECT文を作成したいです。 本番環境は、DBサ―bとWebサーバは別々でとりあえずlocal開発環境を作成しています。 <確認したこと> ・global_names = Flase ・ODBCの設定はSQL SERVER 2005に接続確認しました。  →データソース名は、「SQLSRV」です。 ・inithsodbc.oraの設定    HS_FDS_CONNECT_INFO = SQLSRV    HS_FDS_TRACE_LEVEL = OFF ・LISTENER.ORAの設定(編集後再起動しました)  → (SID_DESC = (SID_NAME = HSODBC) (ORACLE_HOME = D:\oracle\Ora9IUTF) (PROGRAM = hsodbc) ・TNSNAMES.ORAの設定 HSODBC = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT = 1521)) ) (CONNECT_DATA = (SID = HSODBC) ) (HS = OK) ) ・DBリンク作成(小文字を認識するため、ダブルクォーテーションで囲います)   CREATE DATABASE LINK DB_LINK_SQLSRV   CONNECT TO "ユーザ" IDENTIFIED BY "パスワード" USING 'HSODBC'; ・SELECT文   SELECT * FROM テーブル名@DB_LINK_SQLSRV; 上記の手順ですが、サービス名が解決できません。

  • バージョンの"i"とか"g"とかって何?

    Oracle8,Oracle8i,Oracle9i,Oracle10gと、 Oracleのバージョンが上がってきましたが、 バージョンの"i"とか"g"とかって何を表しているんですか? また、Oracle9iはあってもOracle9が無いのか何故?? 知ってらっしゃる方がいれば、教えてください。 よろしくお願いします。

  • oracle8i SQLリファレンス探しています。

    oracle8i SQLリファレンス探しています。 oracle8i workgroup serverを入れております。 oracle documentationなども見ましたが、マニュアルを探せずにいます。 どなたかoracle8i SQLリファレンスのある場所をご存知の方いらっしゃれば、教えて頂きたく宜しくお願い致します。

  • oracle8i?

    こんばんは。教えてください! 私はオラクルはデータベースだという認識はあるのですが、 実際使ったこともなければ動いているところ?を見たこともありません。 ですが、仕事で使っているシステムのデータベースの種類をある人に 伝えなければいけないので、前に聞いたとおり、その人には 「オラクル8iです」と答えました。 すると、その人は、「で、バージョンは?」と聞きました。 私は「え?オラクル8iです。」その人「いや、だからバージョンは?」 の繰り返しでした。 私が認識していた「Oracle8i」というのはオラクルのバージョンではないのでしょうか?? では、「Oracle8i」というのはなんなんでしょうか? 正しい答えを調べる方法と、「Oracle8i」がなんなのか、を教えていただきたいです。 宜しくお願いします!

  • oracle10gサーバに対しoracle9iのクライアントインストー

    oracle10gサーバに対しoracle9iのクライアントインストールしてsql plusで接続確認するとTNS操作タイムアウトが発生します。既にインストールされているoracle9iのクライアントからは問題なく接続できます。ファイアウオールの設定は同じです。やはりoracle10gをインストールしないとだめなのでしょうか。

  • Oracle8iでテーブルをエクスポートする方法

    Oracle10gを使用しています。Oracle8iから特定のテーブルを抽出してOracle10gに入れようとしましたが、Oracle10gのexpコマンドは互換性の問題で8iに対して使えませんでした。そこでOracle8iのexpコマンドを使用しようかと考えましたが、テーブルごとのエクスポートができないとのことで不可(データベースが大きすぎるため、そもそも8iのExpコマンドを実行できる権限を持っていないのでできませんが)。 仕方がないのでExpコマンドはあきらめて、テーブル定義抽出→データをCSVまたはSQLで抽出という手順でデータを移そうかと考えています。データの抽出はできたのですが、テーブル定義の取得は10gで使えるdbms_metadata.get_ddlが使用できないので取得できずにこまっています。8iでテーブル定義を取得するにはどうしたらいいのでしょうか? なお当方8iのデータベースのSystem/Sys権限を所有していないません。また8iがインストールされているサーバへログインすることもできません。それを考慮した上で実現可能な方法をご提示願います。

  • 異なるOracleサーバ上のテーブルを結合する方法

    異なるOracleサーバ上のテーブルを結合する方法 IPアドレスが異なるOracleのテーブルを結合して出力したいのですが可能でしょうか?2つのテーブルをローカルにダウンロードして結合表示するとパフォーマンスが悪いので、2つのサーバから直接データをダウンロードしたいのです。2つのOracleサーバは読み取り権限しか与えられておらず、SELECT文ぐらいしか使えません。 Oracle 10G Windows 2003 Server

  • 「Oracle10g」の読み方

    Oracle初心者です。 恥ずかしくて誰にも聞けないのでここで質問させていただきます。 Oracle10gの発音は「オラクルテンジー」で良いのでしょうか。 Oracle9iは「オラクルキュウアイ」ですか。 また、gやiにはどういった意味があるのでしょうか。 載っているサイトがありましたらそちらも教えていただきたく思います。 よろしくお願いいたします。

  • もうちょっと賢いSELECT文が書けないものでしょうか

    初めまして、最近SQLをかじり始めたぺーぺーです。 効率の悪いSELECT文しか書けずに困っています。 下記のテーブルsoftware_tableから、 ・name列「oracle」 ・version値が最大 のレコードに含まれるid(=3)を拾ってきたいのですが、自分の頭では副問い合わせを使う方法か、ソートを使う方法しか思いつきません。 問題は副問い合わせ・ソートを使うと計算コストが大きくなってしまうことで、できることなら副問い合わせ・ソートを使わずに解決したいのですが、何か方法はないものでしょうか? よろしくお願い致します。 ----------------------------- software_table id name version 1 oracle 1 2 oracle 2 3 oracle 3 4 postgres 1 5 postgres 2 6 postgres 3 7 postgres 4 ----------------------------- ■副問い合わせを使った方法 SELECT id FROM software_table WHERE name = 'oracle' AND version = (SELECT max(version) FROM software_table WHERE name = 'oracle'); ■ソートを使った例 SELECT id FROM software_table WHERE name = 'oracle' ORDER BY version DESC LIMIT 1 OFFSET 0; -----------------------------