| « | 十月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 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 | 31 | ||
在alert文件中,我们可能会看到这样的报错信息:
Wed Aug 20 17:16:37 2008
ORA-1652: unable to extend temp segment by 128 in tablespace DBA_TEMP
要解决这个问题,我们首先要导致这个问题的SQL,可能方法有几种: 查看全文
如果force_logging=no 则
对于普通表:
noarchive: append
archvie: nologging + append
临时表:
noarchive: append
archvie: append
如果force_logging=yes
对于普通表:
noarchive: 无法减少日志量
archvie: 无法减少日志量
临时表:
noarchive: append
archvie: append
由于临时表只保存临时数据,就算恢复不了也没问题,所以尽量不让它产生日志。
oradebug可以帮助我们做很多事情,如dump内存信息、设置事件、挂起进程等。本文主要介绍如何使用oradebug挂起进程。
查看全文
为一个RAC搭建standby和单节点搭建方法基本一致,我们可以把RAC看成是一个单节点的数据库,只需要保证所有节点的日志能传送到备库即可。
查看全文
为一个RAC搭建standby和单节点搭建方法基本一致,我们可以把RAC看成是一个单节点的数据库,只需要保证所有节点的日志能传送到备库即可。
查看全文
今天对一个排序分页查询进行了一次优化,优化后性能得到明显改观。下面用例子说明优化步骤。 查看全文
今天在处理一个会话满了的数据库,需要释放部分无用的session。根据V$SESSION的program可以简单确定PL/SQLDEV连过去的会话基本是无效会话,需要把这些会话都kill掉: 查看全文
今天接到开发人员报告:开发库的一个表不能更新数据。
登上开发库执行一下发过来的SQL,果然报错:
SQL> update CAT_AUTH_BAD_DRUG set PROCLAMATION_NUMBER = 'ss';
update CAT_AUTH_BAD_DRUG set PROCLAMATION_NUMBER = 'ss'
*
ERROR at line 1:
ORA-23474: definition of "NDMAIN"."CAT_AUTH_BAD_DRUG" has changed since
generation of replication support
今天登陆数据库时报错:ORA-00257 archiver error. Connect internal only, until freed。
查看全文
今天遇到一个bug,对临时表进行insert的时候产生异常多的redo,下面模拟过程:
查看全文
一般来说,数据库在创建完成后就不能修改字符集了,如要修改字符集,需要对原有数据进行导入导出后重建数据库来修改。但是也有一些例外的,如果从子集升级到超集,则可以直接修改而无需重建数据库。 查看全文
老话题了。
最近一个项目用到了透明网关,这里把配置过程简单记录下来,供大家参考。 查看全文
今天有朋友数据库启动报错,向我求助。其中报错信息如下:
SQL> startup
ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information
最后发现问题出在参数设置冲突上,下面模拟这个过程。
这几天看了一下linux下的裸设备管理,做了一些笔记,不敢独享,共享如下:
(笔记的内容不一定正确,有错误请指出)
查看全文
本文主要介绍在linux下如何用静默方式卸载oracle软件。
在linux下卸载oracle软件比较简单,可以简单的把相关目录删除掉,然后清理一下/etc下oracle相关的文件就可以。
但还是有必要了解一下如何通过工具来卸载。
今天在linux上测试静默安装oracle时报错:
[oracle@suk1 database]$ ./runInstaller -silent -responseFile /soft/database/response/my.rsp
查看全文
最近做了一次跨平台的数据迁移,迁移要求是把部分用户的数据迁移到另一个数据库中。
源数据库环境是Solaris 10(x86_64) + ORACLE 10203 RAC + ASM
目标数据库环境是Linux AS 4(x86) + ORACLE 10203 + 文件系统
我在这次迁移用的是传输表空间技术。
查看全文
本文简单阐述在Linux AS 4中如何不用启动界面的情况下安装oracle 10g软件、创建数据库以及升级数据库,这就是oracle的静默安装。
查看全文
本文简单阐述在Linux AS 4中如何不用启动界面的情况下安装oracle 10g软件、创建数据库以及升级数据库,这就是oracle的静默安装。
查看全文
本文简单阐述在Linux AS 4中如何不用启动界面的情况下安装oracle 10g软件、创建数据库以及升级数据库,这就是oracle的静默安装。
查看全文
ORA-07445和ORA-00600是系统内部错误,一般是由于BUG引起的,要解决或者避免这些错误一般需要到metalink上查。metalink甚至专门推出了一个工具用于这两个错误的查找。
与普通错误不同的是,ORA-07445和ORA-00600是一系列错误的总称,引起错误的原因可能成千上万个,如何快速、准确地找出到错误的原因是解决这类问题的难点。
出现ORA-07445或ORA-00600错误时,一般都会产生一个trace文件,这个文件的路径和名称可以在alert文件中找到。
这篇文章主要是谈谈如何在trace文件找找出关键信息。
in和exists总结
今天在测试环境中,原来正常快速刷新的物化视图不能同步数据了,最后发现是因为在同一个库做exp、imp操作后使得物化视图日志失效了,不记录基表的数据变化了。
在解决问题的过程中发现了其他一些问题,这里一并记录。
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第八部分:迁移过程中遇到的错误。 查看全文
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第七部分:后续工作。
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第六部分:恢复数据库。
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第五部分:升级数据库。 查看全文
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第四部分:安装数据库软件。 查看全文
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第三部分:安装oracle clusterware。 查看全文
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第二部分:安装rac的准备工作。 查看全文
最近做了一个rac数据库的迁移,中间涉及到很多部分内容,包括rac环境的搭建、ASM的设置、数据库的迁移、升级等。
本文是这次迁移工作的第一部分:相关环境的说明。
今天用客户端链接一个测试库时出现错误ORA-00257: archiver error. Connect internal only, until freed。
数据库环境是SOLARIS 10 + 10203 RAC + ASM。
在rac中修改db_name的步骤与单实例步骤差不多,主要是要修改一些与cluster相关的参数。
查看全文
近段时间要在solaris下部署一套rac数据库,由于对rac了解不多,在安装过程中遇到许多问题,其中光crs就重装了3次。
这里简单记录一下如何在solaris下卸载crs。
查看全文
今天,在测试一个过程的是遇到一个ORA-00600错误:
Errors in file /opt/oracle/admin/citizen/bdump/citizen_j000_25812.trc:
ORA-00600: internal error code, arguments: [32695], [hash aggregation can't be done], [], [], [], [], [], [] 查看全文
我们都知道,全表扫描需要扫描HWM下的所有block,那么,
1、全表扫描时是按照什么顺序扫描block的?
2、一次IO能否跨越一个extent?
3、全表扫描是否一定对应着db file scattered read等待事件?
我们通过试验一一解答这些问题。
flashback database是10g推出的一个重大改进,它可以让我们不用做不完全恢复的情况下把数据库"回滚"到过去的某一个时间点。
你可以在创建数据库时设定flashback database,如果当时没有设置,可以按下面的步骤进行设置:
一致性读是oracle区别于其他数据库的重要特点之一,但一般来说,这个一致性读是sql级别的,只针对单个sql有效。
由于业务逻辑需要,我们可能需要在一个事务中的多个sql也能实现读一致性,也就是说,数据源在事务开始时就定下来了,不受其他会话影响。oracle的只读事务可以实现这个功能,它可以在事务级别上实现读一致性。
在yangtingkun的blog上看到《Oracle10g的简化连接方式》,并提及对建立dblink也适用。
本文在10g的环境下简单测试简化方式下建立dblink的方法。
今天在一台sun solaris 5.10系统使用vi报错:
# vi a
Unable to setup term:'unknown' missing in the terminfo database: No such file or directory
最近打算研究一下裸设备,于是在linux下测试了一下基于裸设备创建数据库看。以下是简单步骤: 查看全文
一直以来,我记住的一个知识点就是:SQLNET.AUTHENTICATION_SERVICES=(NTS)是使用OS认证的必须条件之一。
今天一个偶然的机会,才知道这个结论是不完全准确的。
主库出问题时,我们可以对备库做失败切换,使得应用继续运行。但是做失败切换的前提是:
主库的日志完全传送到备库上(包括联机日志上的redo信息),如果DATAGUARD是运行在最大保护或者最大可用模式下,这种切换一般没有问题。
但是如果DATAGUARD运行在最大性能保护模式下,可能需要用强行切换的方式来激活备库了。
强行切换与普通的失败切换的最大差别是:强行切换在数据库打开时需要resetlogs。由此带来的后果是:
1、可能有数据丢失
2、破坏了整个DATAGUARD的结构。
如果存在多个standby,则其他的standby在没有重建的情况下不能以被激活的库作为priamry,所有的standby必须要重建。
前两天把一个修改了一个分区表的索引后,执行job频频报错:
ORA-14098: index mismatch for tables in ALTER TABLE EXCHANGE PARTITION
这个错误是在分区表与一个普通表交换时发生的,检查发现,索引列是一致的,不知为何报错。
查阅相关资料后发现是因为分区表是全局索引,与用来交换的表的索引类型不一致造成的。下面简单重现错误:
如果主库出现故障无法修复的话,就需要在备库上做failover,使得应用可以继续运行。
查看全文
从9i以后,一般都不需要手工处理确实的日志,FAL自动会帮我们处理这些问题。
但是,并非我们就完全不用手工处理了,比如,你的磁盘空间爆满,归档日志在传到备库前被转移到其他地方,这种情况下FAL是不能解决问题的,需要手工处理一下。
查看全文
包含DBLINK的查询有两种:
1、所有的表都是DBLINK得到数据的远端表
2、既包含本地表,又包含远端表
在http://space6212.itpub.net/post/12157/304213中提到如果所有表都是远端表的话,那么该语句在远端执行,在得到结果后返回调用端。但是随便找了一个机器上做了几个测试就匆匆下结论了,今天遇到一个案例,推翻了这个结论。
查看全文
今天开发人员提了一个问题:如何根据自定义周期进行数据统计?
比如今天是2007/08/06,按7天作为一个统计周期,则统计时间周期分别是:2007/08/06 - 2007/08/12,2007/08/13-2007/08/19……
统计的时间段是不确定的。
这个问题归根到底是根据统计周期的长度把统计时间段划分为若干部分,这里提供一种方法,抛砖引玉,希望有更多的好方法。
在设计数据库的时候,可能不会考虑得太周全,添加或者删除联机日志的操作在所难免。
这篇文章就谈谈在DATAGUARD环境中如何添加或者删除联机日志。
查看全文
今天帮朋友解决oracle进程异常中断后不能登录的问题后,顺便帮他看了一下造成IDLE几乎为0的原因。
通过分析发现,都是因为不良SQL造成的。这些不良SQL的一个共同点就是:把运算放在了列端。
朋友的数据量非常大,我在本机上简单模拟现场,数据量上会小很多,但是仍然可以不同的写法对执行效率的差别。
今天一个朋友找我处理帮忙处理一个oracle问题,原因是用户不能登录了。
起因是这样的:
因为业务推广,访问量大增,造成oracle压力大增,系统IDLE几乎为0。我那朋友情急之下,把用户的连接都用kill -9的方式干掉了。
然后,就发现,怎么都登录不进去了,就挂在登录界面上,没有任何提示。
我登录上去看了一下,乖乖,ps -ef|grep ora_一个进程都没有了,也就是说,他把所有的连接包括oracle自身的关键进程都干掉了。
这个问题后来得到解决。下面在我本机简单模拟当时的场景,说说解决步骤和方法。
DATAGUARD的数据传输方式有两种:LGWR和ARCH。其中前者传送的是联机日志的redo,后者传输的是归档。
FAL是9i推出的DATAGUARD的一大改进,它可以自动传送备库缺失的日志,一般情况下,它是不需要手工干预的。
主库的日志要传输到备库,两者的密码文件中设置的口令必须一致。然而,如果我们不小心设置了不一致的密码,则需要重新生成备库的密码文件,但重置密码文件后,FAL还并不能自动处理日志的GAP,需要DBA做一些额外的工作。
在这种情况下,用LGWR和ARCH两种方式的处理方式有所区别,下面分别讨论: 查看全文
今天一个朋友问我,删除了一个存储过程是否可以恢复,想了想,恢复存储过程就相当于找到删除过程前SOURCE$表的数据,可以用flashback功能恢复。
下面的测试过程。
在DATAGUARD中,如果有备份,主库出现问题时,有多种恢复方式可选:
1、从备库拷贝相关文件到主库上恢复
2、拷贝备库备份到主库还原恢复
3、从主库备份还原恢复
本文主要讨论10G DATAGUARD中,主库丢失数据文件时,利用备库的备份恢复主库。
在DATAGUARD中,如果有备份,主库出现问题时,有多种恢复方式可选:
1、从备库拷贝相关文件到主库上恢复
2、拷贝备库备份到主库还原恢复
3、从主库备份还原恢复
本文主要讨论10G DATAGUARD中,主库丢失数据文件时,利用主库的备份恢复主库。
这种方式比较简单,和单机的备份恢复没什么区别。
简单来说,分布式事务是指涉及到多个数据库的事务。
本文通过例子讨论oracle处理分布式事务的原则及优化方法。
平台环境:
suk: linux as4 + oracle 9201
primary: windows xp + oracle 10.2.0.3
在DATAGUARD中,主库丢失文件时,有多种恢复方式可选:
1、从备库拷贝相关文件到主库上恢复
2、拷贝备库备份到主库还原恢复
3、从主库备份还原恢复
本文主要讨论10G DATAGUARD中,主库丢失数据文件时,用拷贝备库对应的数据文件方式恢复主库。
这种方法要分两种情况讨论:
一、备库文件SCN号比主库控制文件新
今天遇到一个与CONNECT BY相关的BUG
数据库版本是solaris 8 + oracle 9204