私はSQL Server開発者/ DBAコンサルタントで、最近Oracle DBAを失った顧客を支援しています。私はOracleで開発を行いましたが、DBAの作業はそれほど多くなく、このようなマルチホーム環境ではありません。
問題: SQL Plusから「SYS As SYSDBA」を使用して接続できますが、同じシステム上のSQL Developerからはできません 。ただし、SQLプラスまたはのいずれかで「システム」を使用して接続できます SQL開発者。
詳細:
このサーバーでは、私のWindows管理者アカウント(Oracle Admin Asstでサーバー管理者としても入力されています)で、次のDOSコマンドが機能します。
D:\Oracle\app\product\11.2.0\dbhome_1\BIN>sqlplus /@MyDb as sysdba
そして、Select * from V $ INSTANCEは、それがMyDbにあり、ツールとデータベースの両方が11.2.0.3であることを示しています。
これもそうです:
D:\Oracle\app\product\11.2.0\dbhome_1\BIN>sqlplus sys/<pwd>@MyDb as sysdba
(ALSO:wrongパスワードの入力も機能します(!))
同じ(サーバー、アカウント、およびホーム)からSQL-Plusスタートメニューオプションを使用すると、これらも機能します。
Enter user-name: /@MyDb as sysdba
Enter user-name: sys/<pwd>@MyDb as sysdba
V $ INSTANCEから*を選択すると、それがMyDbにあり、ツールとデータベースの両方が11.2.0.3であることを示します。
同じSQL DeveloperからMyDbにアクセスしようとすると、 "system"ユーザー名は成功しますが、 "sys"は "ORA-01031:不十分な特権"でsysdbaとして失敗します。ただし、これは他のサーバー上の他のデータベースに接続するときに機能します。
私はこれを調査しましたが、投稿されたこのヘルプのほとんどは、接続がまったくできない場合を対象としているようですが、ここではそうではありません。これらのいくつかを回避するために:
私の直感はどちらかです
これに関するヘルプやガイダンスは大歓迎です。
OK、それで@BalasPappからの指示を使用して、私は以下をさらに見つけることができました:
D:\Oracle\app\product\11.2.0\dbhome_1D:\Oracle\app\product\11.2.0\dbhome_1
にパスされたOraDb11g_home3と呼ばれるsecondOracle 11gホームによって処理されます。show parameter remote_login_passwordfile
は、 "[〜#〜] exclusive [〜#〜]"の値を示します。Listener.oraの内容:
# listener.ora Network Configuration File: D:\Oracle\app\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(Oracle_HOME = D:\Oracle\app\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\app\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = <SERVERNAME>.<networkname>.local)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = D:\Oracle\app
Sqlnet.oraの内容:
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES = (NTS)
lsnrctl status
の出力:
D:\Oracle\app\product\11.2.0\dbhome_1\BIN>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 23-DEC-2015 12:03:55
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<SERVERNAME>.<networkname>.local)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.3.0 - Production
Start Date 02-DEC-2015 16:25:41
Uptime 20 days 19 hr. 38 min. 17 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File D:\Oracle\app\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File D:\Oracle\app\diag\tnslsnr\<SERVERNAME>\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=<SERVERNAME>.<networkname>.local)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "<DBNAME>" has 1 instance(s).
Instance "<DBNAME>", status READY, has 1 handler(s) for this service...
The command completed successfully
D:\Oracle\app\product\11.2.0\dbhome_1\BIN>
SQL Developerから接続するときのパラメーター:
Username: system (or sys)
Password: <...>
Connection
Type: Basic
Role: Default (or SYSDBA)
Hostname: localhost
Port: 1521
SID (or Service name, both work/fail the same):
<dbname>
(Neither OS Authentication nor Kerberos is set)
「システム、デフォルト」で機能し、「sys、SYSDBA」で「権限が不十分」で失敗します。 OS認証とKeberos設定の多くの組み合わせも試しましたが、役に立ちませんでした。
最後に、これらは.ora
ディレクトリにある2つの/database
ファイルのみです。
SNCF<DBNAME>.ORA (18MB)
SPFILE<DBNAME>.ORA (4kb)
メモ帳では、どちらもバイナリファイルのように見えます。
また、select * from v$pwfile_users
は行を返しません。
Sql * net経由でクライアントから「sysdbaとして」を使用して接続するには、
パスワードファイルのデフォルトの場所は$ Oracle_HOME/dbsですが、Oracle v12以降はASMに保存することもできます。その場合、srvctlを使用してそれを見つけます