因此,我将首先说明我已将Oracle 11.2 XE的常规安装位置移动到我在RHEL 6.6服务器上创建的逻辑卷(/ oracle)。在关闭数据库和Oracle监听器之后,我执行了...
$ cp -R /u01/app/* /oracle
$ rm -rf /u01/app/oracl
$ ln -s /oracle/oracle /u01/app/oracle
然后重新启动监听器和数据库。现在,当我尝试以用户“oracle'”运行以下内容时我收到了一条消息......
$ sqlplus
Enter user-name: sys / as sysdba
Enter password: ****
Connected to idle instance.
此外,当我尝试启动时,我收到错误。
> startup
ORA-45301: XE Edition single instance violation error
我试图找到here的解决方案无济于事。
以下是我的侦听器控制器的输出:
bash-4.1$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 10-MAR-2015 10:26:25
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production
Start Date 10-MAR-2015 10:25:57
Uptime 0 days 0 hr. 0 min. 28 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/dev/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dev)(PORT=1521)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
我真的很想知道下一步该尝试什么。我知道我可以重新安装并将目录保存在正确的位置,但我需要它在其自己的逻辑卷中。
修改
有助于澄清我的系统的一些进一步信息...
bash-4.1$ env | grep ORA
ORACLE_SID=XE
ORACLE_BASE=/oracle/oracle
ORACLE_HOME=/oracle/oracle/product/11.2.0/xe
bash-4.1$ env | grep TNS
TNS_ADMIN=/oracle/oracle/product/11.2.0/xe/network/admin
bash-4.1$ ps -aux | grep pmon
oracle 2431 0.0 0.2 1265956 16652 ? Ss 11:43 0:00 xe_pmon_XE
进一步编辑
尝试使用SYSTEM用户登录sqlplus时返回错误:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux-x86_64 Error: 2: No such file or directory
进一步编辑
输出ipcs命令
bash-4.1$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xc0a59444 32768 oracle 660 4096 0
------ Semaphore Arrays --------
key semid owner perms nsems
0xd4a9963c 229378 oracle 660 104
0x884d8f34 491523 oracle 660 104
------ Message Queues --------
key msqid owner perms used-bytes messages
答案 0 :(得分:1)
检查ipcs
命令的输出并尝试删除Oracle拥有的所有共享内存段/信号量。
当Oracle启动时,它使用两个字符串ORACLE_SID(大写)和ORACLE_HOME,对这两个字符串进行哈希处理,并使用此哈希值作为shmget
调用的键。因此,即使您将斜杠/
附加到ORACLE_HOME,一切都与Oracle的观点不同 - 即使磁盘路径相同。
所以我认为你将ORACLE_HOME移到了其他位置,但是旧的值保留在某处,现在Oracle认为你正在尝试启动多个实例。
编辑:我不确定XE,但是常规的Oracle版本是作为一堆.o
目标文件提供的。这些文件在安装期间链接,但您也可以随时重新链接Oracle。如果旧的ORACLE_HOME是硬编码的,请检查脚本$ORACLE_HOME/bin/relink
。然后尝试通过执行relink all
重新链接所有库。另请注意,Oracle使用链接选项-Wl,-rpath=...
,因此一些Oracle二进制文件在其中编译了库搜索补丁。
对于标准版/企业版,将二进制文件复制到不同的Oracle主页并不是问题。
答案 1 :(得分:0)
签入/u01/app/oracle/product/11.2.0/xe/dbs/如果您已重命名XE数据库或尝试创建新数据库,则必须确保xe只知道一个数据库。它仅限于一个实例。 /etc/init.d/oracle-xe停止 cd /u01/app/oracle/product/11.2.0/xe/dbs/ 将任何未使用的pwfile和spfile重命名为.old /etc/init.d/oracle-xe start
答案 2 :(得分:-1)
问题在tsnnames.ora中是一个错误的条目(我添加了一条不应该存在的行)以及我/ oracle目录的权限不正确。感谢所有试图提供帮助的人,非常感谢。