[置顶]ORACLE常见问题收集,拒绝灌水。

大家把遇到过的问题和解决方法都SHARE一下,便于TX们能够参考。
由于版本不同,所以建议都标明平台信息。
请勿灌水,问问题的跟贴,将一律删除。
---------------------------------------------------------------

统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE

模拟现象:

可通过重建数据文件来恢复,前提是归档日志文件保存完整

先将数据库设置为归档模式

SQL*Plus

conn system/manager

--创建实验表空间
create tablespace test datafile
'c:\test.ora' size 5M
AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED
default storage (initial 128K next 1M pctincrease 0)
/

--创建实验用户
drop user test cascade;
create user test identified by test default tablespace test;
grant connect,resource to test;
conn test/test

create table a(a number);
insert into a values(1);
insert into a select * from a; --反复插入,达到100万条
commit;

--关闭数据库
SVRMGR> connect internal
SVRMGR> alter system switch logfile; --强制归档
SVRMGR> alter system switch logfile;
SVRMGR> alter system switch logfile;
SVRMGR> shutdown

--操作系统下删除test.ora文件

--重新启动数据库
SVRMGR> connect internal
SVRMGR> startup

这时,可以mount上,但无法打开,因为数据文件test.ora不存在,
显示错误如下:

ORA-01157: ????/?????? 8 - ??? DBWR ????
ORA-01110: ???? 8: 'C:\TEST.ORA'

SVRMGR> connect internal
SVRMGR> startup mount
SVRMGR> alter database create datafile 'c:\test.ora';
SVRMGR> set autorecovery on
SVRMGR> recover datafile 'c:\test.ora';
SVRMGR> alter database open;

conn test/test
select count(*) from a; --数据又恢复到100万条

--删除实验表空间
conn system/manager
alter tablespace test offline;
drop tablespace test INCLUDING CONTENTS;
drop user test;

--如果是非归档模式,也可以运用以上方法,
--前提是:输入记录所占空间的大小不超过所有联机日志文件的大小
--即:用联机日志文件来恢复

---------------------------------------------------------------

系统环境:
1、操作系统:Windows 2000 Server,机器内存128M
2、数据库: Oracle 8i R2 (8.1.6) for NT 企业版
3、安装路径:C:\ORACLE

错误现象:
因硬盘有坏道,一个控制文件损坏了,或人工误删一个控制文件,
控制面板的Oracle相关服务可以启动成功,但用SQL*Plus无法连接,
显示以下错误
ORA-01034: ORACLE not available

解决方法:

C:>svrmgrl
svrmgrl>connect internal
svrmgrl>shutdown abort

修改init.ora(C:\Oracle\admin\oradb\pfile\init.ora)文件,使无法使用的控制文件不在control_files参数中定义
修改前
control_files = ("C:\Oracle\oradata\oradb\control01.ctl", "C:\Oracle\oradata\oradb\control02.ctl",
"C:\Oracle\oradata\oradb\control03.ctl")

修改后
control_files = ("C:\Oracle\oradata\oradb\control01.ctl", "C:\Oracle\oradata\oradb\control02.ctl")

svrmgrl>startup

注意:最少要有两个控制文件的存在,即使一个也可以正常应用

---------------------------------------------------------------

极力推荐:
Redhat Linux下oracle安装:
http://www.puschitz.com/InstallingOracle9i.html

Oracle初始化参数:
http://www.orafaq.com/parms/parmsall.htm

Oracle9i Database Online Documentation(Release 2 (9.2))
http://tahiti.oracle.com/pls/db92/db92.homepage

Oracle Software Download:
http://otn.oracle.com/software/index.html(需注册一个用户)
---------------------------------------------------------------

好!整理好!大家参考呀

1。问题出现1:(数据库8I)
数据库使用过程中掉电,导致数据库进程挂起或是文件检查点不统一
而且数据库没有归档:
解决方法1:
因为数据库的连机日志是循环写的,日志文件记载了数据库的操作
:如果索引我们所以我们首先要做的工作
就是冷备份数据库所有的数据库文件(日志文件,数据文件,控制文件等)
因为用RECOVER恢复启动数据库是要从新写日志的,如果不成功还可以用备份
来用其他的方法:
你在服务器端,用SVRMGRL命令
SVRMGRL> connect internal;
SVRMGRL> SHUTDOWN IMMEDIATE;
SVRMGRL> STARTUP MOUNT;
SVRMGRL> recover database until time 'YYYY-MM-DD:hh:mm:ss';--'数据库能正常启动的近一次的时间'
如2003-12-12:12:12:12
SVRMGRL> ALTER DATABASE OPEN resetlogs;
如果日志里有足够的信息,一般情况下都能正常恢复:(因为我们只要这几个日志文件
,所以为什么不要在做太多操作,先备份,每做一次检查点都会写日志)。

