Oracle XE 11g 找不到 XE 数据库
Oracle XE 11g the XE database was not found
我是一名新手,开始使用 Oracle 数据库,在将 Oracle XE 11g
x64 的最新版本安装到 Microsoft Windows 7 x64 Enterprise 时遇到了问题。
安装过程中没有任何错误,Windows 服务(OracleXETNSListener
和 OracleServiceXE
)已成功创建并启动。
但是,当我尝试获取可用数据库的列表时,我收到错误
ORA-01034: ORACLE not available
出于某种原因,XE 数据库未创建 到 %ORACLE_BASE%\oradata\XE
。
我的 listener.ora 与本地主机的内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product.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)
我通过设置本地主机 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 Database 11g Clusterware Release 11.2.0.2.0 - Production
Copyright 1996, 2010 Oracle. All rights reserved. 2016-01-20
19:51:43.920: [ default][5096]ut_read_reg:2:ocr registry key
SOFTWARE\Oracle\olr cannot be opened. error 2 [
CLSE][5096]clse_get_crs_home: Error retrieving OLR configuration [0]
[Error opening olr registry key. Не удается найти указанный файл. ]
我怎样才能找到问题并解决问题?
在为这个问题苦苦挣扎了将近一个星期后,我找到了一个解决方案,如何使 XE 数据库从此 source 可用。它是俄语的,我在这里用英语提供解决方案。
使用默认密码 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.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 line with admin previleges 运行 创建 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 数据库,在将 Oracle XE 11g
x64 的最新版本安装到 Microsoft Windows 7 x64 Enterprise 时遇到了问题。
安装过程中没有任何错误,Windows 服务(OracleXETNSListener
和 OracleServiceXE
)已成功创建并启动。
但是,当我尝试获取可用数据库的列表时,我收到错误
ORA-01034: ORACLE not available
出于某种原因,XE 数据库未创建 到 %ORACLE_BASE%\oradata\XE
。
我的 listener.ora 与本地主机的内容:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product.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)
我通过设置本地主机 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 Database 11g Clusterware Release 11.2.0.2.0 - Production Copyright 1996, 2010 Oracle. All rights reserved. 2016-01-20 19:51:43.920: [ default][5096]ut_read_reg:2:ocr registry key SOFTWARE\Oracle\olr cannot be opened. error 2 [
CLSE][5096]clse_get_crs_home: Error retrieving OLR configuration [0] [Error opening olr registry key. Не удается найти указанный файл. ]
我怎样才能找到问题并解决问题?
在为这个问题苦苦挣扎了将近一个星期后,我找到了一个解决方案,如何使 XE 数据库从此 source 可用。它是俄语的,我在这里用英语提供解决方案。
使用默认密码 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.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 line with admin previleges 运行 创建 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 从具有管理员权限的命令行。
完成。