2008年09月02日

 

一、问题的提出
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。

在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。

二、SQL语句编写注意问题
下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。

1. IS NULL 与 IS NOT NULL
不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。

任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。

2. 联接列

对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。

下面是一个采用联接查询的SQL语句,

select * from employss
where
first_name||”||last_name =’Beill Cliton’;

上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。

当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。

Select * from employee
where
first_name =’Beill’ and last_name =’Cliton’;

遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着Bill Cliton这个员工的姓名,对于这种情况我们又如何避免全程遍历,使用索引呢?可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需要注意,这个函数是不能作用在索引列上。下面是SQL查询脚本:

select * from employee
where
first_name = SUBSTR(‘&&name’,1,INSTR(‘&&name’,’ ‘)-1)
and
last_name = SUBSTR(‘&&name’,INSTR(‘&&name’,’ ‘)+1)

3. 带通配符(%)的like语句

同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句:

select * from employee where last_name like ‘%cliton%’;

这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用:

select * from employee where last_name like ‘c%’;

4. Order by语句

ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。

仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。

5. NOT

我们在查询时经常在where子句使用一些逻辑表达式,如大于、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。下面是一个NOT子句的例子:

… where not (status =’VALID’)

如果要使用NOT,则应在取反的短语前面加上括号,并在短语前面加上NOT运算符。NOT运算符包含在另外一个逻辑运算符中,这就是不等于(<>)运算符。换句话说,即使不在查询where子句中显式地加入NOT词,NOT仍在运算符中,见下例:

… where status <>’INVALID’;

再看下面这个例子:

select * from employee where  salary<>3000;

对这个查询,可以改写为不使用NOT:

select * from employee where  salary<3000 or salary>3000;

虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。

6.  IN和EXISTS

有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。

第一种格式是使用IN操作符:

… where column in(select * from … where …);

第二种格式是使用EXIST操作符:

… where exists (select ‘X’ from …where …);

我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。

第二种格式中,子查询以‘select ‘X’开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。

通过使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。

2008年08月25日

最近在公司内部访问网络数据库时,发生ORA-12514错误,查找相应的Oracle Error文档,对错误的描述如下:

ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Cause:The listener received a request to establish a connection to a database or other service. The connect descriptor received by the listener specified a service name for a service (usually a database service) that either has not yet dynamically registered with the listener or has not been statically configured for the listener. This may be a temporary condition such as after the listener has started, but before the database instance has registered with the listener.
Action:
- Wait a moment and try to connect a second time.
- Check which services are currently known by the listener by executing: lsnrctl services <listener name>
- Check that the SERVICE_NAME parameter in the connect descriptor of the net service name used specifies a service known by the listener.
- If an easy connect naming connect identifier was used, check that the service name specified is a service known by the listener.
- Check for an event in the listener.log file.

这个错误很常见,造成这个错误的原因也比较多,针对可能存在的问题主要从以下方面着手检查:

1、检查listener.ora文件

 监听文件的配置为:

SID_LIST_LISTENER =
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle\product\10.1.0\Db_1)
      (PROGRAM = extproc)
    )—注意这里缺少了数据库服务
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = jiayu)(PORT = 1521))
      )
    )
  )
修改该监听文件为如下配置:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = d:\oracle\product\10.1.0\Db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
       (GLOBAL_DBNAME = sdsc)
       (ORACLE_HOME = d:\oracle\product\10.1.0\Db_1) 
       (SID_NAME = sdsc)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = jiayu)(PORT = 1521))
      )
    )
  )
重启数据库监听服务,一切ok!

2、检查listener.ora没有问题之后,再考虑看看TNSNAMES.ORA文件是否正常:

一般情况下比较好的检查方法就是拷贝一个别人的TNSNAMES.ORA进行比对(前提是别人的文件能否正常连接),注意里面的不起眼的空格,我曾经就发生过这样的错误,因为在原来TNSNAMES文件中的每一个NAME前面是绝对不能存在空格的,不然在数据库端就会出现:TNS: 监听程序当前无法识别连接描述符中请求的服务的错误!!

3、还可能是因为如下问题导致:

在指令模式下可以连到本机的 Oracle DB, 可是用工具连就连不上的,并报 ORA-12514: TNS:Could not resove service name

  请检查 $ORACLE_HOME/network/admin/sqlnet.ora 中的

  

NAMES.DIRECTORY_PATH= (HOSTNAME)

  像上面的红字一样?请在括号中再加上 TNSNAMES,ONAMES 中间用逗号隔开。看起来像下面这样子:

   

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (HOSTNAME,TNSNAMES,ONAMES)

  然后重启 database 就可以。

 

题外话:Oracle10g有一个好处:不再与Tomcat的端口冲突了。原来的Oracle9i安装完成后,8080端口就会被占用,一般都需要改tomcat的端口。现在终于轻松了。

2006年08月30日

