
WindowsXPのOracle9i環境にて、
まず、以下のようにしてユーザ「username」を作成しました。
create user username identified by Password default tablespace tab_space temporary tablespacetemp;
grant dba,resource,connect to username;
次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp';
ディレクトリを作成しました。
そして、そのディレクトリに対して、以下のように権限付与しようとすると、「ユーザ"username"が存在しません。」エラーが発生します。
grant READ,WRITE ON directory dir to username;
また、grant READ,WRITE ON directory dir to public;
とすると、権限付与は成功しますが、ユーザusernameにはディレクトリ参照権限は与えられていませんでした。
何か間違っておりますでしょうか?
それとも何か手順で足らないものがあるのでしょうか?
ご教示いただければと思います。
No.3
- 回答日時:
提示した手順を行なってもユーザーが作成できないということでしょうか。
その場合、障害としか思えません。
ではなくて、当初作成したというユーザが存在しないという場合、作業間違いでユーザが作成できていないと思われます。
dba_usersに表示されない以上、そうとしか思えません。
再度、提示した手順を行い、その内容を提示してください。
でなければ、どの点がわるいのか切り分けできません。
本当に一から、つまり表領域からユーザから作成した場合はうまくユーザ作成できておりました。
今回の件ですが、説明不足で大変申し訳ありませんでしたが、あるパッケージにて自動作成されたユーザになります。ログから推測するに通常のユーザ作成かと思っておりましたが、ひょっとすると特殊な作成をされているのかもわかりません。
逆に、当然ながらDBには普通にログインできるユーザに対してそのようにSYSユーザからは見えないようなユーザにすることができるものなのでしょうか?
結局はそのユーザにディレクトリ権限を与えたいだけなのですが・・・。
申し訳ありません。ご教示いただければと思うのですが。。
No.2
- 回答日時:
9iでやってみましたが、問題なく動きます。
(パッチも当ててないです)
>次にsysユーザにて、CREATE DIRECTORY FILE_PATH as 'd:\temp';
>ディレクトリを作成しました。
ここでディレクトリの名前が「FILE_PATH」ですが、
>grant READ,WRITE ON directory dir to username;
上のSQLでは「dir」になってます。
この辺が原因では?
p.s. ファイル出力は、3rd_001さんのを使用させていただきました。
----------------------------------------------- 以下はログ
C:\>sqlplus "sys/sysman as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 日 Dec 21 17:05:26 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
に接続されました。
SQL> create user username identified by hoge default tablespace users temporary
tablespace temp;
ユーザーが作成されました。
SQL> grant dba,resource,connect to username;
権限付与が成功しました。
SQL> CREATE DIRECTORY FILE_PATH as 'c:\temp';
ディレクトリが作成されました。
SQL> grant READ,WRITE ON directory FILE_PATH to username;
権限付与が成功しました。
SQL> connect username/hoge
接続されました。
SQL> declare
2 fh utl_file.file_type;
3 begin
4 fh := utl_file.fopen( 'FILE_PATH','hoge.txt','a',32767);
5 utl_file.put_line(fh, 'hoge');
6 utl_file.fclose(fh);
7 end;
8 /
PL/SQLプロシージャが正常に完了しました。
SQL> host dir c:\temp
c:\temp のディレクトリ
2008/12/21 17:10 6 hoge.txt
SQL> host type c:\temp\hoge.txt
hoge
SQL>
No.1
- 回答日時:
当方、11gですが記載されている手順をそのまま実行したところ
全く問題なく出来ております。
以下が実際のSQLと結果です。
そちらの環境で、以下を実行しても駄目でしょうか?
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL> create user test01 identified by test01
default tablespace users
temporary tablespace temp;
ユーザーが作成されました。
SQL> grant dba,resource,connect to test01;
権限付与が成功しました。
SQL> CREATE DIRECTORY FILE_PATH as 'c:\temp';
ディレクトリが作成されました。
SQL> grant READ,WRITE ON directory FILE_PATH to test01;
権限付与が成功しました。
SQL> declare
fh utl_file.file_type;
begin
fh := utl_file.fopen( 'FILE_PATH','hoge.txt','a',32767);
utl_file.put_line(fh, 'hoge');
utl_file.fclose(fh);
end;
/
PL/SQLプロシージャが正常に完了しました。
SQL> exit
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsとの接続が切断されました。
more c:\temp\hoge
hoge
ご回答ありがとうございます。
作成したユーザーがSYSユーザーから見えていないようで権限付与ができません。
select username from dba_usersで確認した中に見当たりません。なので権限付与ができないのです。「ora-01917ユーザー又はロールは存在しません。」が発生します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- その他(開発・運用・管理) Windowsバッチファイルでリモートデスクトップを自動ログインするが確認画面が出る対処方法 1 2022/12/19 15:48
- PHP php エラー 2 2022/10/23 16:43
- PHP php ログイン 1 2022/11/01 00:24
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux 空のディレクトリで dir を行ったとき 4 2023/05/05 17:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-29280:無効なディレクトリ...
-
oracleでexpdpを使いデータをex...
-
xy平面上の点P(x,y)に対し,点Q(...
-
ORA-01013のエラーについて経験...
-
DOSプロンプトとコマンドプロン...
-
レジストリチェッカーのウイン...
-
ストアドファンクションの実行
-
Oracleの起動時に、マウントし...
-
コムテックドライブレコーダーH...
-
CASE文のエラーについて
-
SQL Server 2005 EXPRESSでログ...
-
Oracleで流したSQLのログを取得...
-
ACCESSでパススルークエリにパ...
-
フラッシュバックデータベース...
-
share docsってどう読むのですか?
-
Oracle バッファ領域に...
-
FULL OUTER JOIN (Javaから発行)
-
ORACLEのエクスポートについて
-
リカバリ
-
PHPからODBCによるOracle10gへ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルへの書き込みができない
-
ORA-29280:無効なディレクトリ...
-
データベースオブジェクトの考...
-
Oracle DataPumpでの移行
-
ユーザーへのディレクトリ権限...
-
oracleでexpdpを使いデータをex...
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
PL/SQLでログを確認したい。
-
Oracleの起動時に、マウントし...
-
DOSプロンプトとコマンドプロン...
-
はじめまして!
-
ORA-01843: 指定した月が無効で...
-
Oracleで流したSQLのログを取得...
-
PL/SQL PLS-00103エラーについて
-
シェルスクリプトでオラクルの...
-
SQL*Plusで、コマンドの返答を...
-
PL/SQLのコンパイルエラーにつ...
-
4GB = 4096MB ではない?
-
oracle ダンプファイルのサイズ...
おすすめ情報