Oracle XE 11g XE 数据库未找到

Posted

技术标签:

【中文标题】Oracle XE 11g XE 数据库未找到【英文标题】:Oracle XE 11g the XE database was not found 【发布时间】:2016-04-26 17:04:00 【问题描述】:

我是一个刚开始使用 Oracle 数据库的新人,在将最新版本的 Oracle XE 11g x64 安装到 Microsoft Windows 7 x64 Enterprise 时遇到了问题。

在安装过程中没有出现任何错误,Windows 服务(OracleXETNSListenerOracleServiceXE)已成功创建并启动。

但是,当我尝试获取可用数据库列表时,我收到一个错误

ORA-01034:ORACLE 不可用

由于某种原因,XE 数据库没有创建%ORACLE_BASE%\oradata\XE

我的listener.ora的内容与localhost:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)

我通过设置 localhost IP 地址修复了 tnsnames.ora:

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

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

sqlnet.ora 包含这两个服务:

SQLNET.AUTHENTICATION_SERVICES = (NONE;NTS)

来自 '%ORACLE_HOME%\server\log\myhost\client' 的日志文件包含以下错误:

Oracle 数据库 11g 集群件版本 11.2.0.2.0 - 生产 版权所有 1996, 2010 甲骨文。版权所有。 2016-01-20 19:51:43.920: [默认][5096]ut_read_reg:2:ocr 注册表项 SOFTWARE\Oracle\olr 无法打开。错误 2 [ CLSE][5096]clse_get_crs_home: 检索 OLR 配置时出错 [0] [打开 olr 注册表项时出错。 Не удается найти указанный файл。 ]

我怎样才能找到问题所在并解决问题?

【问题讨论】:

首先我要警告你,这可能需要一些时间来排除故障!您确定数据库创建本身已经成功吗?您显示的错误表明客户端连接到数据库时出现问题。能否分享一下OracleDatabaseXEServerInstall.log的内容,它位于系统根目录,通常是C:\WINDOWS 很遗憾,没有在 Windows 和 Oracle 目录中找到这个日志文件 好的,但是您在安装数据库或连接数据库时遇到问题吗?日志文件消息的位置表明这是连接到数据库的问题。 一个错误是ORA-01034: ORACLE not available。我提供了有关该问题的更多详细信息 【参考方案1】:

在解决这个问题将近一周后,我找到了一个解决方案,如何通过这个source 使 XE 数据库可用。它是俄语的,我在这里用英语提供解决方案。

    使用默认密码 admin 从 Oracle 站点将 Oracle XE 11gR2 的最新版本安装到默认位置 c:\oraclexe。如果不是默认值,那么您应该在使用它们之前编辑下面的脚本(路径和密码)。

    在管理员权限下运行 cmd 命令行并使用它直到重新配置结束。首先,为您的数据库设置环境变量:

    set ORACLE_SID=XE
    set ORACLE_BASE=c:\oraclexe\app\oracle 
    set ORACLE_HOME=c:\oraclexe\app\oracle\product\11.2.0\server
    

    通过命令删除XE数据库:

    oradim -delete -sid XE
    

    删除PWDXE.ORA file

    del %ORACLE_HOME%\database\PWDXE.ORA
    

    init.ora%ORACLE_HOME%\config\scripts复制到%ORACLE_HOME%\database,而不是现有的,将其重命名为initXE.ora并添加以下配置:

    open_cursors=300
    db_name=XE
    control_files=("C:\oraclexe\app\oracle\oradata\XE\control.dbf")
    job_queue_processes=4
    compatible=11.2.0.0.0
    diagnostic_dest=C:\oraclexe\app\oracle\.
    memory_target=1G
    sessions=100
    audit_file_dest=C:\oraclexe\app\oracle\admin\XE\adump
    remote_login_passwordfile=EXCLUSIVE
    dispatchers="(PROTOCOL=TCP) (SERVICE=XEXDB)"
    shared_servers=4
    undo_management=AUTO
    undo_tablespace=UNDOTBS1
    DB_RECOVERY_FILE_DEST_SIZE = 10G
    DB_RECOVERY_FILE_DEST=C:\oraclexe\app\oracle\fast_recovery_area
    #optional
    nls_language="RUSSIAN"
    nls_territory="RUSSIA"
    

    从上一个带有管理员权限的 cmd 行运行命令以创建 Oracle 服务和文件 %ORACLE_HOME%\database\PWDXE.ORA

    oradim -new -sid %ORACLE_SID% -intpwd admin -startmode auto -srvcstart system
    

    运行以下命令以停止 Windows Oracle XE 服务,删除它们和其他 XE 文件:

    sqlplus /nolog
    connect sys/admin as sysdba;
    shutdown immediate;
    exit;
    del %ORACLE_BASE%\oradata\XE\CONTROL.DBF
    del %ORACLE_BASE%\fast_recovery_area\XE\ONLINELOG\*.LOG
    

    在一个目录下创建两个文件:

createXE.cmd

set ORACLE_SID=XE
set NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
set ORACLE_BASE=C:\oraclexe\app\oracle
sqlplus /nolog @createXE.sql

createXE.sql

spool %ORACLE_BASE%\admin\XE\CreateXE.log;
connect sys/admin as sysdba;
startup nomount;
CREATE DATABASE XE
LOGFILE GROUP 1 SIZE 51200K,
GROUP 2 SIZE 51200K
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
CHARACTER SET CL8MSWIN1251
NATIONAL CHARACTER SET AL16UTF16
DATAFILE 'c:\oraclexe\app\oracle\oradata\XE\system.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE 'c:\oraclexe\app\oracle\oradata\XE\sysaux.dbf' SIZE 120M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE 'c:\oraclexe\app\oracle\oradata\XE\temp.dbf' SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
SMALLFILE UNDO TABLESPACE UNDOTBS1 DATAFILE 'c:\oraclexe\app\oracle\oradata\XE\undotbs1.dbf' SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED;
CREATE SMALLFILE TABLESPACE USERS DATAFILE 'c:\oraclexe\app\oracle\oradata\XE\users.dbf' SIZE 300M REUSE AUTOEXTEND ON NEXT  1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO;
-- catalog
@%ORACLE_HOME%\rdbms\admin\catalog.sql;
@%ORACLE_HOME%\rdbms\admin\catblock.sql;
@%ORACLE_HOME%\rdbms\admin\catproc.sql;
@%ORACLE_HOME%\rdbms\admin\catoctk.sql;
connect system/manager
-- sqlplus profile
@%ORACLE_HOME%\sqlplus\admin\pupbld.sql;
@%ORACLE_HOME%\sqlplus\admin\help\hlpbld.sql helpus.sql;
connect sys/admin as sysdba;
-- xdb protocol
@%ORACLE_HOME%\rdbms\admin\catqm.sql change_on_install SYSAUX TEMP NO;
@%ORACLE_HOME%\rdbms\admin\catxdbj.sql;
@%ORACLE_HOME%\rdbms\admin\catrul.sql;
-- compiling invalid objects
@%ORACLE_HOME%\rdbms\admin\utlrp.sql;
spool off;
exit;

    使用管理员权限从命令行运行 createdXE.cmd

    完成。

【讨论】:

以上是关于Oracle XE 11g XE 数据库未找到的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 11g XE 试用记录

如何从 Oracle 11g XE 导出“数据库”并将其导入 Oracle 10.2?

PLSQL Developer12连接远程Oracle xe 11g

Oracle 11g XE release2安装与指导

在 Oracle 11g XE 上更改 NLS 字符集参数

oracle-xe-11g docker 镜像怎么安装