1、UNIX基本培训 – [fjlin]
2、AIX入门与提高(1)-中文 – [richard_he]
3、PL/SQL上课记录 – [jxdco]
4、[分享]2005年IBM原厂的AIX培训资料 – [fsm]
5、Oracle入门 让学习更轻松 – [migrator]
6、我看得懂的Oracle管理器OEM操作指南 – [tiren]
7、一些平时收集的Oracle的资料 – [ll7777]
8、Oracle 9i for Linux 資料庫管理實務(台湾原版). – [unico]
9、ORACLE 数据库实用附录 – [hawker60]
10、赵伯山的《Oracle 9i中文版基础培训教程》[pdf] – [leoking_z]
11、推荐一个不错的007笔记 – [sunnyanita]
12、ORACLE函数大全 – [btcity]
13、Oracle9iR2在红帽高级服务器版2.1下的安装 – [wx2523]
14、Oracle 9i SQL手册 – [cadsn]
15、表与索引专题总结(附件给出了具体实例) – [oracle_gao_dba]
16、详解UNIX和WINDOWS2000上的ORACLE的差异 – [zhangjingking]
17、数据库备份方案 – [wx2523]
18、分享 1Z0-007  SQL 整理笔记 – [error21h]
19、Installing Oracle 9iR2 on Red Hat 9 – [ern]
20、为 CNOUG 做贡献了—-《ORA8I DBA 宝典》电子版 – [beryllewis]
21、常用数据字典知识的一些介绍 – [lm875]
22、Oracle命令速查 – [cadsn]
23、《oracle的入门心得》不错,共享共享 – [liuxiao_lx]
24、双机热备oracle 安装方法 – [sail2000]
25、PL/SQL基础 – [pib]
26、oracle 培训教材,欢迎大家下载!!!! – [zhaohui_wuhan]
27、oracle操作手册 – [lm875]
28、Oracle 培训教材精选(DOC) – [yuct]
29、北大青鸟 oracle的教学ppt – [slayer12345]
30、参加8I培训的视屏资料(.ppt)- – [zhangjingking]
31、Oracle数据库系统应用实例集锦与编程技巧 – [cadsn]
32、提供两款比较小的ftp客户端软件 以方便大家的使用 – [自由鹰王]
33、共享数据库原理,建模,设计,实现,管理,sql调整,电子英文版图书,(实在对不起,下载地址已更正) – [dhl2001]
34、oracle视频教程的播放插件! – [oraclestudy]
35、入门提高必读—-同事写的一本书_下册 – [lo_tiger]
36、Oracle 9i中文版基础培训教程(PDF)-绝对经典(可是我买来的噢)(精华) – [leoking_z]
37、OCP 007 考题90% – [shiqige]
38、ORACLE9i Windows安装手册(PDF) – [leoking_z]
39、oracle9i unix管理手册(cn) – [wsywin]
40、北京邮电大学软件工程研究生的课程—数据库设计开发 – [laskiwallace]
41、Sybex_OCA&amp;OCP Introduction to Oracle9i SQL Study Guide – [china_z]
42、我看这里的一个傻瓜手册的反应不错,特此贴出全文与附件。 – [piner]
43、[共享]发现一个在线的O’Reilly’s CD bookshelf – [pelyxp]
44、收集的SQL 及PL/SQL的电子书 – [tarius]
45、ORACLE教学 – [fuwangxi]
46、oracle9i官方资料 – [fengwm]
47、Oracle.9i数据库管理员指南 – [hisen]
48、三星电子EDI项目的开发文档下载(中英文版) – [logistics]
49、为了感想与支持CNONG,送上一份个人开发的免费ORACLE表结构资料整理的软件 – [yzsind]
50、Expert Oracle9i Database Administration – [wsywin]
51、Oracle9i数据库管理实务讲座 – [wx2523]
52、Oracle 8i数据库管理员手册(中文)(1) – [myheartfly]
53、ORACLE9I中文基础教程 – [leibin79]
54、免费的oracle9i init配置文档详解,大家来下啊 – [jishubu]
55、Oracle数据库网络的安装和配置!! – [oracler_oracle]
56、Linux AS3.0 下安装Oracle9.2.0.4 整理文档〔zz〕 – [wsywin]
57、Oracle9i数据库管理讲座[下载] – [btcity]
58、oracle 9i参考手册(EN) – [hayyon]
59、ORACLE中常用函数总结- – [oracle_gao_dba]
60、动态数据字典 – [cqkey]
61、oracle数据库辅助工具 – [muge2001liu]
62、Oracle9i升级总结 – [hbxbm]
63、Oracle9i DBA手册 – [zhangjingking]
64、Oracle 9i在AIX上的性能调整. – [hngscuiwei]
65、Oracle 9i Init参数详解 – [bashaw]
66、历史上最强的sql FAQ for Oracle – [wangjinbao]
67、数据的导入与导出imp/exp – [allfromzero]
68、9i参考手册快速查看 – [hayyon]
69、Oracle数据操作和控制语言详解…… – [luzx]
70、SQL语言基础教程 – [sij_521]
71、《Oracle触发器与存储过程高级编程》 第3版 ,[CN扫描版] – [tailor]
72、oracle《expert one on one》英文版(.pdf) – [zhenyu_zhang16]
73、新手必读(手工创建数据库的全部脚本及说明 ) – [zhangjingking]
74、oracle常用命令完整打印版(推荐) – [sandybillows]
75、Oracle9i Recovery Manager Reference – [lendal]
76、HP data protector 备份手册(for unix and sap) – [linttt]
77、oracle8i 备份与恢复笔记【坛主注:论坛精华帖还有selina33著的其他课程笔记,推荐给广大初学者】 – [selina33]
78、也上传一个自动备份(逻辑备份),可以自动压缩 – [yuxuan]
79、Oracle9i Backup&amp;Recovery Manual – [zm21century]
80、数据库恢复教程 – [xj541004]
81、eBook 《Oracle性能优化 -已经证实的获得最佳性能和可用性的方法》 ENG – [tailor]
82、Oracle 9i的查询优化(中文) – [danysh]
83、命令查詢 – [baojianjun]
84、oracle8开发使用手册2 – [pfoleng]
85、Oracle Spatial技术细节及应用 – [ptlmok]
86、Oracle9i数据库管理员指南 – [yulei05]
87、oracle结构和管理笔记 – [selina33]
88、ORACLE 数据库管理员教程 – [baojianjun]
89、某单位的oracle针对sun480安装的报告 – [allfromzero]
90、转载SQL,PL/SQL笔记,写的不错,共享! – [oraclestudy]
91、我做了一个关于instance和database的区别的MP3文件 – [parrotao]
92、oracle傻瓜手册v2.0.pdf – [Arlong_w]
93、ORACLE8I视频安装全程演示 – [oracle_gao_dba]
94、Oracle Spatial9i 用户手册 – [ptlmok]
95、oracle9i培训整理 – [fengwm]
96、1000本Oracle数据库编程技术电子书专题下载 – [migrator]
97、oracle sql loader (the definitive guide) – [jametong]
98、如何在Windows上完全卸载Oracle数据库(8i、9i) – [yuct]
99、PLSQL语法 – [ds2oo2]
100、分享:Oracle9i for HP-UX的安装与双机集群 – [jamesliu]
101、oracle网络管理笔记 – [selina33]
102、入门提高必读—-同事写的一本书_下册 – [lo_tiger]
103、Oracle,HA在Unix上双机环境的安装指南 – [lihubi]
104、ORACLE应用常见傻瓜问题1000问 – [fmmugy]
105、绝世好书, 吐血推荐 – [muzijiang]
106、不 要 钱的 调优资料 !!! – [bclz9043]
107、oracle精简管理资料 – [lanshen]
108、oracle精简管理资料 – [lanshen]
109、谁有Oracle9i DBA手册(机械出版社)-完整电子版阿,共享一下哦 – [clouds2005]
110、最近参加Oracle DBA培训了,上传部分资料 – [yuxuan]
111、Sybex_OCA&amp;OCP Oracle9i DBA FundamentalsI Study Guide – [china_z]
112、Oracle9i开发指南pl/sql数据库代码 – [yulei05]
113、请问哪里有Oracle spatial的资料? – [askay]
114、DBA的职责和任务 – [liufuxing]
115、ORACLE9I系列资料 – [z寒武纪]
116、ORACLE数据库管理员指南(pdf) – [pzdmm]
117、RMAN 初学者指南 – [jishubu]
118、基于IBM HACMP Rotating方式配置Oracle816的实施备忘 – [lihubi]
119、oracle专家高级编程 Expert one-on-one Oracle(中文 扫描版).pdf – [zhbapple]
120、SharePlex for Oracle高可用和容灾方案 – [lihubi]
121、好资料一起分享(SQL参考手册中文版) – [Arlong_w]
122、在cnoug大会上演讲的ppt下载! – [sandybillows]
123、oracle常用命令汇总 – [ice_stone]
124、求:oracle9 pl/sql程序设计 – [落雪山林]
125、oracle report電子書 – [kelen_1977]
126、oracle erp 11i 内部学习资料。 – [sun_nan2004]
127、linux 上自动热备的shell – [skytears]
128、oracle架构管理图 – [wx2523]
129、【下载】最新大型ISO、精品商业源码下载站! – [luisfego2008]
130、Legato备份oracle的文档整理 – [lihubi]
131、ORACLE 数据库管理员的职责 – [zhangjingking]
132、哪位有pl/sql的练习题啊 – [gudumimang]
133、PLSQL精华,用Super Star Reader打开 – [mybuilder]
134、温医学院附属第一医院oracle备份脚本 – [宇风]
135、Step-By-Step Installation on IBM RS/6000 – [mayaren]
136、Oracle日常维护手册 – [cadsn]
137、oracle经典 – [french]
138、oracle资料 – [fancy0963]
139、oracle数据库管理常用命令 – [yzn1688]
140、oracle网络管理笔记 – [cathyxu]
141、Oracle 9i在AIX上的性能调整 – 内存篇.pdf – [thirry]
142、北大青鸟ORACLE入门资料 – [flashfan]
143、好资料 – [AXBXCXDX2001]
144、good rman book – [chao_ping]
145、ORACLE 数据库入门.ppt – [blessgod]
146、ORACLE9i的INIT参数的详细说明 – [pib]
147、OCI 调用接口 – [lyd]
148、有人需要ocp的资料,我就贴一把 – [wanghai]
149、清华大学计算机与信息管理中心《Oracle 数据库系统基础》 – [shinco1]
150、名词解释 – [SQL999]
151、ORACLE基础培训教程 – [oracle_gao_dba]
152、哪位仁兄知道哪里有BO(businessObjects)下载吗?感激 – [yangkq_001]
153、ftp上 /Upload/informatic 目录下的解压全部要密码又没有提供密码 – [NotMajia]
154、全系列sts哦~~要得进哦 – [anyday]
155、sap红塔集团实施资料 – [Python]
156、Oracle8iSQLJ编程 – [hayyon]
157、ORACLE与XML供大家下载 – [sulee]
158、我找到一个ORACLE8错误号说明 – [jansonwjl]
159、Oracle Database Monitor精华脚本 – [liufuxing]
160、Java 核心技术6版 I 源代码 – [stone196204]
161、Legato技术培训 – [lihubi]
162、SAPR3 生产制造培训 – [Python]
163、Veriats 培训资料 – [lihubi]
164、《Oracle8i数据库管理员手册》读书笔记 – [morinson]
165、资料: Oracle Internals tips 〔zz〕 – [wsywin]
166、steve adams的经典调优书 – [jametong]
167、我所收集的一些性能优化的文本,供大家参考 – [zhangjingking]
168、『下载』oracle PLSQL 程序设计(全)–已更新 – [布寺鸟]
169、OCP 007 和 031 考题 – [shiqige]
170、oracle8i 备份与恢复手册与大家分享 – [akawang]
171、9iR2的安装 – [ern]
172、ORACLE BOOK 下載好站點 – [robertmao_2003]
173、Oracle9 i:管理员新功能.pdf(学生教材中文版) – [zhangjingking]
174、Shareplex for oracle说明书 – [fsm]
175、Oracle9i AS官方培训教材 – [tailor]
176、dba 常用sql语句 – [lm875]
177、我是新来的,对这里还不是很熟悉!我从网上找了些题库,大家看看,有用的话,就拿去用吧。 – [babyfly]
178、求unix aix rs6000操作命令手册 – [oracle_yuyan]
179、求oracle 9i数据字典文档 – [oracle_yuyan]
180、哪位大侠有  Oracle9i UNIX管理手册 这本书呀 – [muzijiang]
181、Oracle的数据仓库解决方案 – [zhangjingking]
182、817在AIX433上的安装 – [leibin79]
183、完全接触 Oracle(1) – [zhangjingking]
184、我们学校的oracle讲义- – [asku1982]
185、Oracle呆瓜手册 – [ehero]
186、Data Guard Configuration – [aaaaaaaaaa]
187、SQL语句执行图形化工具Golden – [cadsn]
188、数据库管理员(DBA)的主要工作 – [xiaowen.xz]
189、各位好: – [djr]
190、ORACLE 常用脚本 – [wstommy]
191、打印版数据库命令速查 – [xqlsky]
192、9i中文文档 – [leibin79]
193、oracle9i  SG 电子幻灯版 – [oraclestudy]
194、ZPLii的中文编程手册 – [oralskyyer]
195、sqlsyntax – [lyd]
196、我所收集的所有Oracle SQL和PLSQL的电子书籍 – [danysh]
197、expert one-on-one Oracle中文版电子书我已经上传了 – [ehero]
198、Oracle 10个应用技巧 – [huhuhu]
199、Ora 10G SQLPLUS_Ref – [madheader]
200、itpub电子杂志第九期 – [madheader]
201、oracle优化笔记 – [selina33]
202、oracle数据库管理员指南 – [wsywin]
203、图解oracle9I安装-win2000平台 – [shishikeke]
204、ORACLE教学 – [fuwangxi]
205、oracle8i性能设计及优化 – [fmmugy]
206、《8i PL_SQL高级程序设计》电子版,有要的和我联系QQ13705380 – [liuxiao_lx]
207、精品书免费推荐!O’Reilly – Oracle Net8 Configuration and Troubleshooting – [sandybillows]
208、自己整理的一份RMAN入门文档,共享给大家 – [sandybillows]
209、谁有VS2005上载一个? – [zrsoft]
210、Oracle9i DBA手册 – [tyxy2004]
211、oracle 8i错误大全 – [kitesky]
212、OCP Introduction to Oracle9i:SQL Exam Guide 附书练习题(1z0-007) – [cannabis]
213、Oracle 9i电子版讲义完整下载(4.38M) – [chision]
214、OO4O对Oracle 9i Spatial的空间数据访问及管理 – [ptlmok]
215、使用PowerDesigner9.5进行面向对象建模 – [lihubi]
216、9i资料库管理事务讲座 – [fmmugy]
217、Oracle 应用程序服务器 10g 的系统管理员使用手册 – [cadsn]
218、备份容灾方案 – [chenxuan351]
219、我们公司专家选拔试题,请测试一下吧? – [fengwm]
220、oracle应用常见问题 – [panzhiwei]
221、在ORACLE中如何用SQL*PLUS来做简单的报表?!  附件给出了做报表的常用命令及做报表的简单示例!- – [oracle_gao_dba]
222、一些常用的动态性能视图(V$views)ER图 – [xinjingcool]
223、OCP9I SG电子版 – [米兰小铁匠]
224、Oracle8i培训ppt-1(不知道是否贴过) – [yuct]
225、请问谁有 oracle  编程入门经典 – [haohao]
226、一份学习资料 – [aocp]
227、ORACLE向SQL转换参考 – [kitesky]
228、一些oracle培训资料 – [btcity]
229、求助,谁有关于adadmin等ERP工具的资料 – [worldmax]
230、PLSQL精华,用Super Star Reader打开 – [mybuilder]
231、PLSQL精华,用Super Star Reader打开 – [mybuilder]
232、PLSQL精华,用Super Star Reader打开 – [mybuilder]
233、PLSQL精华,用Super Star Reader打开 – [mybuilder]
234、PLSQL精华,用Super Star Reader打开 – [mybuilder]
235、[分享]Oracle DBA Training – [tellin]
236、Oracle9i Concept – [muzijiang]
237、UNIX操作系统基础使用手册 – [allfromzero]
238、Oracle9i调优 – [sologzh]
239、谁有中文版的ORACLE错误说明 – [smilegaohui]
240、对Oracle数据库环境下的磁盘性能分析和测试 – [hngscuiwei]
241、ORACLE 数据库基础 – [sy_shrj_king]
242、Oracle9i 数据库设计指引全集 – [woshishui_098]
243、Oracle9i数据库管理实务讲座 – [sy_shrj_king]
244、控制文件损坏时的恢复 – [zhangjingking]
245、oracle7 sco 5.0.5 下安装 – [newhand]
246、Oracle9i Real Application Clusters – [allfromzero]
247、lotus notes train – [simonlong]
248、aix51-ML05上安装oracle9i(9201)安装手册 – [starhqking]
249、Oracle 9i入门教程(PDF电子书) – [fanqingkai]
250、做贡献-PowerDisigner教程 – [lihubi]
251、Oracle9i RAC Student Guide – [szcling]
252、[分享]advanced replication初步研究 – [tellin]
253、oracle9i PL/SQL Programming (Scott Urman) – [iacnats]
254、有关于sqlserver和oracle函数区别的资料吗? – [cicadu]
255、求购2本Oracle的书 – [action929]
256、checkpoint小议 – [lyd]
257、求助 ORACLE9I 和 ORACLE SQL&amp;PL/SQL 中文题库 – [jiangdb647]
258、Oracle Database 10g 中的 SQL 2003 标准支持(SQL_2003_TWP)的中文白皮书有下载的吗? – [花径风寒]
259、复杂查询语句的使用(欢迎下载!“:)) – [oracle_gao_dba]
260、好资料 – [AXBXCXDX2001]
261、Oracle数据库的空间管理技巧(zt) – [joy_js]
262、TestKing 1Z0-032 V9.0 – [rake-qq]
263、共享邮箱问题,资源共享 – [wshangrila]
264、请推荐一本Oracle入门的好书 – [zjc258]
265、求助:哪们兄弟有DSI40几的资料,可否share一下 – [qiuyb]
266、ORACLE 培训教程(word) – [oraclestudy]
267、oracle恢复内部结构研究 – [parrotao]
268、CNOUG电子杂志2004年9月刊,请大家提意见! – [sandybillows]
269、经典的ORACLE基础培训文档 – [zhangjingking]
270、[EBook]Essentials.Oracle.Database.10g.3rd.Edition – [socrates]
271、那位仁兄有Oracle Workflow 的相关资料? – [starlightlh]
272、[严肃推荐]Oracle Performance Tuning – [bashaw]
273、插入大筆資料的錯誤與技巧 – [fenye1688]
274、Oracle9i初始化参数中文说明 – [hfs191]
275、oracle常见问题203问 – [zhangdi817]
276、《CSDN社区电子杂志——Oracle杂志》2005年5月第4期 – [yzsind]
277、CRM 002 – [vvyjp]
278、10g自动的sql调优 – [wwhzm]
279、一些学习资料 – [bashaw]
280、哪理有关于Oracle体系结构和基本概念的书? – [JackChen]
281、PL/SQL BASIC – [leonylu]
282、发一个Oracle管理文档! – [mmzmmz]
283、Oracle8i-howto(中文)-最近用8i,贴些8i资料 – [yuct]
284、Oracle 架構圖 – [tigwe-wen]
285、Oracle 9i – complete reference – [Fianna]
286、求Oracle Magazine电子版 – [lancelot_yao]
287、上传《OReilly – Advanced Oracle PLSQL Programming》 – [tarius]
288、Oracle DBA 常用Scripts – [cadsn]
289、郁闷,求developer/2000 R2.0 – [114hly]
290、solaris 9  SG资料 – [sail2000]
291、Oracle9i Performance Tuning – [zhangjingking]
292、上传oracle context 创建和使用文档 – [玉面飞龙]
293、Oracle 8i数据库管理员手册2 – [myheartfly]
294、Oracle9i OCP 1Z0-031 考题 – [shiqige]
295、JS chm – [xxfcz]
296、Veriats 培训 – [lihubi]
297、oracle的入门心得 – [leoking_z]
298、ORACLE9i参考资料蟛梗琌RACLE 官方资料(部分中文) – [yzsind]
299、Expert one on one Oracle的源碼 – [zyhls]
300、Oracle 9i中的flash back 查询 – [happybird]
301、求助:中软金马编的Oracle技术课程讲座PPT – [sandrew0208]
302、Oracle Internal Services(脚本) – [cadsn]
303、求高手推荐oracle入门的电子书 – [mumu08]
304、oracle10g -Backup and Recovery – [madheader]
305、网络管理ppt培训 – [fengwm]
306、ORACLE9i考试大纲 – [rake-qq]
307、大家有没有MAPGIS的软件狗? – [lwlv]
308、请问深圳什么地方能买到thomas kyte的expert one-on-one oracle呀?中文版英文版皆可 – [yuancopper]
309、学习Oracle Spatial- – [ptlmok]
310、Oracle XML开发手册 – [nm_hanjj]
311、在sco unix中安装完oracle7.3.4接下来创建数据库 – [zhangdi817]
312、oracle7.3.4 in sco unix的安装过程 – [zhangdi817]
313、归档方式与非归档方式的转换 – [zhangdi817]
314、归档方式与非归档方式的转换 – [zhangdi817]
315、Oracle 8.1.6 for Win2000 系统文件解释 – [zhangdi817]
316、理解和使用Oracle 8i分析工具LogMiner – [zhangdi817]
317、ak_ken:SQL语法参考.pdf- – [ak_ken]
318、Oracle 数据库的安全策略(一) – [jishubu]
319、Java Thread book – [xy945]
320、新版开张,祝贺—boson oracle dba tests – [beryllewis]
321、031-database administration fundamentals i – [cadsn]
322、Oracle 8i数据库管理员手册3 – [myheartfly]
323、游击Oracle–简明Windows平台入门ebook – [Delux]
324、OCP8i“练习”题目-_-!! – [geniuswwg]
325、oracle管理PPT – [selina33]
326、expert one-on-one Oracle?哪有 – [yimuniao]
327、Oracle9i(2) 管理员新功能中文版 – [zhangjingking]
328、ORACLE-平安应用服务器测试报告 – [markriver]
329、有关ftp2.oracle.com.cn的问题 – [allfromzero]
330、一篇好文章 – [blueyang]
331、LOGMNR終結版 – [lyd]
332、不可多得的好东西 – [panzhiwei]
333、那位朋友有SQL-3参考大全这本书啊 ?? – [blessgod]
334、求《Oracle9i SQL与PL/SQL开发指南》电子书 – [dame123]
335、Oracle9i培训的PPT(Oracle制作) – [donal_wong]
336、谁有【Expert one-to-one oracle】这本书的实例代码 – [wyyhzc]
337、哪有oracle10G第二版的下载啊? – [fixedstar]
338、Oracle SQL 性能优化 – [china_z]
339、lotus design – [simonlong]
340、Oracle 9i 数据库管理实务讲座 – [wstommy]
341、oracle基础知识 – [danche]
342、BT分享一下Oracle9i经典教学视频 – [Aspirant]
343、找到的一个比较不错的ORACLE的错误提示 – [MrJohnson]
344、ORACLE_8_UML对象建模设计 – [beryllewis]
345、oracle数据仓库 – [zyj_li]
346、oracle workflow builder2.63下载地址 – [richardliu_km]
347、【原创】rman使用入门 – [sandybillows]
348、statspack使用指南(转eygle) – [云淡霜天]
349、ORACLE中网络配置 – [a311300]
350、ORACLE产品系列白皮书 – [gloria_64]
351、spatial1 – [chen_liang]
352、Oracle 9i DBA手册 – [cadsn]
353、Oreilly.Mastering.Oracle.SQL.eBook – [Delux]
354、哪有oracle for window 32 9.2.0.6 patch 下载 – [jxdco]
355、数据库恢复实例 – [bashaw]
356、oracle9i視頻 – [16099430]
357、一些别人收集的Oracle资料 – [ll7777]
358、哪里有关于字符集的详细资料 – [风之羽-飞向大海]
359、谁有《oracle8完全参考手册》地址? – [okokdanokokdsan]
360、哪位大哥有《Oracle8i PL/SQL 高级程序设计 》电子版(要全的)? – [xujunjbuilder]
361、发布一个真正免费下载视频的网站 – [junboy8818]
362、Oracle9iDB Reference – [JTB]
363、求Oracle9i for Solaris9中文安装文档。谢谢啦!!! – [luzx]
364、STS教材 – [aaaaaaaaaa]
365、偶再来做点贡献吧-IBMX系列系统安装与集成手册 – [lihubi]
366、oracle 9I BT视频下载 – [jackzhou]
367、bt下载  ORACLE内部培训视频教学22讲 – [momp]
368、Oracle技术参考资料 – [leoking_z]
369、本人手工建库步骤 – [sail2000]
370、Ora8i初始化文件参数说明 – [fmmugy]
371、Oracle Agent for NT Cluster 安装配置指南 – [lihubi]
372、CICS培训资料 – [lilygy5]
373、OCP的SYBEX资料 – [yhhah]
374、Oracle 9i备用数据库配置使用参考手册 – [allfromzero]
375、一个不错的Oracle9i的PPT – [sean_lai]
376、哪位大哥能提供Oracle8.1.7 for AIX 32位下载? – [lzdydc6]
377、Sybex_OCP Oracle9i Performance Tuning Study Guide – [china_z]
378、郁闷死,官方不提供8.1.7的下载了,本论坛ftp能不能弄一个啊。 – [gchao]
379、急求 北大 数据库原理与技术 视频 – [hsq2004]
380、『推荐』oracle8傻瓜手册 – [sandybillows]
381、求助-oracle+weblogic 配置指南(中文) – [逍遥]
382、啥人有关于锁和事务管理比较全的文档学习资料或幻灯片供下载呀? – [joexiaoshcn]
383、谁有reports的教程 – [游在沙漠里的鱼]
384、求《Oracle PL/SQL程序设计基础教程》电子书 – [lslinsheng]
385、求workflow – [xinzer]
386、ORACLE SQL性能优化系列 – [lm875]
387、Oracle9i全套官方培训PPT – [jackes521]
388、加了书签的031SG(第一版) – [bonnyboy]
389、oracle常用命令 – [btcity]
390、有谁下在好了32,33,提供一下bt下载3x – [t7q]
391、Oracle基本概念及相关知识 – [a311300]
392、!!![急求]:oracle for window 32 9.2.0.6 patch – [gushu]
393、oracle基础教程 – [jishubu]
394、Oracle常用问题1000问 – [caoqizi]
395、oracle 培训教程 – [lyd]
396、oracle学习资料 – [billicon]
397、oracle的入门心得 – [sy_shrj_king]
398、oracle傻瓜手册v2.0 – [sy_shrj_king]
399、oracle错误代码大全 – [french]
400、请大家推荐好的入门书籍。 – [jwtok]
401、oracle数据库网络安装配置(傻瓜型) – [allfromzero]
402、老大们,我在哪儿可以下载到oracle 的OAR错误解释信息的帮助文件啊,多谢了。 – [stonbing]
403、Oracle 9i 数据仓库新特性 – [chenxuan351]
404、Oracle 数据库空间数据插件技术初探 – [ptlmok]
405、发9i新特性中文学习,求RAC_数据库集群安装资料 – [zhouwm66]
406、Oracle Instance 全图 ———Oracle论坛怎么能没有这个文档呢 – [parrotao]
407、Oracle技术资料-基础教程 – [jxdco]
408、有OCI开发的相关资料吗? – [lightwiter]
409、求Oracle9i DBA Fundamentals II和Oracle9i Performance Tuning两本书下载地址 – [xhailiang]
410、大家要的ORACLE9i DBA有下载了 – [niczhou]
411、Sql自学21天系列 –中(V1.0)英(Second Edition) – [布寺鸟]
412、请推荐一本初学者学ORACLE的权威书籍 – [Aspirant]
413、寻找oracle8i for linux – [richyangsh]
414、ORACL函数大全 – [ddzhouqian]
415、急啊,解壓縮後的pdf文檔打不開!!! – [qriochen]
416、Introduction_to_Oracle9i_PLSQL_1-2-ADDITION APPLICATIN – [songxiaolu]
417、找到的一个比较不错的ORACLE的错误提示 – [MrJohnson]
418、ORACLE的错误提示,大家一起分享吧! – [MrJohnson]
419、找到的一个比较不错的ORACLE的错误提示 – [MrJohnson]
420、找到的一个比较不错的ORACLE的错误提示 – [MrJohnson]
421、找到的一个比较不错的ORACLE的错误提示 – [MrJohnson]
422、有谁知道用什么好的工具直接把sql2000里面的试图和存储过程直接转换过来 – [yangjinyong]
423、本人求:oracle的英文文章并且有对照的汉语 – [hexf_hn]
424、Statspack高级性能调整 – [fjlin]
425、请教各位大侠,我从ftp下载的avi格式视频教程,怎么都播放不了啊? – [shibenxia]
426、急求ORACLE在C++数据库编程方面的电子书籍 – [sitanda]
427、Oracle8i 企业版功能综述(中文) – [yuct]
428、给我们的FTP一点建议!!! – [fire9]
429、Oracle 数据库 10g – [sy_shrj_king]
430、032我已经下载了70%多了,但是进度很慢,希望大家共同努力完成。 – [zhangjs_780206]
431、备份与恢复 – [chenxuan351]
432、oracle spatial中文帮助???????? – [woaiyaya]
433、[资料]how to 更改实例名 – [bashaw]
434、SQL辅助查询工具 – [windy19]
435、Oracle9i for Solaris9中文安装文档 – [allfromzero]
436、电子书库 &gt;&gt;正规培训教程9i视频下载〉〉还有好多oracle好书啊 – [fightter]
437、《CSDN社区电子杂志——Oracle杂志》 – [yzsind]
438、给大家一个电子书下载的好站点. – [fugang]
439、最好的视频学习资料下载站! – [newhand]
440、007,031  ftp匿名下载 – [wshangrila]
441、压缩032文件的方法 – [onlyulll]
442、非常不错的电子书籍下载网站 – [sitanda]
443、bt下载的ORACL视频只有声音么图像?? – [gameshare]
444、南京有需要007-032的吗? – [ignu]
445、032,033视频种子文件奉献! – [fansyg]
446、BT下的033视频少了几个文件啊!!!??? – [blueslan]
447、cary milsap的经典著作 – [jametong]
448、寻求ORACLE10的联机文档 – [sitanda]
449、Oracle9i.中国it实验室的远程教学ocp录像033 – [fandick]
450、哪位朋友有032和033的视频教程共享一下好吗? – [heaventonight]
451、ORACLE SQL性能优化系列 – [lm875]
452、oracle9i实体化视图 – [lyd]
453、为什么ftp 2总是进不去啊 – [liu_yingming]
454、求:007–SQL AND PL/SQL – [hayyon]
455、加了书签的032SG(第一版) – [bonnyboy]
456、一个不错的图书下载网站 – [sitanda]
457、statspack的使用 – [pib]
458、如何将自己上传的文件建立下载连接呢 – [sitanda]
459、哪里有oracle10的电子书下载 – [fxbird]
460、资料共享(转) – [liting]
461、9i新特性中文学习笔记 – [lyd]
462、跪求Oracle Workflow Builder下载网址!!! – [zlmym]
463、请问有没有032,033视频的bt下载啊? – [xqlsky]
464、求Oracle9i DBA Fundamentals II和Oracle9i Performance Tuning两本书下载地址 – [xhailiang]
465、请大家帮帮忙 – [hzl7965]
466、英文版SQL HELP – [baojianjun]
467、求一用oracle 9i做数据库的jsp留言本或其他程序的下载网址 – [8464480]
468、求OO4O和Oracle Spacial的资料 – [best_lilin]
469、谁有expert one-on-one oracle的源码下载啊? – [ehero]
470、哪里有oracle 817 for Windows 下载? – [doubhong]
471、新手求oracle10G的资料! – [leo_lesley]
472、032下载,我已经下了70%,希望大家共同下载 – [zhangjs_780206]
473、本人有032、033的视频 – [朽木可雕]
474、备用数据库的研究总结 – [lyd]
475、[McGraw-Hill]Osborne.Oracle.Database.10g.SQL – [socrates]
476、datawarehouse心得 – [lyd]
477、Oracle9i资料库管理实务讲座 – [franck_su]
478、DBExport For ORACLE 升级到V2.51 – [yzsind]
479、[chm]Oracle.Application.Server.10g.Essentials – [socrates]
480、ak_ken:ORACLE8I SQL培训大纲下载 – [ak_ken]
481、我做成PDF格式的了!Oracle9i(1)管理员新功能 – [fire9]
482、TestKing Oracle 1Z0-033 Edt19.0 – [rake-qq]
483、oracle 常用命令 – [chision]
484、Expert one-on-one Oracle英文电子版[zz] – [wsywin]
485、oracle技术研讨.pdf – [zhangjingking]
486、性能优化技术.ppt – [chenxuan351]
487、继续 – [jishubu]
488、Oracle技术资料参考 – [yhhah]
489、CRM 001 – [vvyjp]
490、Database Systems course of  University of Texas – [hawker60]
491、9idba1r2_ppt[1].part1 – [cadsn]
492、求 ORACLE7。3 FOR NT ? – [laoying123]
493、怪事? – [ragingfire]
494、嵌入式数据库系统Berkeley DB 的好文章 – [tarius]
495、ftp上032/033的视频好多都下载不了了啊,版主!!!! – [xiaoxiaoyeyu]
496、哪位大哥有031 32 33的最新TK啊? – [pikachu1115]
497、CRM 004 – [vvyjp]
498、CRM 006 – [vvyjp]
499、Teach Yourself SQL in 21 Days, Second Edition – [zhangjingking]
500、请教ORACLE安全问题?急!!! – [阿熊仔]
501、ORACLE FOR SUN SOLARIS 安装手册 – [zhangjingking]
502、什么地方有Oracle Developer Suite安装程序下载?急!!谢谢。 – [lz_hata]
503、下载ORACLE – [woaiwojia]
504、资料共享(转) – [liting]
505、求随书源码! – [flyingrat]
506、誰能提供Oracle Forms与Reports高级开发 电子版嗎?謝謝 – [deve]
507、RAC on Sun Cluster v3 – [mayaren]
508、oracle数据库的备份与恢复 – [allfromzero]
509、Oracle 9i备用数据库配置使用参考手册 – [allfromzero]
510、Oracle9i Real Application Clusters – [allfromzero]
511、[CCNA视频教学(最新改版640-801)1-20集][2G][rar][150k] – [kan1kan]
512、CRM 007 – [vvyjp]
513、ERROR MESSAGE – [baojianjun]
514、请问谁有《oracle9i Database Reference》,能否共享一下,谢谢 – [glen_guest]
515、help,官方下载oracle出现的问题 – [colorrabbit]
516、Sun StorEdge 6000 系列主机安装软件指南 – [lihubi]
517、版主,ftp2下载不了!!! – [xingjingbo]
518、求oralce Jdeveloper 资料 – [baiyh]
519、请教各位大哥哥帮忙找一下oc4j903 – [jianqiqi]
520、急求ULTRA SEACH资料 – [sinkover]
521、有没有什么书专门讲sqlserver和oracle之间的差异的啊? – [socrates]
522、急求 数据库系统工程师考试 资料 – [hsq2004]
523、veritas 8.5 – [lyd]
524、Oracle9i中国it实验室的远程教学ocp录像的BT下载 – [caryzou]
525、Oracle For linux 安装手册 – [lm875]
526、我发个ORACLE的结构图 – [youhello]
527、请求各位前辈给个 ORACLE 8 for wingdows me 的! – [sdpsnow]
528、求书 – [孤峰一箭]
529、GIS 与Oracle 数据库空间数据格式的转换 – [ptlmok]
530、glibc-2.1.3-stubs.tar补丁包 – [sandybillows]
531、oracle – [dingwd_oracle]
532、给帮忙找找,求你们了。 – [sprite]
533、寻 oracle9i SQL中文ppt或中文pdf – [ljycsl]
534、140多个oracle的script – [Scorpion]
535、我们学校的oralce讲义 – [asku1982]
536、【请问】能否推荐一下如何使用‘绑定变量’方面 比较好的书籍 – [wyyhzc]
537、SQL基础 – [pib]
538、我有oracle培训视频如何上传 – [ylx_99]
539、ORADEBUG – [lyd]
540、oracle9i分区 – [lyd]
541、bitmap 的一点探究 – [lyd]
542、10g new features top20 – [lyd]
543、不错的网站!!! – [xingjingbo]
544、在MAPX中添加自制符号的方法 – [ptlmok]
545、组件式GIS与MapX – [ptlmok]
546、急需 patch 80610! – [donnycai]
547、Performance Tuning By Example – [hngscuiwei]
548、谁有oracle存储过程的资料? – [minghaitang]
549、那里有《oracle 9i DBA 手册》下载? – [zxxlyh]
550、感谢 CNOUG提供的oracle下载, 开两个线程不会封IP吧. – [kof99]
551、求助!oracle9i官方教材的帖子怎么没了啊? – [mat]
552、ORACLE参考文献 – [oracle_gao_dba]
553、哪位大侠 有  unix 超级工具 这本书呀 – [muzijiang]
554、谁有oracle培训视频(正规培训) – [ronglei518]
555、求 O’reilly ORACLE PL/SQL Programming by Steven Feuerstein &amp; Bill Pribyl PDF OR CHM 不要扫描版 – [blue_river]
556、Oracle24_7技术与技巧 – [xingxiaozhi]
557、急死了,和公司闹翻了,谁有spatial的powerpoint? – [sugarflourish]
558、JDBC &amp; Java Programming – [xy945]
559、ORACLE 跨平台数据迁移问题 – [huaweihz]
560、请大家帮忙 – [天下精品]
561、Performance_tune – [chunfan]
562、低版本数据库监听挂死的解决办法(译) – [boypoo]
563、asp.net里面怎么调用oracle带参数的过程 – [huyuehua]
564、win下装 linux的支持软件 – [linuxlove]
565、SEQNAME 序列里面的直可以 出来吗? – [huyuehua]
566、到底要不要考试券呢 – [soft_in]
567、哪有oracle 10g for linux的下载? – [fox218]
568、查看哪些session正在使用哪些回滚段(zt) – [joy_js]
569、IT Pub 有expert one-on-one的英文版,谁去搞下来? – [lotcor]
570、求: oracle instant client for solaris (x86) 32bit 着急啊 – [iyangyi]
571、CRM 005 – [vvyjp]
572、CRM 003 – [vvyjp]
573、哪里有oci的资料啊? – [lanh]
574、Ora 10G DBA Reference – [madheader]
575、求032 033视频 – [lutheran]
576、请购采购/收料付款流程 – [mgl0919]
577、求dp2000的学习资料 – [olivecas]
578、9i_intro_sql_ppt[1].part1 – [cadsn]
579、请问哪里有WINDOWS下用的ORACLE 8.1.5下载? – [hicom]
580、谁有oracle 11i 的payroll模块使用说明书 – [fairy_9999]
581、关于oracle9i 用户. – [china_lxd]
582、谢谢帮忙 – [Behindyou]
583、求助: – [deepred_fs]
584、求书:oracle9iocp原版教材 – [juve19832002]
585、我又相关的oracle8ipl/sqL – [liuxiao_lx]
586、在官方找到在线书籍 – [Aspirant]
587、上传太麻烦,有要的请联系我,我发个你。QQ13705380 – [liuxiao_lx]
588、请问斑竹有没有ORACLE9.01中文企业版? – [wu2013]
589、请问哪里有oracle9i的下载啊 – [wangshi]
590、Oracle Database Management System Security Standard – [xinjingcool]
591、Oracle9i OCP 1Z0-031 答案 – [shiqige]
592、偶也来做点贡献吧-Oracle for Linux HA安装指南 – [lihubi]
593、在ROSE HA中配置Oracle服务的注意事项 – [lihubi]
594、分享:oracle817安装&amp;patch安装 – [jamesliu]
595、AIX入门与提高(2)-中文 – [richard_he]
596、??请问oracle internet directory管理员指南 哪里有的下?? – [xiekenihao]
597、oracle里的常用命令详解 – [zhangjingking]
598、我们学校的oracle讲义- – [asku1982]
599、我们学校老师的oracle课件- – [asku1982]
600、PLSQL精华,用Super Star Reader打开 – [mybuilder]
601、PLSQL精华,用Super Star Reader打开 – [mybuilder]
602、PLSQL精华,用Super Star Reader打开 – [mybuilder]
603、PLSQL精华,用Super Star Reader打开 – [mybuilder]
604、PLSQL精华,用Super Star Reader打开 – [mybuilder]
605、Patterns of Enterprise Application Architecture – [xy945]
606、Oracle.Data.Warehouse.Management – [socrates]
607、Enterprise Application Architecture – [xy945]
608、dba checklist – [bashaw]
609、DBA工作列表日志 – [superjames]
610、好东西分享-Oracle Applications Architecture, Release 11i Student Guide – [AaronERP]
611、oracle-备份和恢复 – [madheader]
612、资料共享(转) – [liting]
613、资料共享(转) – [liting]
614、哪位收藏家能提供oracle7.3及form3.0  for linux 下载? – [u00]
615、AIX入门与提高(8)-中文 – [richard_he]
616、AIX入门与提高(9)-中文 – [richard_he]
617、AIX入门与提高(10)-中文 – [richard_he]
618、AIX入门与提高(13)-中文 – [richard_he]
619、喜欢Java的看过来 – [xy945]
620、求助 – [mxdsjyh]
621、怎样用Sql语句实现查找一列中第N之前值 – [wml2531]
622、AIX入门与提高(14)-中文-最后一贴 – [richard_he]
623、谁有oracle sql编程入门经典? – [forocean]
624、Java Threads 3rd Edition – [socrates]
625、有沒有中文的REPORT6I的書 – [kelen_1977]
626、继续 – [jishubu]
627、想分享一下我的资源 – [Aspirant]
628、PL/SQL – [dapcyq]
629、oracle中文版错误号查询? – [mohai]
630、哪里有oracle10G可以下啊 – [bjboy147]
631、那位大虾有forms 6i 中文使用手册 – [chinahuahua]
632、TestKing 1Z0-007 V4.1 – [cadsn]
633、一些oracle,c++,toad,java,unix,windows杂七杂八的资料下载 – [edeed]
634、求救:请帮忙去掉我心中的阴霾(急) – [dlutwq]
635、oracle wait interface – [wanghai]
636、寻OCI编程的参考书籍。 – [regedit]
637、Java线程机制 – [xy945]
638、资料请求??? – [lzg2151]
639、新下了一套教程,听说不错,不过是CSF的,我不知道用什么可以播放,哪位可以告诉一下。谢谢了。 – [knight_cao]
640、请问.nrg后缀的文件怎样使用? – [zmdzj]
641、求助 – [clavier]
642、流行数据库的比较 – [wenqu]
643、谁有PL/SQL的练习题? – [wwllzpz]
644、需要Sybex_OCA&amp;OCP Oracle9i DBA Fundamentals II Study Guide的pdf文件 – [joexiaoshcn]
645、谁有oracle官方教材的lab附件? – [songxiaolu]
646、求救 – [fzxsgj]
647、ocp pdf文件,打开是老是出现“文件已损坏,无法打开和修复”, – [jita-boy]
648、请教 – [cappuccino]
649、需要帮忙 – [八角豆子]
650、哪位有oracle的基础培训教程(les1-les23,ppt)的中文版?本人急需,在线等候!!! – [yghl2000]
651、求助:各位大侠,哪儿能下到赵元杰的&lt;oracle数据库实用指南&gt; – [ju1130]
652、谁有《oracle 9i for window 2000 技术与技巧》? – [zhouwm66]
653、哪里可以下载到《oracle9i 参考手册》呀?听说此书不错! – [crescent]
654、培训的资料,不知道好不好。 – [taciturnity]
655、Oracle9iR2 Data Warehousing – [Delux]
656、不錯的下載網址 – [baojianjun]
657、请问哪里有oracle所有存储过程的介绍? – [qqqwwweee]
658、这几天给客户(开发人员)讲调优的内容 – [d.c.b.a]
659、Oracle 9i在AIX上的性能调整 — 内存篇 – [zhangjingking]
660、大型ERP系统上之前的ORACLE系统表空间间规划 – [sandybillows]
661、求powderDesiner文档 – [落雪山林]
662、一些erp资料 – [zdtqcwlcj]
663、sap公司给太太口服液的方案书 – [alenc]
664、ora9isql 文档 – [zhangjingking]
665、ORACLE电子杂志04020期 – [zhangjingking]
666、sql 参考手册 – [zhangjingking]
667、AIX入门与提高(4)-中文 – [richard_he]
668、数据仓库 – [bashaw]
669、AIX入门与提高(12)-中文 – [richard_he]
670、oracle9i的相关patch – [jametong]
671、一本非常好的shell脚本书 – [fly115]
672、TOAD7_4 User’s Guide(英) – [eastspy]
673、TSQL与PLSQL的比较.doc – [zhangjingking]
674、UNIX常用命令-中文说明 – [lizhida_lf]
675、toad中文文档&用户手册 – [zzs1978]
676、Oracle Peformance Tuning-Ixora – [bashaw]
677、CNOUG 讲稿: performance tuning by example – [chao_ping]
678、oracle spatial 中文资料! – [woaiyaya]
679、AIX入门与提高(6)-中文 – [richard_he]
680、AIX入门与提高(7)-中文 – [richard_he]
681、AIX入门与提高(11)-中文 – [richard_he]
682、oracle-train (1-4) – [zdtqcwlcj]

