1

Redhat 5 に 11g2 をインストールしました。次のように sqlplus を使用してログインしました。

$sqlplus sys/abcabc as sysdba

次のようにユーザーを作成しました。

sqlplus> create user "xyz" 
           profile "DEFAULT" 
           identified by "abcabc" 
           default tablespace "MYTAB" 
           temporary tablespace "TEMP" 
           account unlock;

sqlplus> grant dba to "xyz"

sqlplus> commit

sqlplus は、ユーザーが作成され、dba が付与されたことを報告しました。sqlplus によって報告されたエラーはありません。

次のようにログインしようとすると:

$sqlplus xyz/abcabc

再度ログイン プロンプトが表示され、3 回再試行した後、追い出されます。

しかし、次のようにログインすると:

$sqlplus xyz/abcabc as sysdba

ログインします。

何が問題なのですか?以前に何度もユーザーを作成するためにまったく同じ手順を実行しましたが、常に機能していました。sysdba としてログインする必要がある今回の違いは何ですか?

ありがとう

4

2 に答える 2

2

大文字と小文字を区別するユーザー名を作成してもよろしいですか? それは非常に珍しいことです。

Oracle 識別子を二重引用符で囲むと、大文字と小文字を区別する識別子として扱うよう Oracle に要求されます。だからあなたが

create user "xyz"

大文字と小文字を区別するユーザー名を求めています。多くのツールでは、大文字と小文字を区別する識別子を問題なく渡すことができるため、シェルで二重引用符を適切にエスケープすることを心配する必要があります。

ほとんどの場合、大文字と小文字を区別する識別子は必要ありません。大文字と小文字を区別しない標準の識別子を使用したいだけです

 create user xyz
     profile "DEFAULT" 
     identified by "abcabc" 
     default tablespace "MYTAB" 
     temporary tablespace "TEMP" 
     account unlock;

テーブルスペース名とプロファイル名から二重引用符を削除することをお勧めしますが、それは問題の原因ではありません。

于 2012-10-26T23:23:15.850 に答える
0

しかし、次のようにログインすると:

$sqlplus xyz/abcabc as sysdba

ログインします。

次のようにログインすることもできます。

$sqlplus / as sysdba

これは/ as sysdba、Oracle が OS 認証に依存するためです。OS ユーザーがdbaグループの一部である場合 (Unix の場合)、または管理者特権 (Windows の場合) を持っている場合は、そのグループに属しています。

ただし、ユーザーを指定したかどうかに関係なく、SYSとして参加しています。SYS はデータ ディクショナリの所有者であるため、これは危険です。そのため、自分が何をしているのかわからない場合、非常に簡単にデータベースをめちゃくちゃにすることができます。

于 2012-10-27T06:40:27.650 に答える