Oracle DB 12c 无法启动 tns 服务

Oracle DB 12c can't start tns service

昨天我重新启动了我的机器,现在我的数据库不可用了。 我第一次 运行 已经遇到了一些困难,因为有两种不同的 Oracle DB 安装。

我认为他们应该 windows 的服务 运行:

如您所见:我无法启动 OracleOraDB12Home3TNSListener 服务。

我更改了文件 tnsnames.ora :

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


  FOOBAR=
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myurl.com)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FOOBAR)
    )
  ) 

而我的 listener.ora 是

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\OracleDB\product.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleDB\product.1.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = myurl.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

我已经尝试了很多事情,例如:

ORA-00119: 系统参数规范无效 LOCAL_LISTENER ORA-00132: 语法错误或无法解析的网络名称 'LISTENER_FOOBAR'

* 第 1 行的错误: ORA-01034: ORACLE 不可用 进程号:0 会话 ID:0 序列号:0

当我查看 OracleDB12Home3 的 Oracle 管理帮助时:

有人知道如何帮助我吗?

经过长时间的调查,感谢同事的帮助,它正在工作。

总结一下我们是如何解决它的:

  • 所以要解决我的第一个问题 'OracleOraDB12Home3TNSListener can not start' 是因为我有一个新的 IP。所以我在配置中更改了它 (...\NETWORK\ADMIN ): https://community.oracle.com/thread/855326

  • 当我尝试与 sql 开发人员 连接时(在我的计算机重新启动后)。我遇到错误:ORA-01034:ORACLE 不可用 ORA-27101:共享内存领域不存在。这意味着我的数据库没有启动 (http://www.dba-oracle.com/sf_ora_01034_oracle_not_available.htm)。

  • 所以我尝试手动启动数据库 sqlplus / as sysdbastartup 但我总是有这个输出:

    SQL> 启动 ORA-00119: 系统参数规范无效 LOCAL_LISTENER ORA-00132: 语法错误或无法解析的网络名称 'LISTENER_FOOBAR'

  • 为了修复,我尝试处理 LISTENER.ORATNSNAMES.ORA 文件:

LISTENER.ORA


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\OracleDB\product.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleDB\product.1.0\dbhome_1\bin\oraclr12.dll")
    )
    (SID_DESC =
      (GLOBAL_DBNAME=FOOBAR)
      (ORACLE_HOME = C:\OracleDB\product.1.0\dbhome_1)
      (SID_NAME = FOOBAR)
    )
  )

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

TNSNAMES.ORA


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


FOOBAR =
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =  localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = FOOBAR)
    )
  ) 
  • 我多次尝试重新启动正确的 windows 服务:OracleServiceFOOBAR 但没有任何变化。我总是有同样的问题。我记得我做过pfile配置。

  • 所以我决定用 alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) 之类的东西来更改 pfile 配置'范围=两者;。是的,但我无法应用任何命令行,因为数据库未启动...

  • 所以我用 *.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)) 创建了一个名为 init.ora 的 pfile ' 来自 的技巧。我在参数 SQL> startup pfile=c:\oracledb\admin\XXX\pfile\init.ora

  • 中用这个文件启动了数据库

然后它开始工作了。