2006年06月08日

(V45) Trigger Execution Sequence in Forms 4.5
=============================================

Introduction
————

This document lists the order in which triggers fire in Oracle Forms 4.5:
o  The first column, Action, describes the function to be performed
    (e.g. deleting a record).
o  The second column, Trigger Firing Order, describes the order
    in which triggers fire after a function is performed.
o  The third column, Level, describes the level (form, block, item)
    at which the trigger fires.  This was accomplished by creating a form
    with all the triggers invoked.  If a trigger could fire at all levels,
    it was included at all levels.  Such a trigger fires at the lowest level
    at which it is defined.

Key triggers and triggers which fire via buttons or check boxes are
not included.

This bulletin does not cover every contingency and covers only the
most commonly used actions.

Action                 Trigger Firing Order                    Level
——                 ——————–                    —–
Runform                 1.  Pre-Logon                          Form
                        2.  On-Logon                           Form
                        3.  Post-Logon                         Form
                        4.  Pre-Form                           Form
                        5.  When-Create-Record                 Block
                        6.  Pre-Block                          Block
                        7.  Pre-Record                         Block
                        8.  Pre-Text-Item                      Item
                        9.  When-New-Form-Instance             Form
                        10. When-New-Block-Instance            Block
                        11. When-New-Record-Instance           Block
                        12. When-New-Item-Instance             Item

