西瓜
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
博客统计...
网站链接...
资源
===========================================================
数据块的插入与高水位
===========================================================
数据块禁止插入的情况:
数据块在使用的时候,当数据块的使用率达到pctfree,这时,oracle将该数据块标识为full,不允许再插入。
另外一种情况,如果计算新插入的行数据将超过pctfree,这时oracle就会将该数据块标识为full,并且新插入的这个行将插入到其他的数据块中。

数据块允许插入的情况:
当标识为full的数据块中的数据被删除,释放空间到pctused以下时,数据块从新被标识为free,可以允许插入新的数据。


在这里,HWM时针对extents而言的。HWM位于第一个unformated数据块上。
当有新的行插入的时候,oracle会优先从HWM以下的块中去寻找free的块,以插入的新的行数据。如果没有找到,再去HWM之上的空间中去formate新的数据块来插入数据。

BTxigua 发表于:2007.10.30 21:22 ::分类: ( 基础 ) ::阅读:(1049次) :: 评论 (0) :: 引用 (0)
===========================================================
批处理设定ip地址
===========================================================

rem
rem 本批处理主要用来修改ip地址,方便办公室与家里ip地址的切换
rem netsh -c interface ip set address "本地连接" static 192.168.0.2 255.255.255.0 192.168.0.1 auto
rem netsh interface ip set dns "本地连接" static 211.138.91.1
rem netsh interface ip set address "本地连接" dhcp
rem netsh interface ip set dns "本地连接" dhcp
rem
rem 切换到办公室ip,已经设置了静态的路由,这里不设置默认网关。

netsh -c interface ip set address "本地连接" static 10.39.196.84 255.255.255.0

exit


BTxigua 发表于:2007.10.29 19:51 ::分类: ( 一般分类 ) ::阅读:(691次) :: 评论 (0) :: 引用 (0)
===========================================================
oracle自动启动和关闭的方法
===========================================================


for AIX
方法一:使用加载inittab来启动
1、利用oracle自己提供的dbstar和dbshut脚本来启动和关闭数据库。
确认/etc/oratab文件中的对应的实例的最后标志为 Y 。
例如:ora92:/opt/oracle/app/oracle/product/9.2:Y
dbstart将根据这个标志位来启动对应的实例。这个文件是由root.sh创建的。
可以在/etc或者其他目录下再创建一个脚本来调用dbstart命令。
#touch dbstart.sh
#chmod 755 dbstart.sh
#vi dbstart.sh
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "lsnrctl start "
2、将脚本加载到inittab
#mkitab "dbstart:2:wait:/etc/dbstart.sh > /dev/console 2>&1"

方法二:加载到rc.d中
1、通上面的方法1创建一个脚本/etc/dbstart.sh
2、加载到rc.d中
检查/etc/inittab默认的启动级别:init:2:initdefault:
这里默认为2,即可转到/etc/rc.d/rc2.d
#ln -s /etc/dbstart.sh /etc/rc.d/rc2.d/S99dbstart

另:在主机关闭的时候自动关闭数据库的方法,可以在/usr/sbin/shutdown的前面加载
su - oracle -c "/$ORACLE_HOME/bin/dbshut"
su - oracle -c "/$ORACLE_HOME/bin/dbshut"

方法三:使用HA的应用程序资源组
smitty hacmp -> Initialization and Standard Configuration
-> Configure Resources to Make Highly Available -> Configure Application Servers
-> Change Application Server
Start Script [/usr/es/sbin/cluster/local/startdb.sh]
Stop Script [/usr/es/sbin/cluster/local/stopdb.sh]
startdb.sh脚本和stopdb.sh脚本分别调用$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut脚本。


for Linux
方法1:加载rc服务来实现
创建脚本:
#touch dbstart.sh
#chmod 755 dbstart.sh
#vi dbstart.sh
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "lsnrctl start "
在Linux中,检查/etc/inittab默认的启动级别,一般运行级别为3,id:3:initdefault:
然后转到/etc/rc.d/rc3.d
#ln -s /etc/dbstart.sh /etc/rc.d/rc3.d/S99dbstart

方法2:在/etc/rc.local文件中加载启动命令
直接编辑rc.local文件,在后面添加
#vi /etc/rc.local
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "lsnrctl start "

自动关闭方法:
#touch sysshut
#chmod 755 sysshut
#vi sysshut
su - oracle -c "$ORACLE_HOME/bin/dbshut"
su - oracle -c "lsnrctl stop"
shutdown $*
sysshut的使用方法跟shutdown的使用方法一致。


