質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

3015閲覧

Oracleのインデックステーブルについて

退会済みユーザー

退会済みユーザー

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2017/03/01 11:03

ORACLE/オラクル・データディクショナリ(DBA_INDEXES)

上記サイトに
・ALL_INDEXES は、ログインしているユーザーがアクセスできるすべての表上の索引
・USER_INDEXES は、ログインしているユーザーが所有する全ての索引
と書いてありますが、「アクセスできる」と「所有する」とはどう違うのでしょうか?
全くイメージがわきません・・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

これを理解するためにスキーマというものを理解している必要があります。
詳しくはご説明しませんが、Oracleのユーザは、自身と同じ名前の単一のスキーマを所有します。
このことから、Oracle界隈では「ユーザー=スキーマ」とよく言われます。(厳密には違いますが)
このスキーマ(論理的な箱のようなもの)の中には、ユーザが所有するデータベースオブジェクト(テーブルやインデックス等)が含まれています。
ユーザーは自身のスキーマのデータベースオブジェクトに対してはあらゆる操作が可能ですが、異なるユーザーのスキーマのデータベースオブジェクトにアクセスするには「権限」が必要となります。
上記の「異なるユーザーのスキーマのデータベースオブジェクトにアクセス」という部分が「所有」との違いになります。

投稿2017/03/01 11:59

xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/01 12:40

ご回答ありがとうございます。 インデックスを使用するときにSQL文で明示的に特定のスキーマのインデックスを使用してテーブルを検索することは可能なのでしょうか?
xenbeat

2017/03/02 01:22

可能です。 異なるユーザーが所有する(別スキーマ)テーブルへのアクセス権限が付与されていれば、その表に対して作成されているインデックスを使うことができます。 そのインデックスを明示的に使用したい場合はインデックスヒント文を使います。
退会済みユーザー

退会済みユーザー

2017/03/02 02:04

ご回答ありがとうございます。
guest

0

大雑把にいうと、
アクセスできるとは、他のユーザーのテーブルをログインしたユーザーに GRANT SELECT, DELETE or UPDATE などの権限があるのでアクセスできる。
所有するとは、ログインしたユーザーでCREATE TABLE, CREATE INDEX したので、そのユーザーが所有します。

Oracleに限らずこの手の覚えておかないといけない初歩的なことはたくさんありますから、Oracle SQL入門書、PL/SQL入門書などのやさしい書籍を買って勉強するか、お金を工面できて将来一流のOracleの熟練者を目指すなら、有償研修 に行かれては?

投稿2017/03/01 11:44

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/01 12:40

ご回答ありがとうございます。 インデックスを使用するときにSQL文で明示的に特定のスキーマのインデックスを使用してテーブルを検索することは可能なのでしょうか?
Orlofsky

2017/03/01 13:02

SQLを実行できる環境は用意されていますか?Oracleのバージョンは? CREATE TABLE, CREATE INDEX した後、ALL_INDEXESのOWNER, TABLE_OWNERをSELECTして内容を確認しましたか? あるスキーマ(スキーマ1としましょう)のテーブル(テーブル1としましょう)は通常スキーマ1.テーブル1にインデックスを作ります。CREATE ANY INDEX権限があるスキーマからならスキーマ1のテーブル1にインデックスを作ることが可能です。 http://docs.oracle.com/cd/E57425_01/121/SQLRF/statements_5013.htm#i2062403 SQLを実行した時、そのテーブルに複数のインデックスが設定されている時にどのインデックスを使うか、あるいはインデックスを使わないで直接テーブルを読むかは自動的にオプティマイザが選択します。 たとえパフォーマンスが落ちても特定のインデックスを使わせたい場合はヒント文で特定のインデックスを指定します。 http://docs.oracle.com/cd/E57425_01/121/SQLRF/sql_elements006.htm#BABEFDFC
退会済みユーザー

退会済みユーザー

2017/03/02 02:04

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問