钟情余他Cn
亲戚老表
关注数: 0
粉丝数: 0
发帖数: 74
关注贴吧数: 4
Oracle数据库10个小问题 1、自增长字段很多人从别的数据转来使用Oracle时,会发现Oracle的数据类型里没有自增长字段类型,而像mysql,sqlserver,db2等主流数据库都有对应的自增长字段类型,Oracle的官方解决方案是采用sequence实现,sequence比较灵活,可以指定增长间隔等参数,虽然最终可以实现与其它数据库一样的效果,但是本来一个简单的数据类型可能解决,在Oracle却需要增加一个sequence,insert的时候还需要用sequence.nextval才行,这个地方感觉特不方便,为了兼容Oracle数据库很通用系统还不得不自己设计自增长字段解决方案,比如增加一张专用表来保存自增长字段的表和字段名,每次新增记录时都把这个记录值加1再取出使用。2、安装Oracle的安装是出名的复杂,特别是在非windows系统中,在网上可以找到遍地的Oracle安装文档,但依然有很多人花了大量时间才安装成功,如果要搭建rac系统,那就更复杂了。我们也看到Oracle公司也一直在降低安装的复杂度,11g的安装已经比8i,9i方便了一些。最让人费解的是Oracle非要搞一个java的安装界面,很多朋友都是因为java图形化界面的问题安装失败。我想Oracle是认为java的跨平台特性,选择了用java开发安装程序以统一界面,这样也不用开发多套软件,但是有没有发现我们在安装完后,服务器上使用Oracle数据库大部份管理都是命令行,几乎就没用到过图形化界面了。 Oracle安装其实可以做得更简单,操作系统变量及环境变量安装程序应该可以自动处理,软件包依赖检测可以人性化提示。在非windows系统上图形化是为了更方便安装,但是我感觉Oracle这图形化界面如果启动了我基本上也是点next,安装好了,库建好了再来修改相关参数。3、外连接外连接(left join ,right join,full join)在SQL标准语法中就有明确的定义,但是Oracle的语法确与标准完全不同,这个是历史原因了,没有左连接与右连接的概念,也不支持全外连接,Oracle语法如下所示:select * from t1,t2 where t1.id=t2.id( )采用( )来表示外连接,但是大部份人第一眼会认为这是一个右连接的语法,其实在Oracle中它相当于左连接,我直到现在还有时会搞错左右。好在Oracle9i中增加了标准外连接的语法支持。但是现在用Oracle数据库的人SQL大部份还是采用传统的语法,主要原因可能是传统语法已经习惯,传统语法更好用提示优化,SQL标准语法成熟度不够且还存在一些BUG等等。4、VARCHAR2类型看VARCHAR2这名字,还以为有新的VARCHAR类型,其实在Oracle中就这一种变长字符类型,为什么叫VARCHAR2我也不清楚,也许是历史原因吧,在Oracle也可以使用VARCHAR,但是VARCHAR只是VARCHAR2的一个同义词,而且在官方文档中还建议大家都用VARCHAR2,真是不明白了。VARCHAR2类型的最大长度到11g中还是4000字节,这个上限不知道为什么这么小,很多需求都会超过4000,只能使用lob来管理,但是Oracle的lob比较复杂,性能也不好,所以有些系统甚至在一个表建多个varcahr2(4000)的字段来表示一个字段的内容。而其它数据库varchar类型的最大长度都比4000大,有8K,32K,还有64K的。5、NUMBER类型在10g以前NUMBER类型是Oracle唯一数值类型,可以用来表示整数和小数,范围也足够我们使用,Oracle也支持INTEGER语法,但是INTEGER只是NUMBER的一个同义词,不明白Oracle为什么没有专用的整数类型。NUMBER类型很灵活,但是存储空间很大,性能也不好,如果用4字节可以表示的整数,用NUMBER平均需要6字节存储,如果采用number类型做指数或对数运算,与标准的浮点数性能可能会相差50倍。好在Oracle10g中增加了高效的浮点类型binary_float,binary_double,从而弥补了浮点数性能的问题。Oracle在pl/sql语法中有专用的整形pls_integer,但是pls_integer不能做为字段的类型。6、DATE类型Oracle主要有两种日期类型,date和timestamp,从词面看以为是date表示日期,timestamp可以存储时间,但是实际是date类型可以表示日期和时间,timestamp可以存储更高精度的时间,为什么date不叫datetime算了,Oracle没有只保存日期的类型,如果我们的数据仅要保存日期,那2-4个字节就可以搞定了,但Oracle的date类型需要7个字节存储。
HTML--格式 第一个网页 今天我会写第一个网页了 html是超文本标记语言,里面的标签基本上都是成对出现的,只有极少的标签为但标签,但是为了适应web2.0的标准,但标签也必须以反斜杠闭合
Oracle的数据字典用途实例 ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 我们不能手工修改数据字典里的信息。 很多时候,一般的ORACLE用户不知道如何有效地利用它。 dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: SQL>select * from dictionary where instr(comments,'index')>0; 如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句: SQL>select column_name,comments from dict_columns where table_name='USER_INDEXES'; 依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。 下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 一、用户 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 二、表 查看用户下所有的表 SQL>select * from user_tables; 查看名称包含log字符的表 SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0; 查看某表的创建时间 SQL>select object_name,created from user_objects where object_name=upper('
Oracle SQL执行方式 程序里面的SQL怎样执行 现象: 在项目中有时会出现这种情况,因为代码编写错误,执行完SQL后,没有关闭数据库连接。当该代码重复执行时,会导致应用服务器和数据库的连接不断增加,最终导致连接超过数据库连接上限,系统崩溃。 问题: 项目中的代码很多,很难准确定位到底是哪一段代码出了问题 解决办法: 用应用程序的用户登录oracle,执行下面的SQL: select sql_text from v$sqlarea a where a.HASH_VALUE in ( select b.prev_hash_value from v$session b where b. MACHINE = 'WLS254' ) SQL中的"WLS254"指的是应用服务器的名称,该SQL得到的结果就是WLS254这台机器连接到oracle的正在执行的SQL。通过分析这些SQL,就可以快速的发现是哪部分程序没有释放连接。 v$session视图的字段说明: SADDR RAW(4) 会话地址 SID NUMBER 会话标识符 SERIAL# NUMBER 会话序列号。用来唯一地标识绘画 对象。如果该会话结束且其他会话 以相同的会话ID 开始,则保证会 话级的命令被应用到正确会话对象 AUDSID NUMBER 审计会话ID PADDR RAW(4) 拥有这个会话的进程地址 USER# NUMBER Oracle 用户标识符 USERNAME VARCHAR(30) Oracle 用户名 COMMAND NUMBER 正进行的命令(分析的最后一个语 句),关于值的列表,请参阅表B- 11 OWNERID NUMBER 如果值为2147483644,则此列的 内容无效。否则此列包含拥有可移 植会话的用户标符。对于利用并行 从服务器的操作,将这个值解释为 一个48 字节的值。其低位两字节 表示会话号,而高位字节表示查询 协调程序的实例ID TADDR VARCHAR2(8) 事务处理状态对象的地址 LOCKWAIT VARCHAR2(8) 等待锁的地址;如果没有,为NULL STATUS VARCHAR2(8) 会话的状态:ACTIVE (当前执行的 SQL)、INACTIVE、KILLED(标记为 终止)、CACHED(为Oracle*XA 使 用而临时高速缓存)、SNIPED(会 话不活动,在客户机上等待) SERVER VARCHAR2(9) 服务器类型:DEDICATED、SHARED、 PSEUDO、NONE SCHEMA# NUMBER 模式用户标识符 SCHEMANANME VARCHAR2(30) 模式用户名 OSUSER VARCHAR(15) 操作系统客户机用户名 PROCESS VARCHAR2(9) 操作系统客户机进程ID MACHINE VARCHAR2(64) 操作系统机器名 TERMINAL VARCHAR2(10) 操作系统终端名 PROGRAM VARCHAR(48) 操作系统程序名 TYPE VARCHAR2(10) 会话类型 SQL_ADDRESS RAW(4) 与SQL_HASH_VALUE 一道使用标识 当前正在执行的SQL 语句 SQL_HASH_VALUE NUMBER 与SQL_ADDRESS 一道使用标识当前 正在执行的SQL 语句 MODULE VARCHAR2(48) 包含当前正在执行的模块名,正如 由调用 DBMS_APPLICATION_INFO.SET_MODU LE 过程所设置 MODULE_HASH NUMBER 上面MODULE 的散列值 ACTION VARCHAR2(32) 包含当前执行活动的名称,正如由 调用 DBMS_APPLICATION_INFO.SET_ACTI ON 过程所设置 ACTION_HASH NUMBER 上列活动名称的散列值 CLIENT_INFO VARCHAR2(64) 由 DBMS_APPLICATION_INFO.SET_CLIE NT_INFO 过程设置的信息 FIXED_TABLE_ SEQUENCE NUMBER 此列包含一个数,每当会话完成一 个数据库调用并且存在来自动态性 能表的介入选择,它个数就增加。 这个列可被性能监控程序用来监控 数据库中的统计数据。每当性能监 控程序查看数据库时,只需要查看 当前活动的会话或在这个列中具有 比上次性能监控程序所看到的最大 值更大的值的会话即可。所有其他 会话自上次性能监控程序查看数据 库以来都是空闲的 ROW_WAIT_OBJ# NUMBER 包含ROW_WAIT_ROW#中指定的ROW# 的表的对象ID ROW_WAIT_FILE# NUMBER 包含ROW_WAIT_ROW#中指定的 ROWID 的数据文件的标识符。此列 仅在会话当前正在等待其他事务处 理提交并且ROW_ WAIT_OBJ#不为- 1 时有效 ROW_WAIT_BLOCK # NUMBER 包含ROW_WAIT_ROW#中指定的 ROWID 的数据文件的标识符。此列 仅在会话当前正在等待其他事务处 理提交并且ROW_正在等待其他事 务处理提交并且ROW_ ROW_WAIT_ROW# NUMBER 被锁定的当前ROWID。此列仅在会 话当前正在等待其他事务处理提交 并且ROW_ WAIT_OBJ#不为-1 时有 效 LOGON_TIME DATE 登录时间 LAST_CALL_ET NUMBER 最后一次调用 PDML_STATUS VARCHAR2(8) 如果ENABLED,则会话正处于 PARALLEL DML 启用方式。如果 DISABLED,则此会话不支持 PARALLEL DML 启用方式。如果 FORCED,则会话已经更改为强制 PARALLEL DLL PDML_ENABLED VARCHAR2(3) 此列已被PDML_ENABLED 和PDML_ STATUS 所替代。请看上列内容 FAILOVER_TYPE VARCHAR2(10) 如果这个会话禁止失败切换,则为 NONE ,如果客户机能够在断开之 后失败切换其会话,则为 SESSION,如果客户机还能失败切 换正在进行的选择,则为SELECT FAILOVER_METHOD VARXHAR2(3) 如果这个会话禁止失败切换,则为 NONE,如果客户机能够在断开之后 重新连接,为BASIC,如果备份实 例能够支持它所支持的每个实例的 所有连接,则为PRECONNECT FAILED_OVER VARCHAR2(13) 如果运行在失败切换方式并进行过 失败切换,为TRUE,否则为FALSE RESOURCE_CON SU_MER_GROUP VARCHAR2(32) 会话的当前资源使用者组的名称
如何删除无法删除的文件,删除无法删除文件的删除命令 很多时候,我们删除一些文件,提示无法删除,或者提示被占用,这种情况如何解决呢?首先第一:你可以重启下电脑,再删除一次试下,一般可以删除了。或者如果你知道是哪个电脑进程,你关闭软件的进程,也可以删除了。或者:建 文本文档 写入下列命令:DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1另存为"删除OK.bat"建好后,把要删除的文件或者目录拖放到这个bat文件的图标上就可以删除了。
确实允许此网页访问剪贴板吗,怎么回事,如何去掉这个提示 确实允许此网页访问剪贴板吗,怎么回事,如何去掉这个提示,很烦人,每次复制黏贴内容都会显示这个警告,点击2次确定才可以,如何解决呢?这是因为IE7.0或者ie8.0增强了安全设置。如果IE的安全级别设置为默认或更高安全级别,那么在博客发贴或论坛发贴粘贴时就会弹出这个提示。即使点了“允许访问”后,下次依然会出现提示,让人觉得很麻烦。而原来的IE6.0则基本没有这个提示,但是有些浏览器依然会有这种提示。打开“工具-Internet选项”选择“安全”选项卡中的“自定义级别”在下拉列表中找到“允许对剪贴板进程编程访问”一项,然后在属性栏里选中“启用”选择“启用”后,点击“确定”按钮即可,下次就不会再有这个提示了。
键盘的w和s键不好用了 电脑在使用的过程中,突然键盘的w和s键不好用了,这是怎么回事呢?首先你可以重启下电脑试下,有时候是程序出错了,导致键盘不好用。其次如果没解决的话,可以把键盘拿到别的电脑试下,如果同样不好用,那么就是键盘坏了。如果把别人的键盘拿到这个电脑上也不好用,那就是电脑系统哪里出了问题,可以考虑重装系统。或者看看键盘是不是有其他键被按下去没起来,造成键盘键冲突了。
开始里面的关机按钮关机非常慢或者无法关机 开始里面的关机按钮关机非常慢或者无法关机,很多朋友在关机的时候需要很久才能关闭计算机。一般有以下几种问题:1、开启程序过多,系统需要逐个关闭2、可以先调用任务管理器看看启动的进程多不多,把一些没必要的进程直接关闭,然后启动项禁用这些程序3、看看是不是起用了自动更新,有时候电脑在关机的时候需要更新一些东西 所以很慢4、电脑中毒了,关机文件损坏。5、可以利用快速关机试下 ctrl alt del 调出任务管理器,然后ctrl 关闭 快速关机是不是解决了呢?希望对大家有所帮助。
新买的无线路由器信号不好怎么办? 刚搬新家,为了两台电脑(笔记本、台式机)都能上网,网购了一个无线路由器,型号是TL-WR841N,但实际感觉信号并不好,笔记本的无线信号只有3 格。对了,能否给路由器换上信号更好的天线?查询了一下,发现你买的这款TL-WR841N是TP-LINK 的普及型机型,虽然性价比很高,但是配置一般,最遗憾的就是它的天线是不可拆卸的类型,也就是说,用户不能自行更换成功率更大的天线。所以想通过更换天线来获得更好的无线信号,就行不通了。而高档一些的无线路由器则采用的是可拆卸的天线设计,升级空间更大。看来只有想其他办法改善无线信号,最简单的就是调整路由器和笔记本的相对位置,尽量减少路由器和笔记本之间的阻隔,别让路由器老是“穿墙”,呵呵。
1
下一页