for hp unix
方法1:通过加载rc服务实现
先创建脚本,脚本类似上面的。
检查/etc/inittab的默认的启动级别:init:3:initdefault:
在rc3.d中加载服务
ln -s /etc/dbstart.sh /sbin/rc3.d/S99dbstart

自动关闭不能直接修改/usr/sbin/shutdown,可以通过自己写一个shutdown的脚本来实现
#touch sysshut
#chmod 755 sysshut
#vi sysshut
su - oracle -c "$ORACLE_HOME/bin/dbshut"
su - oracle -c "lsnrctl stop"
shutdown $*
sysshut的使用方法跟shutdown的使用方法一致。


for windows
windows就比较简单了。oracle安装完后,默认会在服务中注册对应的服务,例如:
oracleservice<ORACLE_SID>
OracleOraHome92TNSListener
只要设定这两个服务的启动类型为自动就可以了。


BTxigua 发表于:2007.10.29 17:02 ::分类: ( 基础 ) ::阅读:(575次) :: 评论 (0) :: 引用 (0)
===========================================================
在执行shutdown abort之前,先执行alter system checkpoint
===========================================================
在执行shutdown abort之前,先执行alter system checkpoint。
在系统关闭之前,显式的发布一个检查点命令,减少需要应用于数据文件的redo日志信息,从而可以有效的减小实例启动的时间。
BTxigua 发表于:2007.10.29 17:01 ::分类: ( 基础 ) ::阅读:(1040次) :: 评论 (0) :: 引用 (0)
===========================================================
裸设备的优点
===========================================================

裸设备的优点:
1、由于旁路了文件系统缓冲器而进行直接读写,从而具有更好的性能。对硬盘的直接读写就意味着取消了硬盘与文件系统的同步需求。这一点对于纯OLTP系统非常有用,因为在这种系统中,读写的随机性非常大以至于一旦数据被读写之后,它们在今后较长的一段时间内不会得到再次使用。除了OLTP,raw设备还能够从以下几个方面改善DSS应用程序的性能:
排序:对于DSS环境中大量存在的排序需求,raw设备所提供的直接写功能也非常有用,因为对临时表空间的写动作速度更快。
序列化访问:raw设备非常适合于序列化I/O动作。同样地,DSS中常见的序列化I/O(表/索引的完全扫描)使得raw设备更加适用于这种应用程序。
2、直接读写,不需要经过OS级的缓存。节约了内存资源,在一定程度上避免了内存的争用。
3、避免了操作系统的cache预读功能,减少了I/O。
4、采用裸设备避免了文件系统的开销。比如维护I-node,空闲块等。
5、在裸设备上可以更方便的应用磁盘内策略。

裸设备的缺点:
1、裸设备的空间大小管理不灵活。在放置裸设备的时候,需要预先规划好裸设备上的空间使用。还应当保留一部分裸设备以应付突发情况。这也是对空间的浪费。
2、很多备份工具软件对裸设备的支持不足,导致备份等的操作和方法比较原始、麻烦。


BTxigua 发表于:2007.10.29 16:59 ::分类: ( UNIX类 ) ::阅读:(516次) :: 评论 (0) :: 引用 (0)
===========================================================
面试题
===========================================================

数据库切换日志的时候,为什么一定要发生检查点?这个检查点有什么意义?

表空间管理方式有哪几种,各有什么优劣。

本地索引与全局索引的差别与适用情况。

一个表a varchar2(1),b number(1),c char(2),有100000条记录,创建B-Tree索引在字段a上,那么表与索引谁大?为什么?

9i的data guard有几种模式,各有什么差别。

执行计划是什么,查看执行计划一般有哪几种方式。

简单描述一下nest loop与hash join的差别。

db file sequential read与db file scattered read等待的差别,如果以上等待比较多,证明了什么问题?

library cache pin与library cache lock是什么地方的等待事件,一般说明什么问题?

在一个24*7的应用上,需要把一个访问量很大的1000万以上数据级别的表的普通索引(a,b)修改成唯一约束(a,b,c),你一般会选择怎么做,请说出具体的操作步骤与语句。

如果一个linux上的oracle数据库系统突然变慢,你一般从哪里去查找原因。

说明一下对raid5与raid01/10的认识。

列举5个10g的新特性

上述的面试题还无法从容应答。

下一步需要调整一下学习的方向了。