***********
Enter Query             1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  When-Clear-Block                   Block
                        4.  When-New-Record-Instance           Block
                        5.  When-New-Item-Instance             Item

Note: If you define the Key-ENTQRY trigger, this is the only trigger
      which fires in an Enter Query situation.


*****************
Execute Query
After Enter Query       1.  Pre-Query                          Block
                        2.  Pre-Select                         Block
                        3.  On-Select                          Block
                        4.  When-Clear-Block                   Block
                        5.  Post-Select                        Block
                        6.  On-Fetch                           Block
                        7.  On-Close                           Form
                        8.  When-Clear-Block                   Block

Note: If you define the Key-EXEQRY trigger, this is the only trigger
      which fires in an Execute Query situation.


*************
Execute Query
Without Enter
Query                   1.  Post-Text-Item                     Block
                        2.  Pre-Query                          Block
                        3.  Pre-Select                         Block
                        4.  On-Select                          Block
                        5.  Post-Select                        Block
                        6.  On-Fetch                           Block
                        7.  On-Close                           Form
                        8.  When_Create_Record                 Block
                        9.  Pre-Record                         Block
                        10. Pre-Text-Item                      Item
                        11. When-New-Record-Instance           Block
                        12. When-New-Item-Instance             Item


****
Exit                    1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  Post-Block                         Block
                        4.  Post-Form                          Form
                        5.  On-Rollback                        Form
                        6.  Pre-Logout                         Form
                        7.  On-Logout                          Form
                        8.  Post-Logout                        Form


