10月23
         Heck有一段时间没用Oracle了,最近Heck发现Oracle9i企业管理器没有了, 我用的是oracle9i,不知为何企业管理器(Enterprise Manager Console)没有了,(注:原来一直有的,可用的)。那么我们要如何恢复呢?

用Universal Installer修复安装不行,重新修复安装下oracle对应版本的客户端;安装时按提示选择修复,看看,不行就卸载重新装(前提:将重要数据导出安全地方去),找到oem启动的bat就可以了~

执行x:\oracle\ora92\bin\oemapp.bat console 就OK了,或者说把 oemapp.bat 文件发送快捷方式到桌面然后在把路径改为x:\oracle\ora92\bin\oemapp.bat console就OK了。

oracle9i或者10g企业管理器(Enterprise Manager Console)丢失的原因,一般是快捷方式被360弄没了,建一个.bat的文件,9i输入
x:\oracle\product\10.2.0\client_2\bin\oemapp.bat console,10g输入 x:\oracle\ora92\bin\oemapp.bat console,地址按你的地址来,点击试试,以上方法9i和10g有效,前提只是快捷方式被360弄了,而原文件还在的,而关键还把Heck机器上的oemapp.bat弄没了,真是晕。我得去哪个哥们机器上拷个去。

很多人都遇到过这个问题,猪头的是9i的,不过猪头的x:\oracle\ora92\bin\oemapp.bat 这个文件还在,所以问题不大。
10月15
先看以下有没有

如果路径不见了:

1.看是否将计算机的名字给改了
2.如果没有改 在dos 环境下运行 lsnrctl start

原因:
Windows优化大师将Oracle的监听服务给优化了
还有一种造成本地oracle无法启动的原因是安装时的主机名与当前主机名不同,也就是说安装完oracle后
更改了主机名造成。

解决办法1;
打开注册表(regedit)找到  
HKEY_LOCAL_MACHINE/SYSTEM/CurrentContorlSet/Services/OracleOraHome92TNSListener找到后单击,
在右侧里面单击右键,新建一个(可扩充字符串值) 起名字为 ImagePath 在 数值数据 中写入
C:\oracle\ora92\BIN\TNSLSNR 后退出注册表, 重新启动即可。(其中 C:\oracle\ora92\BIN\TNSLSNR 是你oracle安装目录中的一个.exe文件。
10月15
数据库服务器字符集更改步骤
问题描述:
在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码

处理步骤:
1.对数据库做全库导出,备份全库数据,以防故障发生
首先设定客户端的字符集,必须以ZHS16GBK的字符集导出,然后才能在更改失败后顺利倒入新建的库。
#setenv NLS_LANG "SIMPLIFIED CHINESE_CHINA.ZHS16GBK";
#stty -istrip -parity cs8;
#setenv LANG zh
拟在/sybdata(磁盘阵列)下建立一个目录orabak,用于存放dmp文件。
#mkdir /sybdata/orabak
#chown oracle:oinstall /sybdata/orabak
#su – oracle
#cd /sybdata/orabak
%exp system/manager@hnsdh file=hnsdh_2010-8-17 log=hnsdh_exp_2010-8-17 full=y
(此处命名为示例,以实施当日日期为准)
察看日志结尾,以判定导出是否成功。
#cat hnsdh_2010-8-17.dmp | od -x | head
看第二和第三个字节组成的十六进制数是多少可判断导出文件的字符集。
10月12
         有时候我们表中的某个字段被设置为auto_increment,在这里我说的是mysql,当然其它的也一样,这样MySQL会自动使该字段的值加1,就算将以前的数据全部删除了,这个值仍然是从上次的值再加1开始。能否重置该值?即,在某个时候,通过手工将该值重置为0或1或5。stupid
也就是说当我们对数据库中的表操作之后 id会自动增加1 这个效果是需要的,但是把数据全删除时 id 不是从1开始 是继续递增,通过执行truncate table table_name 可以使表的id重置为从1开始 可是表中的数据也没有了。
问:如何不删除数据 将数据库中的id重置?

这里我们有两种方法:

1.就是我说的这种删除表的数据再新建表。
9月21

五种提高SQL性能的方法

16:37数据库  From: 本站原创
       有时候我们为了让应用程序运行得更快,所做的全部工作就是在这里或那里做一些很小调整。啊,但关键在于确定如何进行调整!迟早您会遇到这种情况:应用程序中的 SQL 查询不能按照您想要的方式进行响应。它要么不返回数据,要么耗费的时间长得出奇。如果它降低了报告或您的企业应用程序的速度,用户必须等待的时间过长,他们就会很不满意。就像您的父母不想听您解释为什么在深更半夜才回来一样,用户也不会听你解释为什么查询耗费这么长时间。(“对不起,妈妈,我使用了太多的 LEFT JOIN。”)用户希望应用程序响应迅速,他们的报告能够在瞬间之内返回分析数据。就我自己而言,如果在 Web 上冲浪时某个页面要耗费十多秒才能加载(好吧,五秒更实际一些),我也会很不耐烦。

为了解决这些问题,重要的是找到问题的根源。那么,从哪里开始呢?根本原因通常在于数据库设计和访问它的查询。在本月的专栏中,我将讲述四项技术,这些技术可用于提高基于 SQL Server? 的应用程序的性能或改善其可伸缩性。我将仔细说明 LEFT JOIN、CROSS JOIN 的使用以及 IDENTITY 值的检索。请记住,根本没有神奇的解决方案。调整您的数据库及其查询需要占用时间、进行分析,还需要大量的测试。这些技术都已被证明行之有效,但对您的应用程序而言,可能其中一些技术比另一些技术更适用。

从 INSERT 返回 IDENTITY

我决定从遇到许多问题的内容入手:如何在执行 SQL INSERT 后检索 IDENTITY 值。通常,问题不在于如何编写检索值的查询,而在于在哪里以及何时进行检索。在 SQL Server 中,下面的语句可用于检索由最新在活动数据库连接上运行的 SQL 语句所创建的 IDENTITY 值:

SELECT @@IDENTITY

这个 SQL 语句并不复杂,但需要记住的一点是:如果这个最新的 SQL 语句不是 INSERT,或者您针对非 INSERT SQL 的其他连接运行了此 SQL,则不会获得期望的值。您必须运行下列代码才能检索紧跟在 INSERT SQL 之后且位于同一连接上的 IDENTITY,如下所示:
9月21

Oracle和MySQL中的分页查询

00:26数据库  From: 本站原创
        在Oracle中分页查询是通过rownum来实现的shy,举例来说,假如我希望返回某个特定查询的前20条记录,那么查询应该是类似这样的81
select * from MY_TABLE where rownum <= 20;

对于一个每页为20条记录第分页查询,加入你希望查询第二页的记录,那么就应该是
select * from MY_TABLE where rownum between 21 and 40

对于mysql来讲,分页查询可以用limit查询实现,比如查询前20条记录可以是:
select * from MY_TABLE limit 20;

同样的,如果需要查询第20到40条记录可以这样:
select * from MY_TABLE limit 19, 20;

其中第一个参数是起始行(从0开始),第二个参数是要返回的行数。


9月8

MySQL的入门使用

17:48数据库  From: 本站原创
        尽管现在操作MySQl都有可视化的软件,也有phpMyAdmin,但为了学习起见,还是了解应用下手写界面:)smile
