Database 类别下的文章

情况描述

客户报告数据库故障,新来的系统管理员误操作。删掉了一些文件。具体情况是:删掉了所有重要数据文件、所有控制文件。数据库原来是归档模式,用 RMAN (Recovery Manager) 备份数据,而 RMAN 使用控制文件。 幸运的是,最后一次 RMAN full 备份是包括了控制文件在内。系统没有设定自动备份控制文件。现在状况是数据库无法启动。

不用说,客户的备份方案不够完善,但是这时候再去说这些话责备用户有事后诸葛亮之嫌,"用户是上帝,不要去得罪他"。还有,客户有Full备份(虽然不是自动备份控制文件,这样无法用常规的恢复步骤来进行恢复)。这对我们来说是个绝对的好消息。

下面我们通过一次模拟操作来演示这个问题的解决办法。

背景知识

在Oracle 816 以后的版本中,Oracle 提供了一个包: DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE 包是由 dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本创建的. catproc.sql 脚本运行后会调用这两个包.所以是每个数据库都有的. 这个包是 Oracle 服务器和操作系统之间 IO 操作的接口. 由恢复管理器直接调用。这两个脚本的功能是内建到 Oracle 的一些库文件中的.

由此可见,我们可以在数据库 nomount 情况下调用这些 package ,来达到我们的恢复目的。在dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本中有详细的说明文档,出于篇幅问题,就不一一加以翻译了,但在下面会直接引用一些原文说明。

ORA-01034 错误的解决办法

这是个Oracle数据库服务器比较常见的错误。有经验的用户几乎马上就能解决这个错误,再不济也能马上到 Metalink(http://metalink.oracle.com)去搜索一下。

不幸的是,大多的时候,都是初级用户遇到的这样的问题(对他们提 Metalink 也起不到什么作用--一般都没有上面的帐号:))。所以,这个小帖子可能还有一定的作用。

问题描述

在试图启动数据库的时候,Oracle报告下列错误:

ERROR:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available

基本解释

Error: ORA-27101 
Text: shared memory realm does not exist
-------------------------------------------
Cause: Unable to locate shared memory realm Action: Verify that the realm is accessible

如何解决

这个问题其实用一句话就可以说清楚:
ORACLE_HOME或者ORACLE_SID设置不正确.在以前的版本中,如果ORACLE_SID不正确,一般都只提示 ORA-01034。Oracle 8.1.7 给出一个额外的信息:ORA-27101。

如果是Unix,在Shell里把ORACLE_SID设置正确即可(注意大小写敏感的问题)。此外,检查ORACLE_HOME 环境变量。如何检查参考如下的命令:

% echo $ORACLE_SID         
% ps -ef |grep smon 

如果是Windows,一般都是因为系统中有多个实例造成的。

可以在命令行下 

C:\>set ORACLE_SID=DEMO

把这里的DEMO换为你相应的实例名。如果还不行的话,检查注册表中的ORACLE_HOME。


此外,在Windows环境下有的时候连接不上远程的数据库,会报告如此的错误。

解决办法是把sqlnet.ora文件中的 SQLNET.AUTHENTICATION_SERVICES = (NTS) NTS 换 为NONE。

最初发表在 http://dev.csdn.net/article/20/20163.shtm. 以后的维护版本以这里为准。

--EOF--

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>

关于归档

本页包含 Database 类别下的所有文章.

上一类别为 Arch.

Geek 为下一类别.

回到 首页 查看最近发表的文章或者查看所有 归档文章.