BTxigua 发表于:2007.10.27 12:23 ::分类: ( 一般分类 ) ::阅读:(56481次) :: 评论 (0) :: 引用 (0)
===========================================================
oracle的学习方法论
===========================================================

我个人总结学习方法大概可以分为两类,适用面好像也蛮广的。
方法一:系统学习法
这种方法,就是你找一本介绍比较全面,比较经典的书,然后一章一节、一章一节的学习下去。学习的比较系统、全面。

方法二:由点到面学习法
这种方法,就是根据你实际应用或者需要重点学习一个知识点,然后再慢慢的深入研究、扩展。从一个点扩到一个面的过程。

这两种方法各有优缺点,也很难说哪种这两者孰优孰劣,根据个人的风格而定。
系统学习法,学习比较全面,但是学习的周期比较长,而且对一些知识点的学习不够深入。最终还是避免不了得有一个由点到面的学习过程。
同样,由点到面学习法,针对实际情况,学习的效率比较高,对某个知识点的学习、掌握比较深入。但是因为缺乏对系统的一个全面的学习,缺胳膊少腿的情况比较多,所以最终也避免不了需要来一个系统的学习。

我个人还是倾向于由点到面学习法,因为我感觉oracle所涉及的东西太多,更新又太快,真的系统的学习效率实在是有点太低了。


BTxigua 发表于:2007.10.23 14:48 ::分类: ( 一般分类 ) ::阅读:(481次) :: 评论 (1) :: 引用 (0)
===========================================================
详细解读 STATSPACK 报告
===========================================================

详细解读 STATSPACK 报告 1
1、报表头信息 2
2、实例负载档信息 2
3、实例有效性信息 3
4、TOP 5及其他等待事件信息 5
5、SQL统计信息 10
5.1 SQL统计信息-逻辑读 11
5.2 SQL统计信息-物理读 11
5.3 SQL统计信息-执行次数 12
5.4 SQL统计信息-调用、解析次数 12
5.5 SQL统计信息-共享内存占用 13
5.6 SQL统计信息-多版本缓存 13
6、实例的活动信息 14
7、I/O统计信息 18
8、Buffer Pool统计信息 20
9、实例的恢复情况统计信息 21
10、Buffer Pool调整的Advisory 21
11、Buffer Pool等待情况统计 22
12、PGA统计信息 22
13、PGA调整的Advisory 23
14、队列的统计信息 24
15、回滚段统计信息 24
16、闩锁统计信息 26
17、共享池统计信息 31
18、SGA内存分配 32
19、资源限制统计信息 33
20、初始化统计信息 3

http://www.itpub.net/showthread.php?s=&postid=8786289#post8786289


BTxigua 发表于:2007.10.22 16:31 ::分类: ( 优化 ) ::阅读:(827次) :: 评论 (0) :: 引用 (0)
===========================================================
Oracle发布一个SQL语句的处理过程
===========================================================

Oracle发布一个SQL语句的处理过程:
1、将该语句转化成ASCII等效数字码
2、将ASCII等效数字码传递给一个散列算法,由该散列算法产生一个单独的散列
3、搜索当前用户的session缓存中(在PGA中)是否存在相同的散列版本,如果存在,就直接执行该语句。这就是fast parse。
4、如果在PGA中没有命中,查找其他的session中是否有相同的散列,这就需要到共享池的库缓存中对查找。如果在库缓存中找到相同的散列。这就是soft parse。
5、若在3和4中都没有找到相同散列,用户进程进行语法检查过程(Syntax Check)。语法检查主要时检查语法是否符合SQL Reference Manual中给出的SQL语法。
6、语法检查通过之后,再进行语义分析过程(Semantic Analysis)。这个过程就是检查对象的合法性。检查表是否存在,列是否存在,是否有权限访问等等。
7、选择执行计划。准备从可用的执行计划中选择一个执行计划,其中包括存储大纲(srored outline)或物化视图(materialized view)相关的决定。
8、生成该语句的一个编译代码(p-code)。这完整的整个步骤就是hard parse。

example:
SQL>select * from test ; --hard parse
SQL>select * from TEST ; --hard parse
SQL>select * from test ; --soft parse
SQL>alter session set session_cached_cursors=100;
SQL>select * from test ; --soft parse
SQL>select * from test ; --fast parse

 查看全文
BTxigua 发表于:2007.10.22 16:27 ::分类: ( SQL基础与优化 ) ::阅读:(918次) :: 评论 (1) :: 引用 (0)
===========================================================
OCP系列教程-032 之共享服务器
===========================================================