在安装完MySQL之后,打开MySQL Command Line Client,首先要求输入的即是数据库用户密码28
在正确输入密码之后,显示为“mysql>”的命令行,表示MySQl已经准备好接受新的命令行了;当在此行输入了一条未完整的命令而进行换行时,将显示为“->”的命令行,这表示等待多行命令的下一行命令。
举个例子来说,显示MySQL中的所有数据库表,正常情况之下可以这样来表示:
mysql> show databases;
正常一个MySQL命令是由SQL语句组成,随后有一个分号的。当然,如果命令没有输入完整,将会出现如下情况:
mysql> show
-> databases
-> ;
9月1
     有时候可能大家会忘记mysql 数据库root用户的密码17,因为一般不用嘛,按以下几个步骤可以重置mysql数据库root用户的密码jzan
点击在新窗口中浏览此图片
步骤:
点击在新窗口中浏览此图片
1、首先停止正在运行的MySQL进程
Linux下,运行 killall -TERM mysqld
Windows下,如果写成服务的 可以运行:net stop mysql,如未加载为服务,可直接在进程管理器中进行关闭。

2、以安全模式启动MySQL
Linux下,运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe --skip-grant-tables

3、完成以后就可以不用密码进入MySQL了
Linux下,运行 /usr/local/mysql/bin/mysql -u root -p 进入
Windows下,运行 X:/MySQL/bin/mysql -u root -p 进入

4、更改密码
>use mysql  
>update user set password=password("新密码") where user="root";  
>flush privileges;  
注:如是4.1以上版本则使用old_password()函数进行密码更改。
8月31
       最近听大家都在讨论关于数据库优化方面的东东shy,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正啊!
点击在新窗口中浏览此图片
SQL语句:
点击在新窗口中浏览此图片
是对数据库(数据)进行操作的惟一途径;
消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低;
可以有不同的写法;易学,难精通。

SQL优化:
固定的SQL书写习惯,相同的查询尽量保持相同,存储过程的效率较高。
应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致

ORACLE优化器:
在任何可能的时候都会对表达式进行评估,并且把特定的语法结构转换成等价的结构,这么做的原因是
要么结果表达式能够比源表达式具有更快的速度
要么源表达式只是结果表达式的一个等价语义结构
不同的SQL结构有时具有同样的操作(例如:= ANY (subquery) and IN (subquery)),ORACLE会把他们映射到一个单一的语义结构。
8月31
      一直有很多朋友问我多表查询的方法smile,今天,天空下的雨就给初学数据库的朋友讲一下数据库多表查询的简单实现。不说废话了,直接例子吧。
例子:
数据库有三个表
学生表:student   选课表:lesson   成绩表:score
学生表[student]
id    name   les      
1     小糊      1
2     小猪      1
3     阿正      3
4     小飞      2

选课表[lesson ]
id    LName
1     软件
2     经济
3     管理

成绩表[score]
id     stuID    lesID    num
1       1           1        97
2       4           1        90
3       1           2        80
4       2           1        95
5       3           1        88
6       2           3        97
上面就是三张表的数据。
这时候,我们就需要把这些表中的数据联合起来查询。比如说学生的选课信息,我们可以这样写:
分页: 4/5 第一页 上页 1 2 3 4 5 下页 最后页 [ 显示模式: 摘要 | 列表 ]