|
错误写法:
select a.*, rownum rfrom (select * from lg_order o order by o.order_id) awhere rownum <= 20 and rownum >= 10
正确写法:
select *from (select a.*, rownum r from (select * from lg_order o order by o.order_id) a where rownum <= 20) bwhere r >= 10
第一句是错误的,由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件不成立,查不到记录 SQL的执行顺序从内到外,从右到左。
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:
select * from gc_dfys union select * from ls_jg_dfys
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
而UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL,如下:
select * from gc_dfys union all select * from ls_jg_dfys
本机安装了Oracle数据库和客户端,在公司完全正常使用,晚上回宾馆加班,没有网线,发现Oracle和Listener都启动了却无法访问数据库,提示的信息还是关于监听器。
Oracle10g 我不插网线的时候安装总是报告IP信息错误,就是没有联网无法指定IP,导致安装不成功。大家都知道本机的IP为127.0.0.1,那么,把 E:\oracle\product\10.1.0\Db_1\NETWORK\ADMIN目录下的listener.ora和tnsnames.ora 以及E:\oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下的tnsnames.ora的HOST值都改为127.0.0.1,联网打开Oracle,再拔除网线,用PL/SQL或其他数据库管理工具连接数据库,成功!
注意:
数据库的HOST和客户端的HOST配置必须完全相同。
近日在配置Oracle 10G的流复制环境时,遇到一个问题,关闭数据库(shutdown immediate)后,通过SQL Plus连接数据库:conn sys/his@orc0 as sysdba,出现如下错误:
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
通过重启服务的方式启动数据库,再次连接却能成功登录,也就是说在关闭数据库状态下无法连接服务器。
开始以为是系统环境变量Oracle_SID的配置问题,因为机器有多个实例,一阵折腾后还是不能连接。后来查资料得知:
Oracle9i以后,后台进程PMON自动在监听器中注册在系统参数SERVICE_NAMES中定义的服务名,SERVICE_NAMES默认为 DB_NAME+DOMAIN_NAME。监听配置文件listener.ora中可以不必指定监听的服务名。但是,当数据库处于关闭状态下PMON进程没有启动,也就不会自动注册监听的实例名,所以使用sqlplus sys/his@orc0 as sysdba 会出现ORA-12514错误。
如果在listener.ora文件中指定监听的实例名,则即使数据库处于关闭状态,仍然可以连接。
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zyk)(PORT = 1521))
)
)
以上粗体部件为增加的内容,修改后重启监听服务后即可。
附:通过在lsnrctl中输入set display verbose,然后再通过命令service查看,服务状态为READY表示PMON自动注册的服务名,而UNKNOWN则表示该服务是手工在LISTENER.ORA中配置的数据库服务。
由于本本升级到了4G内存,操作系统是Win7旗舰版,只能识别3G内存,感觉有点浪费,于是下了个64位的Win7装上了。之前装的Oracle10是32位Vista版的,现在得重新下64位的Vista版。但是启动安装程序后被禁止了,如图,最后在网上找到了通过验证的方法,记录下来备忘。
修改文件:\database\stage\prereq\db\refhost.xml 追加:
<!--Microsoft Windows 7--> <OPERATING_SYSTEM> <VERSION VALUE="6.1"/> </OPERATING_SYSTEM>
如图:
修改文件:\database\install\oraparam.ini 找到 Windows=5.0,5.1,5.2,6.0 追加,6.1,你懂的!如图
修改完成后再运行“setup.exe”,顺利通过!
今天下午没事想装一下MySQL5.5,装这小东西我早就轻车熟路,唰唰唰,其利卡察到了最后,配置数据库,可到最后一步的时候把我整肌无力了。大家都知道装MySQL在最后配置数据库的时候需要关闭系统防火墙和其他三方防火墙的,这是尝试,可明明已经关了为啥还要提示下面的错误呢?
我反反复复的检查电脑上是否还有第三方的防火墙开着,360安全卫士、QQ电脑管家、NOD32,统统被关掉了
网络可真是个好东西,马上Google了一下,发现别人同样遇到了此问题,按照他的方法解决了这个问题
在我们配置数据库的时候,有一个允许远程机器访问的复选框,都是因为我们勾选了它,才导致此问题出现的,取消勾选就可以了,如图
我想一般我们在自己的电脑上装MySQL基本上都是自己用,不会有其他人连咱们的数据库,如果有这需求那就得找其他解决方案了
点击“Next”
OK,配置完毕!
PS:第一次配置失败了,咱们再配置就得先删掉之前配置的那个实例,如图:
点击“Next”
点击“Finish”后窗口关闭,再重新配置就可以了
IE6 的邮件可以直接去掉地址栏,但IE7不行,使用window.open,设置location=no,可地址栏依旧可见,只是变成只读而已。在网上搜索了一下,说微软为了安全,防止钓鱼程序,在安全设置的时候关闭了,脚本可以初始化窗口的功能,需要自己手动启用才有效,方法如下:
工具-->Internet选项-->安全-->Internet-->自定义级别-->设置,在设置中调整两个选项: 充许网站打开没有地址栏和状态栏的窗口:启用; 充许由脚本初始化窗口,不受大小和位置限制:启用;
重新启动IE7即可,地址栏消失;
因为打开了新窗口,所以想关闭原来的窗口,调用了window.close,可提示是否关闭,这个在IE6里也是没有的,看来IE7相对IE6确实改变很大,在网上搜了个方法,可以去掉提示,如下:
window.opener = null; window.open('', '_self'); window.close();
弹出窗口在WEB开发中经常遇见,偶尔也会有打开窗口最大化的需求。我们的系统为了扩大可用区域范围,以及禁止用户刷新或在地址栏里直接敲入地址,采用了window.open的方式弹出一个没有地址栏,以及那些减小可用范围的浏览器元素。一直以来我们采用的方式都是如下:
screenWidth = window.screen.width - 10; screenHeight = window.screen.height;window.open(url,'','width='+screenWidth+',height='+screenHeight+',left=0,top=0,titlebar=no,menubar=no,toolbar=no,location=no,status=no,scrollbars=yes,resizable=yes');
也就是获取屏幕的宽高,再设置打开窗口的宽高,但这和鼠标点击点击最大化是不同的,窗口虽说是和屏幕一样宽高了,但和用鼠标拉成的效果一样,最大化按钮还在那里,看着不算满意。还有一种是全屏的方案,这个方案仅次于我们用的这种,真正意义上的可视化区域最大,但窗口没有了边框,看着不舒服,命令如下
//window.open(url, '', 'fullscreen'); // 开启一个全屏的窗口。
网上还有一种借助object对象的方法,也能实现窗口最大化,这个和鼠标点击最大化是一样的效果,但我把它舍弃了,因为窗口弹出后需要我确认一下“ActiveX”控件,这个很烦人,我想用户肯定也不喜欢。卖了这么多的关子,相比各位已经迫不及待了,言归正传,来的朋友肯定是不知道的,知道的也不会来,呵呵,命令如下:
window.open(url, '', 'scrollbars=yes,resizable=yes,channelmode'); // 开启一个被F11化后的窗口起作用的是最后那个特效
即channelmode,前两个是我自己加的,我想让窗口可以最小化或修改大小,不理解你可以把前面的属性去掉试试,那样窗口的最大化按钮就只读了。
如果您的电脑使用的是nforce芯片组的主板和串口硬盘。在系统中安装好所有的硬件驱动程序后,发现在任务栏右下角始终会显示一个“安全删除硬件”的图标。这是nforce芯片组在安装了IDE-SW主板驱动以后,系统会把SATA硬盘识别为可移动设备,每次开机后都会显示这个图标。
清除方法: 打开注册表定位到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\nvata]用右键点击“nvata”,选择“新建/DWORD值”选项,此时会在右侧窗口中添加一个“新值il”项,将它重命名为“DisableRemovable”,再双击它打开“编辑DWORD值”对话框,将“数值数据”更改为“1”,点击“确定”按钮即可。 如果在注册表中找不到“nvata”建值,可定位到[HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\nvatabus]在点击“nvatabus”创建和设置“DisableRemovable”键值即可。 重启电脑后,系统就不会将SATA硬盘识别为可移动设备了,那个“安全删除硬件”图标也就消失了,而且不会影响其它可移动设备的正常使用,在插入U盘或移动硬盘等设备后,系统仍然会出现“安全删除硬件”的图标。
很多朋友右键打开一个文件,发现仅有几个默认的打开方式,选择打开方式却提示“决绝访问”类似字样,解决此问题的办法是,将下面虚线之间的内容复制到文本文档中,保存为"XXXX.reg”,文件名可自己取,叫什么没关系,保存后双击执行,会看到“是否将XXXX.reg中的信息添加进注册表?”,点确认。OK,你现在选择一个文件,看看右键选择打开方式还能不能用!!!
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Unknown] "AlwaysShowExt"="" "QueryClassStore"=""
[HKEY_CLASSES_ROOT\Unknown\shell] @="openas"
[HKEY_CLASSES_ROOT\Unknown\shell\openas]
[HKEY_CLASSES_ROOT\Unknown\shell\openas\command] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,72,00,75,00,\ 6e,00,64,00,6c,00,6c,00,33,00,32,00,2e,00,65,00,78,00,65,00,20,00,25,00,53,\ 00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,73,00,\ 79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,65,00,6c,00,6c,\ 00,33,00,32,00,2e,00,64,00,6c,00,6c,00,2c,00,4f,00,70,00,65,00,6e,00,41,00,\ 73,00,5f,00,52,00,75,00,6e,00,44,00,4c,00,4c,00,20,00,25,00,31,00,00
|