**************
Next Field and
Previous field          1.  When-New-Item-Instance             Item


***************
Next Record and
Previous Record         1.  When-New-Record-Instance           Block
                        2.  When-New-Item-Instance             Item

**************
Next Block and
Previous Block          1.  Post-Text-Item                     Item
                        2.  Post-Record                        Block
                        3.  Post-Block                         Block
                        4.  When-Create-Record                 Block
                        5.  Pre-Block                          Block
                        6.  Pre-Record                         Block
                        7.  Pre-Text-Item                      Block
                        8.  When-New-Block-Instance            Block
                        9.  When-New-Record-Instance           Block
                        10. When-New-Item-Instance             Form


*******************
Records Are Queried     1.  Post-Query                         Block
                        2.  Post-Change                        Block
                        3.  Post-Change                        Item
                        4.  Post-Change                        Block
                        5.  Post-Change                        Block
                        Go back to Post-Query

NOTE: This cycle is repeated for each record retrieved.


**********************
No Records Are Queried  1.  When-New-Record-Instance           Block
                        2.  When-New-Item-Instance             Item

NOTE: To observe this Trigger Firing Order:
        a.  Enter a query.
        b.  Enter a nonexistent record.
        c.  Execute the query.

      The two triggers listed above, the Enter Query triggers, and
      the Execute Query triggers fire.