配置ORACLE共享服务器

1、独占服务器(dedicated server)
每一个session单独分配一个server process,直到用户断开连接,才释放该进程所占用的资源。而大多数时候session都是idle的,所以存在占用资源的情况。
在有些情况下,必须使用独占服务器模式:
• Connect as sysdba
• Submitting batch job

2、共享服务器(Shared server)
多个用户连接共享一个服务器。用户进程和服务进程的连接必须通过适配器来实现。

共享服务器(Shared Server)

1、将Oracle 配置为共享服务器
通过设置数据库初始化参数可以启动共享服务器。共享服务器需要启动Oracle Net
Services 监听进程。必须要设置的参数有两个DISPATCHERS ,SHARED_SERVERS。
与共享服务器相关的初始化参数以及动态性能表,可以见下表的描述。

参数 说明
必须设置的参数
DISPATCHERS 在共享服务器体系结构中配置调度程序进程。
SHARED_SERVERS 指定启动实例时可以创建的共享服务器进程的数目。

可选的参数,若不指定,ORACLE使用默认值。
MAX_DISPATCHERS 指定同时运行的调度程序进程的最大数目。
MAX_ SHARED_SERVERS 指定可以同时运行的共享服务器进程的最大数目。
CIRCUITS 指定进出网络会话时可以利用的虚拟回路的总数。
SHARED_SERVER_SESSIONS 指定用户会话允许的共享服务器的总数。设置这个参数可以为专用服务器保留用户会话。

共享服务器影响的其他初始化参数可以按需要进行调整
LARGE_POOL_SIZE 指定大型存储池堆分配的字节大小。共享服务器也许会将默认值设置为很高的值,这样会导致在性能或启动数据库方面出现问题。
SESSIONS 指定系统可以创建的会话的最大数目。对于共享服务器也许需要进行调整。减去shared_server_sessions,就是可以给独占服务器的session数量。

监视性能的视图
V$DISPATCHER 提供有关调度程序进程的信息。包括姓名、网址,状态,各种使用统计表和索引号码。
V$DISPATCHER_RATE 提供调度程序进程的速率统计表。
V$QUEUE 包含有关共享服务器消息队列的信息。
V$SHARED_SERVER 包含有关共享服务器进程的信息。
V$CIRCUIT 包含有关虚拟回路的信息。这些虚拟回路是一些通过调度程序和服务器连接到数据库的用户连接。
V$SHARED_SERVER_MONITOR 包含协调共享服务器的信息。
V$SGA 包含各个系统全局区SGA 组的容量信息。在协调共享服务器时也许会有用处。
V$SGASTAT 关于SGA 的详细统计信息用于协调共享服务器。
V$SHARED_POOL_RESERVED 列出统计表以帮助协调共享存储池中的保留的存储池和空间。

 查看全文
BTxigua 发表于:2007.10.19 13:19 ::分类: ( 基础 ) ::阅读:(638次) :: 评论 (1) :: 引用 (0)
===========================================================
RAID基础,RAID10与RAID01比较,RAID10与RAID5比较
===========================================================
RAID基础,RAID10与RAID01比较,RAID10与RAID5比较 查看全文
BTxigua 发表于:2007.10.18 10:01 ::分类: ( UNIX类 ) ::阅读:(11671次) :: 评论 (4) :: 引用 (0)
===========================================================
B*树索引的dump研究
===========================================================
B*树索引的dump研究 查看全文
BTxigua 发表于:2007.10.18 09:55 ::分类: ( 优化 ) ::阅读:(3949次) :: 评论 (5) :: 引用 (0)
===========================================================
ORA-1555错误解决大全
===========================================================
ORA-1555错误解决大全 查看全文
BTxigua 发表于:2007.10.18 09:46 ::分类: ( 优化 ) ::阅读:(2131次) :: 评论 (0) :: 引用 (0)
===========================================================
国庆长假又结束了
===========================================================
国庆长假又结束了,该收拾心情上班了。
论坛是好地方,但是也浪费了不少的时间。以后还是有选择性的看看吧。有时间还是多来blog吧。

BTxigua 发表于:2007.10.07 16:41 ::分类: ( 一般分类 ) ::阅读:(292次) :: 评论 (0) :: 引用 (0)
===========================================================
双面刃
===========================================================
网络永远都是双面刃,得或者失都在于你如何使用。
BTxigua 发表于:2007.09.27 13:31 ::分类: ( 一般分类 ) ::阅读:(56548次) :: 评论 (0) :: 引用 (0)