oracle SQL调整一例
以下语句从jcss_ocainfo表中,取出ticketseq不存在于jcss_ticketinfo中的记录。并且,每个重复的ticketseq只能取其中的一条记录。select 。。。from jcss_ocainfo twhere t.rowid in(select min(t2.rowid) from jcss_ocainfo t2 group by ticketseq)and t.rowid not in (select tt.rowidfrom jcss_ocainfo tt, jcss_ticketinfo t2where tt.ticketSeq = t2.ticketseq);以下是上述语句的执行计划:1 SELECT STATEMENT 88619 1 15122 NESTED LOOPS SEMI 88619 1 15123 MERGE JOIN ANTI 86865 1 15054 SORT JOIN 85741 193909 2904756825 TABL
netstat -ano 端口对应的进程号
在命令提示符下运行netstat -ano 后面即可显示出相应的PID号,然后再到任务管理器看查看相应的PID号进程即可。[@more@]
solairs 的sys-unconfig
昨天一台solaris的hostname有问题,就按照网上的sys-unconfig重新配置系统。没有想到,sys-unconfig连机器的IP地址也修改了。远程都连接不上了。后续: 9。26日, 使用串口线连接,发现系统进行了一个配置界面。通过这个配置界面,完成服务器的其它配置。OK。[@more@]
sqlServer DBCC CHECKFILEGROUP sysindexes 表的一致性错误(-)
客户的sqlServer备用数据库,使用dbcc 检查时,所有其它的表都OK,就是sysindexes表存在问题。服务器: 消息 8964,级别 16,状态 1,行 1表错误: 对象 ID 2。text、ntext 或 image 节点(位于页 (1:618),槽 0,文本 ID 208889446400)未被引用。采用以下方法: USE MASTER GO sp_dboption '数据库名', 'single user', 'true' Go DBCC CHECKDB('数据库名', REPAIR_ALLOW_DATA_LOSS) Go USE 数据库名
solaris 9 ftp 慢
公司一台solairs 2.9的机器,默认安装了solaris的ftpserver.每次登录时,总是需要很长的时间。一般至少需要30秒以上。通过google.发现有可能是dns的问题。通过关闭dns,问题解决。修改:resolv.confnsswitch.conf 。问题解决。[@more@]
租车小记
自前天租车到今天还车,在老婆的照顾下,一路还算顺利,没有发生一点事故。 悬着心也放下来了.总结一下:选一家好的租车公司.车况要好.不要急着上路,先试一下车况,熟悉一下车子.选择好路线.最好有一个GPS .这次就使用了精伦电子的GPS,感觉真的不错.费用:租车:180/天,标致206 1.6升油钱:80.共跑路径:140KM.如果水平好的话,跑的省油,还可以跑的更远. 停车费:20.[@more@]
sqlServer修复有问题的表
sqlServer数据库库坏表的修复: 1.将数据库设置为单用户模式 exec sp_dboption '库名' ,'single_user','true' 2.修复表 dbcc CHECKTABLE('表名',REPAIR_ALLOW_DATA_LOSS) 3.将数据库设置回多用户模式 exec sp_dboption '库名' ,'single_user','false'[@more@]sql
sqlServer的数据库回缩与表大小检查。
按照客户的要求,昨天检查了一个sqlServer数据库。总计有60G多的空间。用户一直不清楚数据到底放在哪里了。由于自己也一直在搞oracle的,从来没有搞过sqlserver.开始按照oracle的思路,没有找到相关的视图。后来,查看sqlServer的帮助,发现sqlServer是使用一些工具要检查的。具体如下:1.检查表的大小:sp_spaceuse可以一个表一个表的检查。2。检查文件组的分布情况。dbcc checkfilegroup说明:要将整个数据库文件组的分布及使用情况了解清楚,需要运行完整个dbcc。一个60G的数据库,运行了近35分钟。这个看来,还是比较花时间的。没有or
oracle里面的几个环境变量表
今天设置nls_date_format,找到了下面几个视图表。记录一下:nls_database_parameters库的, nls_instance_parameters 实例的。默认同上面表,但对于多实例,如:rac,则有不同。nls_session_parameters :当前用户的。SQL> select * from nls_instance_parameters where rownum < 2; PARAMETER VALUE------------------------------------------------------------ --------------------------------------------------------------------------------NLS_LANGUAGE
ORA-00106: 无法在连接到调度程序时启动/关闭数据库
在远程关闭oracle 10g时,显示如上的错误。修改sqlnet.ora后,USE_DEDICATED_SERVER=ON可以连接并关闭数据库。看来oracle10g在安全性上,也是加强了很多。而且,发现当远程关闭时,一执行关闭命令,系统就马上不允许其它用户连接数据库了。[@more@]
9i flash back
做个记号select dbms_flashback.get_system_change_number from dual; GET_SYSTEM_CHANGE_NUMBER------------------------ 473242681select *from t_test as of scn 473242681;[@more@]9i
关于merge时,出现的ORA-00904 invalid identifier
今天在写一个merge语句时,总是出现上述错误。merge into JCSS_TicketInfo TT using v_ocainfo v_with on ( tt.TICKETSEQ = v_with.ticketSeq) when matched then update set ticketSeq = v_with.ticketSeq ,acceptTime = v_with.acceptTime , iceFullName = v_with.serviceFullName , userCity = v_with.userCity , userPhone = v_with.userPhone , userLevel
基于事件的调度
Oracle 数据库 10g 第 1 版中引入的 Oracle Scheduler 是下一代作业调度系统,它取代了 DBMS_JOB 附带的程序包。与该程序包相比,此 Scheduler 工具有一些显著的优点(详见此处最初的介绍)。 在 Oracle Scheduler 的第一版中,作业基于时间并根据时间触发。但如果要使触发器基于事件该怎么办?例如,当帐户的 Account Manager 更改时,您可能希望一个批处理程序自动执行以重新计算收入并重新发布报表。 可以在 Oracle 数据库 10g 第 2 版的 Scheduler 工具中实现此类基于事件的触发。事件通过 Advanced Queueing (AQ)(其中有效载荷是一个
自动的 Segment Advisor
可以使用 Oracle 数据库 10g 中提供的 Oracle Enterprise Manager 界面指定特定的表空间来发现可能的符合要求的段,但如果您的数据库有几百个表空间,则不可能每天执行该操作。即使您能做,但也不是每个表空间都有需要重新组织的段的。因此,如果有一个自动工具可以提前扫描这些段并报告需要重新组织的段岂不很好? 在 Oracle 数据库 10g 第 2 版中,所附带的程序包 DBMS_SPACE 提供了该功能。内置函数 ASA_RECOMMENDATIONS 显示了段;由于这是一个管道函数,因此必须按如下所示使用它: select * from table (dbms_space.asa_recommendat
更快的启动
2GB 内存即被视为够大的年代已像恐龙一样成为了历史。现在,100GB 的大型缓冲区缓存并不鲜见。实例启动时,初始化这样大小的缓冲区缓存可能需要数分钟甚至数小时。 如果您深入研究这种情况将会发现,在数据库实例启动时无需启动整个缓冲区缓存。当实例启动时,缓冲区缓存是空的;随着用户从表中选择数据,该缓冲区缓存将逐渐填满。因此,在实例启动时无需初始化整个缓冲区缓存。 在 Oracle 数据库 10g 第 2 版中,此行为在启动逻辑中受到控制。当启动实例时,只初始化 10% 的缓冲区缓存;剩余缓冲区缓存在检查点进程打开数据库之后才被初始
删除空数据文件
假设您刚刚向错误目录或表空间中添加了一个数据文件 - 一个很常见的错误。并不会丢失一切;由于该数据文件不包含任何数据,因此您可以轻松地删除它,是这样吗? 遗憾的是,您无法删除它。在 Oracle 数据库 10g 第 2 版之前,删除数据文件的唯一有效方法就是删除整个表空间,然后在没有该特定文件的情况下重新构建它。如果表空间包含数据,则必须通过既费时又费力的过程将数据存储到单独的位置并恢复它。除了不方便以外,该过程还使表空间不可用。 幸运地是,在 Oracle 数据库 10g 第 2 版中,该过程已得到简化:您可以只删除数据文件。例如
无限制的 DBMS 输出
还记得类似以下各行的令人讨厌的错误吗?ERROR at line 1: ORA-20000:ORU-10027:buffer overflow, limit of 1000000 bytes ORA-06512:at "SYS.DBMS_OUTPUT", line 32 ORA-06512:at "SYS.DBMS_OUTPUT", line 97 ORA-06512:at "SYS.DBMS_OUTPUT", line 112 ORA-06512:at line 2 这是由于供应程序包 dbms_output 过去能够处理的最大字符数量是 1 百万字节。在 Oracle 数据库 10g 第 2 版中,该限制已经解除:现在最大输出数量是不封顶的。您只需通过执行以下命令,就可以将其设为“unlimited”set serve
记录错误并继续运行:错误事件记录子句 --转
假设您正试图将表 ACCOUNTS_NY 的记录插入到表 ACCOUNTS 中。表 ACCOUNTS 在 ACC_NO 列上有一个主键。可能 ACCOUNTS_NY 中的某些行与该主键冲突。尝试使用一个常规的插入语句: SQL> insert into accounts 2 select * from accounts_ny; insert into accounts * ERROR at line 1: ORA-00001:unique constraint (ARUP.PK_ACCOUNTS) violated 表 ACCOUNTS_NY 中的记录均未被装载。现在,将错误事件记录项打开,尝试同样的操作。首先,您需要创建一个表来保存由 DML 语句所拒绝的记录。调用该表 ERR_ACCOUNTS。 exec dbms_errlog.C
增强的 COMMIT
增强的 COMMIT 当提交会话时,将刷新重做日志缓冲区,将其内容存储到磁盘上的联机重做日志中。此过程确保在对数据库进行恢复操作时,可以根据需要利用重做日志中回放事务处理。 但是有时您可能想对一部分受保证的恢复能力进行调整,以获得更好的性能。利用 Oracle 数据库 10g 第 2 版,您现在可以控制如何将重做流写入到联机日志文件。您可以在执行提交语句时控制这种行为,或者只需更改数据库的默认行为即可。 让我们来看提交语句是工作过程。在事务处理后,当执行 COMMIT 时,可以附带一个子句: COMMIT WRITE 其中 是影响重做流的部分。
oracle 10g的条件编译
很早就看了oracle10g的存储过程支持条件编译。但一直都无测试,今天测试下,发现要注意的地方还真不少。以下为测试代码:create or replace procedure pro_test_condistion_compileasbegindbms_output.put_line('============================'); $if $$my_condition = 1 $then dbms_output.put_line('my_condition is :1'); $else dbms_output.put_line('my_condition is not :1'); $end dbms_output.put_line('============================'); dbms_output.put_line('============================'); $if $$my_condit