---------------------------------------------------------------

有些时侯可能你的库处于非归档的模式下,而你的联机重做日志又currupted,你的数据文件不能完成完全的恢复。而这时当你试图打开数据库时,oracle提示你用resetlogs选项,当你使用该选项时oracle又不允许你使用该选项,总之你想打开数据库,可就是打不开。
步骤:
1、最好做一个物理的库的全备
2、使用sqlplus 启动库至mount
sqlplus /nolog
sql>connect internal
sql>startup mount
3、确保所有的数据文件都处于"END BACKUP"状态
sql>set pages 0 feedback off lines 132
sql>spool alter_df.sql
sql>SELECT 'alter database datafile ' ¦ &brvbarfile_name ¦ ¦' END BACKUP;' from v$datafile;
sql>spool off
sql>@alter_df.sql
4、试着打开数据库
sql>alter database open;
如数据库成功打开,余下的都不需要做了,到此为止
5、如果你在打开时被要求进行恢复,使用"UNTIL CANCEL"这种进行恢复,然后再发出ALTER DATABASE OPEN RESETLOGS这个命令
sql>recover database until cancel;
sql>alter database open resetlogs;
6、如果数据库仍不能打开,把库down掉
sql>shutdown immediate
7、在init

 1<sid>.ora中加入如下参数   
 2_allow_resetlogs_corruption=TRUE   
 38、执行如下语句   
 4sql&gt;connect internal   
 5sql&gt;startup mount   
 6sql&gt;@alter_df.sql   
 7sql&gt;alter database open   
 89、如在alter database open时仍旧报错,使用until cancel恢复   
 9sql&gt;recover database until cancel;   
10sql&gt;alter database open resetlogs;   
1110、经过"9",数据库一定被打开了,数据库被打开后,马上执行一个full export   
1211、down掉库,去掉_all_resetlogs_corrupt参数   
1312、重建库   
1413、import并完成恢复   
1514、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;   
16//===   
17这种办法仅仅是在没有办法的办法后使用,满足以下条件   
181、没有备份   
192、损坏或丢失的当前的联机日志   
203、当前日志中包含未提交或回滚的事务。   
21注意,此方法不仅是在不归档数据库中,如果归档了,但是没有任何可用备份也是一样。   
22  
23注意,当前联机日志的损坏或丢失对数据库的打击的巨大的,   
24数据库的一致性的保证就是联机日志,而联机日志丢了,数据库的一致性可能就没有保证   
25这也就是以上步骤中从10开始的原因。   
26  
27如果损坏的不是当前日志,或当前日志没有同步的需要(没有未完成的事务)   
28可以通过   
29alter database clear [unarchived] logfile group n   
30来重建日志组   
31  
32_ALLOW_RESETLOGS_CORRUPTION我也用过,不是像贴子中说的10一定能成功,如果数据库失败的时候报的是ora-368错误,这样做肯定不行,请大家注意!   
33\---------------------------------------------------------------   
34  
35各位老大们,这个问题如何解决呢?   
36我首先在Oracle中建立了一个表,表名称为D_BELONGSTYEL(全是大写,是通过Sql语句生成的)。   
37然后用DTS从ASA数据库中导入表名称为D_BelongStyle的表(含数据),DTS显示需要创建目的表,我就点了确认,结果在Oracle中同时存在D_BELONGSTYEL和D_BelongStyle两个表,想删除D_BelongStyle刷新后却发现删除的是D_BELONGSTYEL,而D_BelongStyle还在,但是一旦用Sql语句查询就会提示“表或视图不存在”,但是在PL/SQL DEVELOPER中右键“VIEW”时却没有出错。   
38\---------------------------------------------------------------   
39  
40ORACLE常用傻瓜問題1000問全集   
41http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=3229&amp;h=1#14005   
42\---------------------------------------------------------------   
43  
44花点时间整理了本版快的一些帖子,不完整,遇见好的帖子希望大家继续补上   
45  
46oracle安装   
47http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=56&amp;h=1#100   
48http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=57&amp;h=1#107   
49http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=572&amp;h=1#1655   
50http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=1254&amp;h=1#3760   
51http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=1468&amp;h=1#4373   
52http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=1896&amp;h=1#5886   
53http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=1279&amp;h=1#3827   
54  
55奔腾4上win2000环境下无法安装oracle8i的问题   
56http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=12&amp;h=1#12   
57  
58NT下如何彻底删除Oracle?   
59http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=13&amp;h=1#14   
60  
61连接两台Oracle服务器   
62http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=19&amp;h=1#21   
63http://www.oracle.com.cn/cgi-bin/topic_show.cgi?id=983&amp;h=1&amp;bpg=1&amp;age=0</sid>
Published At
Categories with 数据库类
Tagged with
comments powered by Disqus