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

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

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

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

Q&A

解決済

1回答

6737閲覧

「sqlplus KANRI/PASS@TEST as sysdba」で接続するとなぜかSYSのテーブルが見える

nobuzoh

総合スコア196

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

0グッド

0クリップ

投稿2017/03/01 08:41

編集2017/03/01 08:44

Windows7 ProにOracle 12cを入れてみました。
10年ほど前に9i,10gでの開発をやったことはあるのですが、
もう完全に忘れてしまったレベルです。

手順と問題は以下の通りです。

手順(分かる人には手順4の問題発生時点から見てもらえば十分ではないかと思います)
1.データベースTESTをDCAで作成
グローバル・データベース名:TEST
記憶のタイプ:ファイルシステム
キャラセット:JA16SJISTILDE
コンテナ・データベースとして作成:チェックなし

2.sqlplusでKANRIユーザを作成

sqlplus SYS/PASS@TEST AS SYSDBA

create profile KANRI_UPF limit failed_login_attempts unlimited password_life_time unlimited password_reuse_max unlimited password_lock_time unlimited password_grace_time unlimited ;

-- default tablespace of TEST create tablespace TEST datafile 'TEST1.dbf' size 100M autoextend on next 500K maxsize unlimited , 'TEST2.dbf' size 100M autoextend on next 500K maxsize unlimited , 'TEST3.dbf' size 100M autoextend on next 500K maxsize unlimited ; -- temporary tablespace of TEST create temporary tablespace TEST_TMP tempfile 'TEST_TMP.dbf' size 64M reuse autoextend on maxsize 1024M ;

create user KANRI identified by "KANRI" default tablespace TEST temporary tablespace TEST_TMP quota unlimited on TEST profile KANRI_UPF; grant create session to KANRI; grant create tablespace to KANRI; grant create table to KANRI; grant create view to KANRI; grant create procedure to KANRI; grant create trigger to KANRI; grant create sequence to KANRI; grant create snapshot to KANRI;

3.簡単なtestテーブルとデータを作成(ここははしょります)

4.データの確認 ※ここで問題発生※

sqlplus KANRI/PASS@TEST as sysdba

とログインしたのですが、

select * from test; ```とすると ```ここに言語を入力 行1でエラーが発生しました。: ORA-00942: 表またはビューが存在しません。

と表示されました。
ここで、

select table_name from user_tables;

を見てみると、SYSユーザのテーブルが表示されました。
(どうしてSYSユーザのテーブルだと分かったかというと、
A5:SQL MK-2というDB管理ツールのGUI上で確認したからです)

また、

select * from KANRI.test;

とするとデータが取れることも分かりました。

ということは、
sqlplus KANRI/PASS@TEST as sysdba
ではKANRIユーザとしてはログインできてないのかなーと思い、

sqlplus HOGEHOGE/PASS@TEST as sysdba

などの様に存在しないユーザを入力したところ、
接続ができてしまいました。

このsqlplusコマンド上のユーザ名ってなんの意味があるのでしょうか?
KANRIユーザとして

select * from test

でデータを取得するためにはどうしたら良いでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

はしょられた 3. で、SQL を流した時のログインユーザーは何ですか? as sysdba 付きでログインしていませんか?

sqlplus で as sysdba を付けた場合、デフォルトスキーマがユーザのものではなく、sys になります。また実質上 sys ユーザでログインしたことになります。
ですから存在しないユーザを指定していても無視されます。

なので、3. のときに as sysdba でログインしたままですから、テーブルは kanri に作られていたとしても、普通に select を書いたら sys.[テーブル名] を捜すので、そんなものはない、と言われてしまうわけです。

そもそも as sysdba を付ける必要はほとんどないはずです。それこそユーザを作るとか重大なトラブルに対するトラブルシュートをするなどの場合に限られます。

投稿2017/03/01 08:51

編集2017/03/01 08:59
tacsheaven

総合スコア13703

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

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

nobuzoh

2017/03/01 13:28

as sysdbaをつけないと ERROR: ORA-01017: invalid username/password; logon denied と出て、接続ができなかったので、 3も含め全部as sysdbaをつけていました。 どうしてsys扱いになったのかは理解できましたが、 根本的な問題はas sysdbaをつけないと接続できないことだったようです。 また、接続できない理由も実はなんとなく分かってて、 手順のどこにもKANRIのパスワードを設定している部分がないんです。 sysとsystemに関してはDCAでのデータベース作成の最後にパスワード設定ボタンがあってそこでパスワード入力したのは覚えているんですが・・・。 それで、じゃあKANRIのパスワードはってことで調べて、 SQL>password KANRI でできることが分かったのでパスワードを設定したところ、 全て解決できました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問