《Oracle 10G 数据库系统教程 中科院培训老师讲授》
如题,地址:http://www.verycd.com/topics/93739/,没事在verycd上发现的,还没有看,先下下来...
只许简单的命令就能提高你的效率
“TMD,真的带通的都不通”,大家都在抱怨。公司网断断续续,打网页一会一个404,让谁都有生气。如果一个网络公司,连TMD的网络都不通,真是让人笑话,顺便说一下公司是用铁通的,好像那个地方只能用铁通。
这两天导资格数据,很是头痛,用toad客户端连oracle,备份数据,不一会机子就死了,一是因为网络,二是数据量太大,搞了一天没有结果。后来听习说,还是在命令行下吧,以前用过(在可视下操作),但是总感觉这样可视化操作爽一点,但死机是不能容忍的。于是找了公司以前的文档,找到关于oracle在命令行下导数据的一些操作(linux下):
1。数据导出:telnet链接到服务器,用oralce身份登录 “su – oracle”
编辑命令:
exp [DBA user name或源表所有者] [刚才从output file里复制的内容] file=[导出数据文件名.dmp]
注:如果是从A数据库服务器上导B数据库服务器上数据的话(因为编码问题),应该写成:
exp [B数据库服务器DBA user name或源表所有者]@[B数据库服务器名] [刚才从output file里复制的内容] file=[导出数据文件名.dmp]
学习写了简单的存储过程
前几天导数据,自己根据原有知道写了一个简单的oracle存储过程
- DECLARE
- v_OFFICECODE lawyermanager.test_test_person.OFFICECODE%type;
- v_DIRECTOR lawyermanager.test_test_person.PERSONCODE%type;
- CURSOR c_sd is select OFFICECODE,DIRECTOR from lawyermanager.test_lawoffice where DIRECTOR is not null or DIRECTOR not in (select personname from lawyermanager.test_person) ;
- begin
- open c_sd;
- loop
- fetch c_sd into v_OFFICECODE,v_DIRECTOR;
- exit when c_sd%notfound;
- update lawyermanager.test_lawoffice set DIRECTOR = (select personcode from lawyermanager.test_test_person where OFFICECODE = v_OFFICECODE and personcode=v_DIRECTOR );
- end loop;
- close c_sd;
- commit;
- end;
有时你就是速度--索引
全国司考与各省司考的数据整合已经接近尾声了,昨天晚上找到了最重要的一个bug,原因是程序还没有结束对象被有为的销毁了,今天做了最后一点的修改,但是发现一个update语句执行奇慢,检查语句后没有发现有什么错误,和不能再优化的最简单的sql语句,找不到原因(顺便说一下,我们用的是oracle数据库),最后找了一个同事帮忙看了一下!因为我不是以主键更新的,于是在那个字段上加了个索引,效果大为不同!通常我们在创建表的同时会设立一个主键,它不但只是唯一性,而且会自己建立一个索引,这样会加大对表数据的存取速度,当然滥用也是不行的,适可而止!
加大网站的访问速度,建立适当数据库 是必要的,一般数据库的性能是很高的,我们应从优化sql和程序结构抓起,面对一个数百万访问量的网站,不但要考虑硬件上的因素,更应该从我们项目本身看起!
Oracle分页
数据的分页显示,有多种不同的做法。其中比较好的分页做法应该是每次翻页的时候只从数据库里检索页面大小的块区的数据。
这样虽然每次翻页都需要查询数据库,但查询出的记录数很少,网络传输数据量不大,
如果使用连接池更可以略过最耗时的建立数据库连接过程。
而在数据库端有各种成熟的优化技术用于提高查询速度,比在应用服务器层做缓存有效多了。
如果使用Oracle数据库,就可以很方便地实现分页查询的功能。在Oracle数据库中查询结果的行号使用伪列ROWNUM表示(从1开始)
例如 SELECT * FROM employee WHERE ROWNUM<=10 返回前10条记录。
但因为ROWNUM是在查询之后排序之前赋值的,所以查询employee按birthday排序的第100到120条记录应该这么写:
- SELECT * FROM ( SELECT my_table.*, ROWNUM as my_rownum FROM (
- SELECT name, birthday FROM employee ORDER BY birthday
- ) my_table WHERE ROWNUM <=120
- ) WHERE my_rownum>=100
oracle解析from子句以及where子句的过程
oracle解析from子句以及where子句的过程如下
1.选择最有效率的表名顺序(只在基于规则的优化器中有效)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理。
2.WHERE子句中的连接顺序
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
重启数据库oracle
有时候数据死了,或者没有监听,不必重启机子,重启一下数据库服务行了,下面是linux下的启动步骤,没有在win下执行过,可能也可以!
以oracle9i为例
(1) 以oracle身份登录数据库,命令:su – oracle
(2) 进入Sqlplus控制台,命令:sqlplus /nolog
(3) 以系统管理员登录,命令:connect / as sysdba
Read more
Toad导oracle数据
今天去上海司法局部署公管的项目,没有完成,挺郁闷的,因为服务器没有搞定,引导失败,进不去!不像个人PC,没有设置过眼生,决定以后好好的补一下这里的知识,下面整理一下导数据的步骤,作个记录怕以后忘了!
(1) 打开TOAD,以系统管理员登录到源数据库
(2) 选择菜单DBA->Export Utility Wizard
(3) 弹出Export Utility Wizard窗口
(4) 选择Export tables ,点击“next”
(5) 选择要导出的表,点击“next”
(6) 默认选择,直接点击“next”
(7) 填写Output file name[.dmp],点击“next”
(8) 选择Just build the parameter file,点击“finish”
(9) 编辑刚才生成的Output file,只保留tables行,去掉左右括号及单引号,然后拷贝内容

