Bagaimana mengatasi ORA-01031: kesalahan privilege yang tidak memadai pada instalasi Windows?

12

Saya menginstal Oracle 11G pada Windows 2008 R2 Server saya. Saya juga menginstal Perpustakaan Klien Oracle menggunakan media instalasi terpisah. Setelah instalasi klien, ketika saya mencoba masuk ke database menggunakan:

C:\>sqlplus / as sysdba

Saya mendapatkan kesalahan berikut:

ORA-01031: hak istimewa tidak memadai

Ini berfungsi sebelum instalasi klien. Akun saya ada di ORA_DBAgrup. Akun saya juga ada di grup Administrator. Saya tidak ORACLE_SIDmenetapkan di daftar variabel lingkungan saya. Haruskah begitu? Ini berfungsi sebelum instalasi klien, dan saya juga tidak memiliki variabel itu pada saat itu.

UAC aktif di level terendah, dan saya selalu dijalankan cmdsebagai admin.

Saya memiliki sqlnet.orafile seperti ini di folder:

C:\app\myaccount\product\11.2.0\dbhome_1\NETWORK\ADMIN

sqlnet.ora

# sqlnet.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# 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)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

tnsnames.ora

# tnsnames.ora Network Configuration File: C:\app\myaccount\product\11.2.0\dbhome_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.mydb.com)
    )
  )

listener.ora

# listener.ora Network Configuration File: C:\app\myaccount\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 = C:\app\myaccount\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\myaccount\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\app\myaccount

Dari registry windows (menggunakan regedit), dari path Computer > HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLEsaya dapat menemukan dua kunci:

KEY_OraClient11g_home1
KEY_OraDb11g_home1

Dan di bawah kunci itu saya dapat menemukan ORACLE_HOMEvariabel. Jadi sepertinya instalasi klien dihasilkan juga ORACLE_HOMEsehingga saya sekarang memiliki dua ORACLE_HOMEs. Saya tidak tahu apakah ini ada hubungannya dengan masalah ini?

Bagaimana mengatasi kesalahan ini di mesin Windows saya?

jrara
sumber

Jawaban:

7

Masalahnya adalah bahwa instalasi Oracle Client Anda ada di sistem PATH sebelum instalasi Oracle Server Anda (pada kenyataannya, Anda bahkan menyebutkan bahwa itu berfungsi sebelum Anda menginstal klien).

Lanjutkan sebagai berikut:

  1. Hapus Klien Oracle karena itu hanya hal-hal yang membingungkan. Gunakan opsi hapus instalan tetapi setelah itu periksa apakah direktori dan kunci registri Klien Oracle sudah tidak ada dan hapus dengan tangan jika perlu.

    (Ini mungkin untuk membuatnya bekerja dengan memiliki klien Oracle di jalur setelah server pulang, tetapi jauh lebih mudah untuk hanya memiliki instalasi tunggal. Instalasi server Oracle sudah mengandung klien Oracle yang lengkap pula).

  2. Pastikan jalur menuju rumah server ada di PATH Anda. Dan tidak ada rumah Oracle lain di jalurnya.

  3. Pastikan akun Anda berada di grup ORA_DBA. Periksa ini, terutama jika Anda menggunakan domain.

  4. Jika semuanya gagal, Anda dapat menghapus SQLNET.AUTHENTICATION_SERVICES=(NTS)dari sqlnet.ora Anda karena ini akan memaksa Anda untuk menggunakan otentikasi kata sandi.

Colin 't Hart
sumber
Membantu saya untuk meletakkan nampan OracleXE sebelum tempat klien di PATH
mmey
masalah saya adalah SQLNET.AUTHENTICATION_SERVICES = (NONE) bukannya NTS
jcho360
0

Saya telah menginstal 10g dan 11g di laptop saya, plus klien OBIEE baru-baru ini. Saya dulu bisa login sebagai sysdb ke 11g misalnya, tetapi mendapat yang berikut pagi ini:

SQL> conn / as sysdba
ERROR:
ORA-01031: insufficient privileges

Saya menyelesaikan masalah dengan melakukan hal berikut:

  1. startup db & listener;
  2. pastikan tnsname bekerja dengan tnsping orcl; kemudian
  3. set ORACLE_SID=orcl
  4. sqlplus sys/"passwd"@orcl as sysdba

Semoga ini membantu.

pengguna57255
sumber