*************
Create Record           1.  Post-Change                         Block
                        2.  When-Validate-Item                  Block
                        3.  Post-Text-Item                      Block
                        4.  When-Validate-Record                Block
                        5.  Post-Record                         Block
                        6.  Post-Block                          Block
                        7.  On-Savepoint                        Form
                        8.  Pre-Commit                          Form
                        9.  Pre-Insert                          Block
                        10. On-Insert                           Form
                        11. Post-Insert                         Block
                        12. Post-Forms-Commit                   Form
                        13. On-Commit                           Form
                        14. Post-Database-Commit                Form
                        15. Pre-Block                           Block
                        16. Pre-Record                          Block
                        17. Pre-Text-Item                       Block
                        18. When-New-Item-Instance              Form


*************
Update Record           1.  When-Database-Record                Block
                        2.  Post-Change                         Block
                        3.  When-Validate-Item                  Block
                        4.  Post-Text-Item                      Block
                        5.  When-Validate-Record                Block
                        6.  Post-Record                         Block
                        7.  Post-Block                          Block
                        8.  On-Savepoint                        Form
                        9.  Pre-Commit                          Form
                        10. Pre-Update                          Block
                        11. On-Update                           Block
                        12. Post-Update                         Block
                        13. Post-Forms-Commit                   Form
                        14. On-Commit                           Form

                        Here the transaction is complete and one record added.

                        15. Post-Database-Commit                Form
                        16. Pre-Text-Item                       Block
                        17. When-New-Item-Instance              Form

NOTE: To observe this Trigger Firing Order:

        a.  Execute a query.
        b.  Change a value.
        c.  Choose Action->Save from the menu.
        d.  Record the triggers from that point.


*************
Delete Record           1.  On-Lock                             Block
                        2.  When-Remove-Record                  Block
                        3.  Post-Change                         Block
                        4.  Post-Change                         Block
                        5.  Post-Change                         Block
                        6.  Post-Change                         Block
                        7.  Post-Change                         Block
                        8.  Post-Change                         Block
                        9.  Post-Change                         Item
                        10. Post-Query                          Block
                        11. Post-Text-Item                      Block
                        12. Post-Record                         Block
                        13. Pre-Record                          Block
                        14. Pre-Text-Item                       Block
                        15. When-New-Record-Instance            Block
                        16. When-New-Item-Instance              Form

NOTE: To observe this Trigger Firing Order, delete a detail record.

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”

1、open_form是一个受限的封装过程,他可以产生一个新的form但不代替原来的form,在新的form启动后可以不把控制移动到新的form里面,也可以将输入焦点移动到新的form里面,用户可以在两个form之间导航。〕

open_form的调用格式
open_form(form_name,activate_mode,session_mode,data_mode,paramlist_id)
    具体意思,
1) form_name 文件名以及路径。
2) activate_mode选择activate是打开新的form并且把输入焦点移入该form,选择no_activate是不移 动焦点,还在原来的form里面
3) session_mode是打开新的form的时候的会话方式,可选session和no_session,session创建新的数据库会话,no_session不产生新的会话,和原来的form享受一个session,这个时候原来form里面的commit,都有效果,该选项为默认值.
4) data_mode表示form 之间是否可以共享数据库(libraty data) 取值 no_share_library_data 不共享(默认)share_library_data  共享
5) paramlist_id是form中唯一的参数,次项可选 

2、call_form于open_form有较大的区别,call_form是一个非受限过程,启动一个新的form后,焦点立刻被转意到新的form里面,原form失去输入焦点,便的不可操作,只有等到新的form退出后在可以使用原来的form
call_form调用格式
  call_form(form_name,display,switch_nemu,query_mode,data_mode,paramlist_name)

1) display 打开新的form是否隐藏原form  hide 隐藏,no_hide不隐藏
2) switch_nemu 打开新的form,是否用新的form的菜单代替原来的form菜单 取值o_replace ,no_replace
3) query_mode shi 表示是否仅以查询方式新的form,no_share_only,不是仅以查询方式打开form(默认),query_only,以查询方式启动form
4) data_mode 表示form之间是否可以共享数据库(library data)(同上)
5) paramlist_name 表示form 之间传递的参数,为可选项

3、new_form:启动一个新的form,新的form将完全取代原form,但退出新的form时,输入焦点直接退出到原form的父级form或者其他启动原form的位置,在启动新的form之前,系统首先要从原form中退出,并且释放所占内存空间,然后加载新的form,如果原form数据有变化,则在启动新的form的时候终止原form的用户操作,提示用户提交数据,然后在启动新的form
   new_form的调用格式
new_form(form_name,rollback_mode,query_mode,data_mode,paramlist_name)
1) form_name 文件名以及路径
2) rollback_mode 取值to_savepoint,no_rollback,full_rollback
3) query_mode 表示是否仅以查询方式启动新的form
4) data_mode 表示form之间是否可以共享数据库(同上)
5) paramlist_name代表form之间传递的参数,此项为可选项目!

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”

2006年04月05日

关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID


最近因看到论坛有人问起这方面的东西,将自己的理解加上查阅相关资料整理如下,如果不全或不当的地方,望指正并补全它。


数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)


在ORACLE7、8数据库中只有数据库名(

db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。


一、什么是数据库名(db_name)?
数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:


[code:1:1aaf156970]
.........
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]


在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。其控制参数据分属在不同的pfile中控制着相关的数据库。


