我对 Oracle 还很陌生,正在尝试在 win 2000 服务器上恢复 oracle 8i 数据库。
- 我有一周前的数据库备份(使用 exp 命令进行的备份),现在我想恢复它。
- 现在我无法通过 sqlplus 登录(出现关闭过程中的错误)
- 我有一个备份,我想恢复它,但是 oracle 根本没有启动,并且“imp”命令失败。
我以 sysdba 身份启动了 sqlplus /,以下是我正在尝试执行的操作的日志。有人可以进一步指导我吗?
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 143423516 bytes
Fixed Size 75804 bytes
Variable Size 58105856 bytes
Database Buffers 85164032 bytes
Redo Buffers 77824 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 143423516 bytes
Fixed Size 75804 bytes
Variable Size 58105856 bytes
Database Buffers 85164032 bytes
Redo Buffers 77824 bytes
Database mounted.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01245: offline file 1 will be lost if RESETLOGS is done
ORA-01110: data file 1: 'C:\ORACLE\ORADATA\ABCD\SYSTEM01.DBF'
答案1
EXP 和 IMP 不是“备份”。它们是数据的副本。它们需要导入到可操作的数据库中(通常用户、授权和表空间已经存在)。您可以尝试让现有数据库运行,但这是否可行取决于最初导致数据库崩溃的原因。如果您丢失了系统表空间的数据文件等重要信息,并且没有副本,那么请放弃。
根据 DCookie 的建议,您最好创建一个新的数据库并导入到其中。
您没有说明导出是针对整个数据库还是特定模式,或者是否有非模式对象(例如 PUBLIC SYNONYMS)。
如果您有完整的数据库导出,那么我建议创建一个 8i 数据库并进行完整的数据库导入(其中包括非架构对象、用户、表空间等)。在我看来,添加数据库版本升级会使事情变得复杂。
如果您有模式导出,那么您可以查看 Oracle 的更高版本,因为您必须创建用户、角色、表空间等才能加载内容。
答案2
是否需要继续使用 8i?您可以简单地使用 11g 或 10g 创建一个空数据库,然后将 8i 数据库导出导入其中,然后您就会相对最新。否则,您也可以创建一个空的 8i 数据库并使用导入。
运行 Oracle Database Configuration Assistant。从那里您可以相当轻松地创建数据库实例。