二、什么是数据库实例名(instance_name)
数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:
[code:1:1aaf156970]
db_name="orcl" #(不允许修改)
db_domain=dbcenter.toys.com
instance_name=orcl #(可以修改,可以与db_name相同也可不同)
service_names=orcl.dbcenter.toys.com
control_file=(...............
.........
[/code:1:1aaf156970]
数据库名与实例名之间的关系。
数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用两个标识确定一个数据库,用户和实例相连接。
但在8i、9i的并行服务器结构中,数据库与实例之间不存在一一对应关系,而是一对多关系,(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行。)


三、操作系统环境变量(ORACLE_SID)
在实际中,对于数据库实例名的描述有时使用实例名(instance_name)参数,有时使用ORACLE_SID参数。这两个都是数据库实例名,它们有什么区别呢?(经常弄混)
[code:1:1aaf156970]


(ORACLE_SID)
OS<----------------> ORACLE 数据库 <--------(Instance_name(实例名))


[/code:1:1aaf156970]
上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到,而ORACLE_SID参数则是操作系统环境变量。
操作系统环境变量ORACLE_SID用于和操作系统交互。也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。此参数与ORACLE_BASE、ORACLE_HOME等用法相同。在数据库安装之后,ORACLE_SID被用于定义数据库参数文件的名称。如:
$ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID.ora。
定义方法:
[code:1:1aaf156970]
export ORACLE_SID=orcl
[/code:1:1aaf156970]


如果在同一服务器中创建了多个数据库,则必然同时存在多个数据库实例,这时可以重复上述定义过程,以选择不同实例。


还可以用
[code:1:1aaf156970]
[oracle@Datacent]$ . oraenv
[/code:1:1aaf156970]


来切换不同的ORACLE_SID来通过操作系统来启动不同的实例(instance)

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”

说说ORACLE的封锁机制


昨天去一个公司面试,问到Oracle的封锁机制,呵呵,理论上的问题好久都没有学习了,书本的东西也差不多都还给了大学的老师。回来翻了一下书本,找到了关于这部分知识的说明,贴出来供大学参考。(现在的公司,都不知道他们起招什么样的人,本来是应聘软件开发的,却因为我说会Oracle,却问我好多Oracle理论上的知道,如上):

设立封锁机制主要是为 了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性。Oracle数据库封锁方式有三种:共享封锁,独占封锁,共享更新封锁
<封锁类型>
Oracle RDBMS的封锁类型可分为如下三类:

1、内部级封锁
内部级封锁是用于保护ORACLE内部结构,由系统内部实现,用户不能访问,因此我们不必对此做过多的了解。

2、DDL级封锁(字典/语法分析封锁)
DDL级封锁也是由ORACLE RDBMS来控制,它用于保护数据字典和数据定义改变时的一致性和完整性。它是系统在对SQL定义语句作语法分析时自动地加锁,无需用户干予。字典/语法分析封锁共分三类:
(1)、字典操作锁:用于对字典操作时,锁住数据字典,此封锁是独占的,从而保护任何一个时刻仅能对一个字典操作。
(2)、字典定义锁:用于防止在进行字典操作时又进行语法分析,这样可以避免在查询字典的同时改动某个表的结构。
(3)、表定义锁:用于 一个SQL语句正当访问某个表时,防止字典中与该表有关的项目被修改。

3、DML级封锁
DML级封锁用于控制并发事务中的数据操纵,保证数据的一致性和完整性,其封锁对象可以是表或行。
对用户的数据操纵,Oracle可以自动为操纵的数据进行封锁,但如果有操纵授权,则为满足并发操纵的需要另外实施封锁。DML封锁可由一个用户进程以显式的方式加锁,也可通过某些SQL语句隐含方式实现。
DML锁有如下三种封锁方式:
(1)、共享封锁方式(SHARE)
(2)、独占封锁方式(EXCLUSIVE)
(3)、共享更新封锁(SHARE UPDATE)

其中SHARE,EXCLUSIVE用于表封锁,SHARE UPDATE用于行封锁。
1、共享方式的表封锁
共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更更新。其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占方式的封锁,共享更新锁可以再施加,但不允许持有共享更新封锁的进程做更新。共享该表的所有用户只能查询表中的数据,但不能更新。共享方式的表封锁只能由用户用SQL语句来设置,基语句格式如下:
[quote:04b72348bd]LOCK TABLE <表名>[,<表名>]…
IN SHARE MODE [NOWAIT]
[/quote:04b72348bd]
执行该语句,对一个或多个表施加共享方式的表封锁。当指定了选择项NOWAIT,若该封锁暂时不能施加成功,则返回并由用户决定是进行等待,还是先去执行别的语句。
持有共享锁的事务,在出现如下之一的条件时,便释放其共享锁:
A、执行COMMIT或ROLLBACK语句。
B、退出数据库(LOG OFF)。
C、程序停止运行。
共享方式表封锁常用于一致性查询过程,即在查询数据期间表中的数据不发生改变。

2、独占方式表封锁
独占方式表封锁是用于封锁表中的所有数据,拥有该独占方式表封锁的用户,即可以查询该表,又可以更新该表,其它的用户不能再对该表施加任何封锁(包括共享、独占或共享更新封锁)。其它用户虽然不能更新该表,但可以查询该表。
独占方式的表封锁可通过如下的SQL语句来显示地获得:
LOCK TABLE <表名>[,<表名>]….
IN EXCLUSIVE MODE [NOWAIT]
独占方式的表封锁也可以在用户执行DML语句INSERT、UPDATE、DELETE时隐含获得。
拥有独占方式表封锁的事务,在出现如下条件之一时,便释放该封锁:
(1)、执行COMMIT或ROLLBACK语句。
(2)、退出数据库(LOG OFF)
(3)、程序停止运行。
独占方式封锁通常用于更新数据,当某个更新事务涉及多个表时,可减少发生死锁。

DML锁有如下三种封锁方式:
(1)、共享封锁方式(SHARE)
(2)、独占封锁方式(EXCLUSIVE)
(3)、共享更新封锁(SHARE UPDATE)
其中SHARE,EXCLUSIVE用于表封锁,SHARE UPDATE用于行封锁。

1、共享方式的表封锁
共享方式的表封锁是对表中的所有数据进行封锁,该锁用于保护查询数据的一致性,防止其它用户对已封锁的表进行更更新。其它用户只能对该表再施加共享方式的锁,而不能再对该表施加独占方式的封锁,共享更新锁可以再施加,但不允许持有共享更新封锁的进程做更新。共享该表的所有用户只能查询表中的数据,但不能更新。共享方式的表封锁只能由用户用SQL语句来设置,基语句格式如下:
[quote:04b72348bd]LOCK TABLE <表名>[,<表名>]…
IN SHARE MODE [NOWAIT]
[/quote:04b72348bd]
执行该语句,对一个或多个表施加共享方式的表封锁。当指定了选择项NOWAIT,若该封锁暂时不能施加成功,则返回并由用户决定是进行等待,还是先去执行别的语句。
持有共享锁的事务,在出现如下之一的条件时,便释放其共享锁:
A、执行COMMIT或ROLLBACK语句。
B、退出数据库(LOG OFF)。
C、程序停止运行。
共享方式表封锁常用于一致性查询过程,即在查询数据期间表中的数据不发生改变。

2、独占方式表封锁
独占方式表封锁是用于封锁表中的所有数据,拥有该独占方式表封锁的用户,即可以查询该表,又可以更新该表,其它的用户不能再对该表施加任何封锁(包括共享、独占或共享更新封锁)。其它用户虽然不能更新该表,但可以查询该表。
独占方式的表封锁可通过如下的SQL语句来显示地获得:
LOCK TABLE <表名>[,<表名>]….
IN EXCLUSIVE MODE [NOWAIT]
独占方式的表封锁也可以在用户执行DML语句INSERT、UPDATE、DELETE时隐含获得。
拥有独占方式表封锁的事务,在出现如下条件之一时,便释放该封锁:
(1)、执行COMMIT或ROLLBACK语句。
(2)、退出数据库(LOG OFF)
(3)、程序停止运行。
独占方式封锁通常用于更新数据,当某个更新事务涉及多个表时,可减少发生死锁。

3、共享更新封锁方式
共享更新封锁是对一个表的一行或多行进行封锁,因而也称作行级封锁。表级封锁虽然保证了数据的一致性,但却减弱了操作数据的并行性。行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。
可通过如下的两种方式来获得行级封锁:
(1)、执行如下的SQL封锁语句,以显示的方式获得:
LOCK TABLE <表名>[,<表名>]….
IN SHARE UPDATE MODE [NOWAIT]
(2)、用如下的SELECT …FOR UPDATE语句获得:
SELECT <列名>[,<列名>]…
FROM <表名>
WHERE <条件>
FOR UPDATE OF <列名>[,<列名>]…..[NOWAIT]
一旦用户对某个行施加了行级封锁,则该用户可以查询也可以更新被封锁的数据行,其它用户只能查询但不能更新被封锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式封锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。
当出现如下之一的条件,便释放共享更新锁:
(1)、执行提交(COMMIT)语句;
(2)、退出数据库(LOG OFF)
(3)、程序停止运行。
执行ROLLBACK操作不能释放行锁。
从上面讲述可见,ORACLE RDBMS的加锁机制,解决了并发事务的相容与互斥问题。相容保证事务的并发性,互斥确保数据的一致性。不同用户锁的相容与互斥关系由下图给出。

其中最后一行最后一列为其它用户提供在不同行上设置SHARE UPDATE锁。但当用户1在某行上进行更新操作时,用户2只有等待用户1提交事务后,才能更新自己所封锁的行。

中最后一行最后一列为其它用户提供在不同行上设置SHARE UPDATE锁。但当用户1在某行上进行更新操作时,用户2只有等待用户1提交事务后,才能更新自己所封锁的行。


 

死锁

封锁虽然能够有效的解决并发操作,但是任何资源的独占都会有死锁的危险。例如:有两个事务T1,T2,T1对数据A施加独占封锁,T2对数据B施加了独占封锁。再假设T1要对数据B加锁,由于B已被T2独占封锁,因此T1置于等待状态,等待B被释放;现在若T2也要对A进行封锁,由于A已被T1独占封锁,因此T2也被置于等待状态。这样就形成了两个事务相互等待的状态,而且永远不能结束,此种情况称为死锁。
在Oracle系统中能自动发现死锁,并选择代价最小的,即完成工作量最少的事务予以撤消,释放该事务所拥有的全部锁,记其它的事务继续工作下去。
从系统性能上考虑,应该尽可能减少资源竞争,增大吞吐量,因此用户在给并发操作加锁时,应注意以下几点:
1、对于UPDATE和DELETE操作,应只封锁要做改动的行,在完成修改后立即提交。
2、当多个事务正利用共享更新的方式进行更新,则不要使用共享封锁,而应采用共享更新封锁,这样其它用户就能使用行级锁,以增加并行性。
3、尽可能将对一个表的操作的并发事务施加共享更新锁,从而可提高并行性。
4、在应用负荷较高的期间,不宜对基础数据结构(表、索引、簇和视图)进行修改。

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”

IT工作市场是如此的紧张,每个可获得的职位都有一堆人在申请。Naveen Nahata为Oracle E-Business Suite的数据库管理员申请者提供了以下一些面试时的技术问题,它可以帮助申请者们快速脱颖而出。

  问题

  1如果信息采集管理系统(ICM)崩溃了怎么办?

  2你如何加速打补丁的过程?

  3打补丁的过程中出错了,你怎么办?

  

4请提供克隆过程和克隆之后采取的手工操作的大概步骤。

  5介绍一下AutoConfig。AutoConfig是如何知道XML文件中的哪个树脂需要被放入哪一个文件的?

  6你能告诉我,你对一个发生故障的自服务登录问题做哪些测试吗?你要检查哪个配置文件操作选项和文件?

  7如果你不能看到并发管理日志和输出文件,是哪里出错了?

  8你是如何更改并发管理日志和输出文件的位置的?

  9如果用户正遇到性能方面的问题,你如何找到问题的原因?

  10你如何更改应用程序的密码?

  11请写出DBC文件的位置,并且解释它的重要性和应用程序如何知道DBC文件名?

  答案

  1所有其他的管理器都会继续工作。ICM只会处理队列控制请求,意思是开启和关闭其他并发的管理器。

  2

  2.1你可以合并多个补丁。

  2.2你可以为一个非交互的补丁创建一个响应文件。

  2.3你可以通过选项(nocompiledb, nomaintainmrc, nocompilejsp)来应用补丁,并且在应用了所有的补丁之后,一次运行它们。

  3 查看失败工作的日志,找到并且纠正错误,用adctrl 工具重新开启工作。

  IT工作市场是如此的紧张,每个可获得的职位都有一堆人在申请。Naveen Nahata为Oracle E-Business Suite的数据库管理员申请者提供了以下一些面试时的技术问题,它可以帮助申请者们快速脱颖而出。如果你的面试官有类似的问题问你,发个邮件给我,我将会把它添加在列表中。――编者按

  问题

  1如果信息采集管理系统(ICM)崩溃了怎么办?

  2你如何加速打补丁的过程?

  3打补丁的过程中出错了,你怎么办?

  4请提供克隆过程和克隆之后采取的手工操作的大概步骤。

  5介绍一下AutoConfig。AutoConfig是如何知道XML文件中的哪个树脂需要被放入哪一个文件的?

  6你能告诉我,你对一个发生故障的自服务登录问题做哪些测试吗?你要检查哪个配置文件操作选项和文件?

  7如果你不能看到并发管理日志和输出文件,是哪里出错了?

  8你是如何更改并发管理日志和输出文件的位置的?

  9如果用户正遇到性能方面的问题,你如何找到问题的原因?

  10你如何更改应用程序的密码?

  11请写出DBC文件的位置,并且解释它的重要性和应用程序如何知道DBC文件名?

  答案

  1所有其他的管理器都会继续工作。ICM只会处理队列控制请求,意思是开启和关闭其他并发的管理器。


2

  2.1你可以合并多个补丁。

  2.2你可以为一个非交互的补丁创建一个响应文件。

  2.3你可以通过选项(nocompiledb, nomaintainmrc, nocompilejsp)来应用补丁,并且在应用了所有的补丁之后,一次运行它们。

  3 查看失败工作的日志,找到并且纠正错误,用adctrl 工具重新开启工作。

  4在源文件上(所有层)运行pre-clone,使用RMAN复制数据库(或者从热或者冷备份中重新存储数据库),拷贝文件系统,然后在目标文件(所有层)上运行post-clone 。

  手工步骤(可能会更多):

  4.1改变所有的非网站配置选项数值(快速克隆的话,只改变网站级别的配置文件选项)。

  4.2 修改工作流和并发管理器表。

  4.3更改打印机。

  5 AutoConfig 使用了一个上下文文件来维护关键的配置文件。一个上下文文件就是一个XML文件,在$APPL_TOP/admin 目录下,进行集中式的存储。

  当你运行AutoConfig 的时候,它读取XML文件,并且创建所有的AutoConfig 管理配置文件。

  对于AutoConfig维护的每个配置文件,都存在一个临时文件来判断哪个数值是从哪个XML文件中得来的。

  6

  6.1检查DBC文件中的guest的用户名和密码,配置选项guest的用户名和密码、数据库。

  6.2查看apache/jserv是否启动了。

  6.3运行IsItWorking, FND_WEB.PING, aoljtest等。

  7很有可能是FNDFS监听器停止了。看看FND_CONCURRENT_REQUESTS 表中的OUTFILE_NODE_NAME 和 LOGFILE_NODE_NAME 的数值。看看FND_NODES 表。看看tnsnames.ora 中的FNDFS_ entry 。

  8日志问卷爱女的位置是由$APPLCSF/$APPLLOG 参数来决定的,输出文件的位置是由$APPLCSF/$APPLOUT 决定的。

  9

  9.1追踪这个会话(用等待)并且使用tkprof 来分析追踪文件。

  9.2生成statspack 报告并进行分析。

  9.3使用top/iostat/sar/vmstat 监控O/s 。

  9.4通过ping这类基本的测试结果来判断网络的瓶颈。

  10

  10.1 使用FNDCPASS 来更改APPS密码。

  10.2 手工修改wdbsvr.app/cgiCMD.dat 文件。

  10.3 更改所有从其他环境指过来的数据库链接。

  11

  11.1位置:$FND_TOP/secure directory

  11.2 重要性:在其他事务中指向数据库服务器。

  11.3 应用程序通过使用“Applications Database Id.”来了解DBC文件的名字。

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”

一、8i EXP常用选项

1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:

exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:

exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。

需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。

如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。

4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。

5、如何使用SYSDBA执行EXP/IMP?

这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP:

exp “”sys/sys as sysdba”" file=1.dmp tables=gototop.t rows=n

6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用”"括起来,where子句的写法和SELECT中相同,如果是UNIX平台所有”和”都需要使用\u26469屏蔽它们的特殊含义:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query=”where c1=20 and c2=gototop”

如果是windows平台,则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query=”"”where id=1 and name=”gototop”"”"

二、8i IMP常用选项

1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。

2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。

另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。

三、Oracle9i EXP功能描述

Oracle9i EXP在原有的基础上新增了部分新的参数,按功能主要分为以下几个部分:

1、OBJECT_CONSISTENT – 用于设置EXP对象为只读以保持对象的一致性。默认是N。

2、FLASHBACK_SCN和FLASHBACK_TIME – 用于支持FLASHBACK功能而新增。

3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT – 用于支持RESUMABLE空间分配而新增。

4、TTS_FULL_CHECK – 用于在传输表空间时使用依赖性检查。

5、TEMPLATE – 用于支持iAS。

6、TABLESPACES – 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。

四、不同版本的EXP/IMP问题?

一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:

1、在高版本数据库上运行底版本的catexp.sql;

2、使用低版本的EXP来导出高版本的数据;

3、使用低版本的IMP将数据库导入到底版本数据库中;

4、在高版本数据库上重新运行高版本的catexp.sql脚本。

但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261,你可以到METALINK上去查看有关此BUG的详细信息。

BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。

CREATE OR REPLACE view exu81rls  

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)  

AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,  

decode(bitand(r.stmt_type,1), 0,”", “SELECT,”)  

|| decode(bitand(r.stmt_type,2), 0,”", “INSERT,”)  

|| decode(bitand(r.stmt_type,4), 0,”", “UPDATE,”)  

|| decode(bitand(r.stmt_type,8), 0,”", “DELETE,”),  

r.check_opt, r.enable_flag,  

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)  

from user$ u, obj$ o, rls$ r  

where u.user# = o.owner#  

and r.obj# = o.obj#  

and (uid = 0 or  

uid = o.owner# or  

exists ( select * from session_roles where role=”SELECT_CATALOG_ROLE”)  

)  

/  

grant select on sys.exu81rls to public;  

/  

五、其他问题

本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况,对于之前的版本,在8.0.X中,除了QUERY参数不能用外,其它差别不大。针对没有QUERY的情况,我们可以先在数据库中使用查询条件建立临时中间表,然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少,gototop不打算在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档:“Overview of Export and Import in Oracle7”(文档号:61949.1)。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。

另外关于传输表空间的更多信息可以参考下面的Metelink文档,本文不再详述。

[NOTE:77523.1] Transportable Tablespaces — An Example to setup and use.  

[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.  

在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引。

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”


1、前言
    目前所有使用Oracle作为数据库支撑平台的应用,大部分数据量比较庞大的系统,即表的数据量一般情况下都是在百万级以上的数据量。当然在Oracle中创建分区是一种不错的选择,但是当你发现你的应用有多张表关联的时候,并且这些表大部分都是比较庞大,而你关联的时候发现其中的某一张或者某几张表关联之后得到的结果集非常小并且查询得到这个结果集的速度非常快,那么这个时候我考虑在Oracle中创建“临时表”。
    我对临时表的理解:在Oracle中创建一张表,这个表不用于其他的什么功能,主要用于自己的软件系统一些特有功能才用的,而当你用完之后表中的数据就没用了。Oracle的临时表创建之后基本不占用表空间,如果你没有指定临时表(包括临时表的索引)存放的表空的时候,你插入到临时表的数据是存放在ORACLE系统的临时表空间中(TEMP)。
2、临时表的创建
    创建Oracle临时表,可以有两种类型的临时表:会话级的临时表和事务级的临时表。
    1)会话级的临时表因为这这个临时表中的数据和你的当前会话有关系,当你当前SESSION不退出的情况下,临时表中的数据就还存在,而当你退出当前SESSION的时候,临时表中的数据就全部没有了,当然这个时候你如果以另外一个SESSION登陆的时候是看不到另外一个SESSION中插入到临时表中的数据的。即两个不同的SESSION所插入的数据是互不相干的。当某一个SESSION退出之后临时表中的数据就被截断(truncate table,即数据清空)了。会话级的临时表创建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2…) On Commit Preserve Rows;举例create global temporary table Student(Stu_id Number(5),Class_id  Number(5),Stu_Name Varchar2(8),Stu_Memo varchar2(200)) on Commit Preserve Rows
    2)事务级临时表是指该临时表与事务相关,当进行事务提交或者事务回滚的时候,临时表中的数据将自行被截断,其他的内容和会话级的临时表的一致(包括退出SESSION的时候,事务级的临时表也会被自动截断)。事务级临时表的创建方法:Create Global Temporary Table Table_Name(Col1 Type1,Col2 Type2…) On Commit Delete Rows;举例:create global temporary table Classes(Class_id Number(5),Class_Name Varchar2(8),Class_Memo varchar2(200)) on Commit delete Rows
    3)、两种不通类型的临时表的区别:语法上,会话级临时表采用on commit preserve rows而事务级则采用on commit delete rows;用法上,会话级别只有当会话结束临时表中的数据才会被截断,而且事务级临时表则不管是commit、rollback或者是会话结束,临时表中的数据都将被截断。
3、例子:
    1)、会话级(Session关闭掉之后数据就没有了,当Commit的时候则数据还在,当Rollback的时候则数据也是一样被回滚):
     insert into student(stu_id,class_id,stu_name,stu_memo) values(1,1,’张三’,'福建’);
     insert into student(stu_id,class_id,stu_name,stu_memo) values(2,1,’刘德华’,'福州’);
     insert into student(stu_id,class_id,stu_name,stu_memo) values(3,2,’S.H.E’,'厦门’);
SQL> select *from student 


STU_ID CLASS_ID STU_NAME STU_MEMO


     1        1 张三     福建
     2        1 刘德华   福州
     3        2 S.H.E    厦门
     4        2 张惠妹   厦门


SQL> commit;


Commit complete


SQL> select * from student


STU_ID CLASS_ID STU_NAME STU_MEMO
     1        1 张三     福建
     2        1 刘德华   福州
     3        2 S.H.E    厦门
     4        2 张惠妹   厦门


SQL>insert into student(stu_id,class_id,stu_name,stu_memo) values(4,2,’张惠妹’,'厦门’);


1 row inserted


SQL> select * from student


STU_ID CLASS_ID STU_NAME STU_MEMO
     1        1 张三     福建
     2        1 刘德华   福州
     3        2 S.H.E    厦门
     4        2 张惠妹   厦门
     4        2 张惠妹   厦门


SQL> rollback


Rollback complete


SQL> select * from student


STU_ID CLASS_ID STU_NAME STU_MEMO
     1        1 张三     福建
     2        1 刘德华   福州
     3        2 S.H.E    厦门
     4        2 张惠妹   厦门


SQL>
    2)、事务级(Commit之后就删除数据):本例子将采用以下的数据:
      insert into classes(Class_id,Class_Name,Class_Memo) values(1,’计算机’,'9608′);
      insert into classes(Class_id,Class_Name,Class_Memo) values(2,’经济信息’,'9602′);
      insert into classes(Class_id,Class_Name,Class_Memo) values(3,’经济信息’,'9603′);
  在一个SESSION中(比如SQLPLUS登陆)插入上面3条记录,然后再以另外一个SESSION(用SQLPLUS再登陆一次)登陆,当你select * from classes;的时候,classes表是空的,而你再第一次登陆的SQLPLUS中select的时候可以查询到,这个时候你没有进行commit或者rollback之前你可以对刚才插入的3条记录进行update、delete等操作,当你进行commit或者rollback的时候,这个时候由于你的表是事务级的临时表,那么在插入数据的session也看不到数据了,这个时候数据就已经被截断了。
     运行结果如下:
SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(1,’计算机’,'9608′);


1 row inserted


SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(2,’经济信息’,'9602′);


1 row inserted


SQL> insert into classes(Class_id,Class_Name,Class_Memo) values(3,’经济信息’,'9603′);


1 row inserted


SQL> update classes set class_memo =” where class_id=3


1 row updated


SQL> select * from classes


CLASS_ID CLASS_NAME CLASS_MEMO



       1 计算机     9608
       2 经济信息   9602
       3 经济信息  


SQL> delete from classes where class_id=3


1 row deleted


SQL> select * from classes


CLASS_ID CLASS_NAME CLASS_MEMO



       1 计算机     9608
       2 经济信息   9602
SQL> commit;


Commit complete


SQL> select *from classes


CLASS_ID CLASS_NAME CLASS_MEMO


SQL>
再重复插入一次,然后rollback。
SQL> Rollback


Rollback complete


SQL> select * from classes


CLASS_ID CLASS_NAME CLASS_MEMO


SQL>


4、临时表的应用
    1)、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。
    2)、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。
5、注意事项:
    1)、临时表的索引以及对表的修改、删除等和正常的表是一致的。
    2)、Oracle的临时表是Oracle8i才支持的功能特性,如果你的Oracle版本比较低的话,那么就可能没有办法用到了,如果你的Oracle版本是8i的话,你还需要把$ORACLE_HOME/admin/${ORACLE_SID}/pfile目录下的init.ora初始参数配置文件的compatible修改为compatible = “8.1.0″,我的服务器上就是这样子配置的。当然也可以修改为compatible = “8.1.6″


以上是我在对大表进行优化的时候采用的一些手段,效果显著。

本篇文章使用aigaogao Blog软件发布, “我的Blog要备份”