﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Jcat-随笔分类-Database</title><link>http://www.blogjava.net/Jcat/category/11844.html</link><description>宠辱不惊，闲看庭前花开花落～～</description><language>zh-cn</language><lastBuildDate>Fri, 11 Jan 2013 16:32:29 GMT</lastBuildDate><pubDate>Fri, 11 Jan 2013 16:32:29 GMT</pubDate><ttl>60</ttl><item><title>Oracle 11g Release2 新特性</title><link>http://www.blogjava.net/Jcat/archive/2011/06/17/352525.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 17 Jun 2011 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2011/06/17/352525.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/352525.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2011/06/17/352525.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/352525.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/352525.html</trackback:ping><description><![CDATA[
		<font color="#a52a2a">简单过一遍，详细的以后遇到慢慢研究。<br />主要的更新在几个方面：<br />1. OUI的改进<br />2. Oracle Restart<br /></font>
		<b>
				<font color="#a52a2a">3. ASM的增强！！！</font>
		</b>
		<br />
		<br />
		<br />
		<font color="#0000ff">New Grid Infrastructure Installation Option</font>
		<br /> 1. 单点包括：ASM、listener和Oracle Restart（监控、管理并自动重启各个组件）<br /> 2. 集群包括：ASM、listener和Clusterware<br /><br /><font color="#0000ff">New Desktop and Server Class Options</font><br /> 1. Desktop Class：适用于笔记本、台式机<br /> 2. Server Class：适用于服务器（功能上没区别，多一些高级配置选项）<br /><br /><font color="#0000ff">Daylight Savings Time Upgrade of Timestamp with Timezone Data Type</font><br /> 新的DBMS_DST包，优化对TIMESTAMP WITH TIMEZONE数据的管理<br /><br /><font color="#0000ff">SYSASM Privilege</font><br /> 管理ASM需要SYSASM权限，旨在分清ASM管理和DB管理<br /><br /><font color="#0000ff">Fixup Scripts and Prerequisite Checks</font><br /> 安装前检查时，如果遇到不符合要求的配置，OUI会对一些检查项自动生成fixup脚本，用root执行就可以解决相应问题。<br /><br /><font color="#0000ff">New Tool to Configure Custom Installation Options</font><br /> OUI不在提供对单个组件的配置功能，如果需要只能用$ORACLE_HOME/bin/chopt命令行进行配置。<b>我想Oracle的趋势就是为了让更多已经成熟的<font color="#ff0000">配置自动化</font>，简化使用。</b><br /><br /><font color="#0000ff">Deinstallation Tool</font><br /> OUI不再用来删除oracle软件，请使用$ORACLE_HOME/deinstall<br /><br /><font color="#0000ff">Intelligent Data Placement</font><br /> 指定ASM磁盘的磁盘范围，旨在将高频访问的数据放在HOT region（比如磁盘的外道）<br /><br /><font color="#0000ff">Oracle Automatic Storage Management Cluster File System (Oracle ACFS)</font><br /> 为其它文件提供ASM的存储功能<br /><br /><font color="#0000ff">Data Pump Export and Data Pump Import</font><br /> Data Pump兼容Export/Import<br /><font color="#0000ff"><br />Use Oracle Restart to Automatically Restart Your Database</font><br /> 1. 针对单点环境<br /> 2. 自动重启又问题的组件，如：db instance、listener、asm instance<br /><br /><font color="#0000ff">New Method of Installing Oracle Automatic Storage Management</font><br /> 以前，ASM的安装是伴随着DB的安装；现在是伴随着Software的安装。<br /> 其实，就是把ASM上升到一个软件的高度（以前只是db的一个组件）<br /><br /><font color="#0000ff">SRVCTL Support for Single Instance Database in a Cluster</font><br /> SRVCTL统一管理单点（with Restart）和集群数据库（with Clusterware）<br /><br /><strike><font color="#0000ff">Deprecated in Oracle Database 11g Release 2</font></strike><br /> 不支持裸设备了：要么用文件系统、要么用ASM，说白了，<font color="#ff0000"><b>企业环境就必须用ASM</b></font><br /> 不支持Oracle Ultra Search（9i的一个什么鸟功能）<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/352525.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2011-06-17 15:35 <a href="http://www.blogjava.net/Jcat/archive/2011/06/17/352525.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Win - 启动绿色版MYSQL</title><link>http://www.blogjava.net/Jcat/archive/2011/06/16/352394.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Wed, 15 Jun 2011 17:40:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2011/06/16/352394.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/352394.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2011/06/16/352394.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/352394.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/352394.html</trackback:ping><description><![CDATA[
		<font color="#ff0000">重装完系统，mysql不需要重装，直接当绿色版使用，还更干净</font>
		<br />
		<br />
		<font color="#006400">//启动MYSQL</font>
		<br />cd $MYSQL_HOME/bin <br />D:\JAVA\MYSQL\mysql-5.1.53-win32\bin&gt;<b>mysqld --console</b>       <br />110616  1:26:26 [Note] Plugin 'FEDERATED' is disabled.<br />InnoDB: The log sequence number in ibdata files does not match<br />InnoDB: the log sequence number in the ib_logfiles!<br />110616  1:26:26  InnoDB: Database was not shut down normally!<br />InnoDB: Starting crash recovery.<br />InnoDB: Reading tablespace information from the .ibd files...<br />InnoDB: Restoring possible half-written data pages from the doublewrite<br />InnoDB: buffer...<br />110616  1:26:26  InnoDB: Started; log sequence number 0 44233<br />110616  1:26:27 [Note] Event Scheduler: Loaded 0 events<br />110616  1:26:27 [Note] mysqld: ready for connections.<br />Version: '5.1.53-community'  socket: ''  port: 3306  MySQL Community Server (GPL<br />)<br /><font color="#006400"><br />//简单使用</font><br />mysql&gt; <b>show databases</b>;<br />+--------------------+<br />| Database           |<br />+--------------------+<br />| information_schema |<br />| mysql              |<br />| test               |<br />+--------------------+<br />3 rows in set (0.03 sec)<br /><br />mysql&gt; <b>use mysql</b><br />Database changed<br /><br />mysql&gt;<b> show tables;</b><br />+---------------------------+<br />| Tables_in_mysql           |<br />+---------------------------+<br />| columns_priv              |<br />| db                        |<br />| event                     |<br />| func                      |<br />| general_log               |<br />| help_category             |<br />| help_keyword              |<br />| help_relation             |<br />| help_topic                |<br />| host                      |<br />| ndb_binlog_index          |<br /><br /><br /><b>登陆</b><br />D:\JAVA\MYSQL\mysql-5.1.53-win32\bin&gt;mysql.exe -uroot<br /><b>创建数据库</b><br />mysql&gt; create database testdb;<br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/352394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2011-06-16 01:40 <a href="http://www.blogjava.net/Jcat/archive/2011/06/16/352394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分区表 - 主键为本地索引</title><link>http://www.blogjava.net/Jcat/archive/2010/09/15/332074.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Wed, 15 Sep 2010 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/09/15/332074.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/332074.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/09/15/332074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/332074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/332074.html</trackback:ping><description><![CDATA[
		<font color="#006400">--主键是非分区索引，也可以看作是全局</font>
		<br />create table test_par1<br />(<br />  tdate   varchar2(8) <font color="#ff0000">primary key</font><br />)<br />partition by range ( tdate )<br />(<br />     partition p1 values less than ('20090201'),<br />     partition p2 values less than ('20090301'),<br />     partition pm values less than (MAXVALUE)  <br />) tablespace test;<br /><br /><br /><font color="#006400">--主键是分区索引</font><br />create table test_par2<br />(<br />  tdate   varchar2(8)<br />)<br />partition by range ( tdate )<br />(<br />     partition p1 values less than ('20090201'),<br />     partition p2 values less than ('20090301'),<br />     partition pm values less than (MAXVALUE)  <br />) tablespace test;<br /><br /><font color="#ff0000">create index</font> i_tdate2 on test_par2(tdate) <b><font color="#ff0000">local</font></b>;<br /><br />alter table test_par2 <font color="#ff0000">add constraint</font> pk_tdate2 <font color="#ff0000">primary key</font>(tdate);<br /><br /><br /><br /><font color="#006400">--查看test_par2的DDL<br /></font>select dbms_metadata.get_ddl( 'TABLE', 'TEST_PAR2' ) from dual;<br /><font color="#006400">--整理如下</font><br />create table test_par3<br />(<br />  tdate   varchar2(8),<br />  constraint pk_tdate3 primary key (tdate) <font color="#ff0000">using index <b>local</b></font><br />)<br />partition by range ( tdate )<br />(<br />     partition p1 values less than ('20090201'),<br />     partition p2 values less than ('20090301'),<br />     partition pm values less than (MAXVALUE)  <br />) tablespace test;<br /><br /><br /><font color="#a52a2a">这个案例也告诉我们，在做DDL时，尽量还是显示的写出属性，一些简易语法会引起不可知的定义。最后都用 get_ddl 再查一下，这才是Oracle真正执行的DDL。</font><br /><img src ="http://www.blogjava.net/Jcat/aggbug/332074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-09-15 15:26 <a href="http://www.blogjava.net/Jcat/archive/2010/09/15/332074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2基础命令</title><link>http://www.blogjava.net/Jcat/archive/2010/07/09/325651.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 09 Jul 2010 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/07/09/325651.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/325651.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/07/09/325651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/325651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/325651.html</trackback:ping><description><![CDATA[
		<font color="#006400">列出所有实例</font>
		<br />[db2inst1@dcm ~]$ db2ilist <br />db2inst1<br /><font color="#006400"><br />列出当前实例下的所有数据库</font><br />[db2inst1@dcm ~]$ db2 list db directory<br /><br /> System Database Directory<br /><br /> Number of entries in the directory = 1<br /><br />Database 1 entry:<br /><br /> Database alias                       = SAMPLE<br /> Database name                        = SAMPLE<br /> Local database directory             = /home/db2inst1<br /> Database release level               = d.00<br /> Comment                              =<br /> Directory entry type                 = Indirect<br /> Catalog database partition number    = 0<br /> Alternate server hostname            =<br /> Alternate server port number         =<br /><br /><font color="#006400">启动实例</font><br />[db2inst1@dcm ~]$ db2start<br />07/09/2010 14:24:36     0   0   SQL1063N  DB2START processing was successful.<br />SQL1063N  DB2START processing was successful.<br /><br /><font color="#006400">连接到数据库</font><br />[db2inst1@dcm ~]$ db2 connect to sample<br /><br />   Database Connection Information<br /><br /> Database server        = DB2/LINUX 9.7.1<br /> SQL authorization ID   = DB2INST1<br /> Local database alias   = SAMPLE<br /><br /><font color="#006400">执行SQL</font><br />[db2inst1@dcm ~]$ db2<br />db2 =&gt; select * from staff where dept=20<br /><br />ID     NAME      DEPT   JOB   YEARS  SALARY    COMM     <br />------ --------- ------ ----- ------ --------- ---------<br />    10 Sanders       20 Mgr        7  98357.50         -<br />    20 Pernal        20 Sales      8  78171.25    612.45<br />    80 James         20 Clerk      -  43504.60    128.20<br />   190 Sneider       20 Clerk      8  34252.75    126.50<br /><br />  4 record(s) selected.<br /><br /><font color="#006400">退出</font><br />db2 =&gt; quit<br />DB20000I  The QUIT command completed successfully.<br /><br /><font color="#006400">断开连接（不断开就不能db2stop）</font><br />[db2inst1@dcm ~]$ db2 connect reset<br />DB20000I  The SQL command completed successfully.<br /><br /><font color="#006400">关闭实例</font><br />[db2inst1@dcm ~]$ db2stop<br />07/09/2010 14:29:32     0   0   SQL1064N  DB2STOP processing was successful.<br />SQL1064N  DB2STOP processing was successful.<br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/325651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-07-09 14:32 <a href="http://www.blogjava.net/Jcat/archive/2010/07/09/325651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库、实例 on Oracle/DB2</title><link>http://www.blogjava.net/Jcat/archive/2010/07/08/325584.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 08 Jul 2010 10:26:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/07/08/325584.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/325584.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/07/08/325584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/325584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/325584.html</trackback:ping><description><![CDATA[
		<font color="#808080">最近初探了一下DB2，发现关于“数据库”、“实例”的概念及其关系容易把人弄晕，这里小小总结一下，并把Oracle也拉进来一起整。<br />另外，发现Oracle和IBM老搞一些理论上就针锋相对的事情，如RAC vs DPF (database partitioning feature)，很是有趣。</font>
		<br />
		<br />
		<br />
		<font color="#0000ff">
				<b>基本概念还是相同的</b>
		</font>
		<br />
		<font color="#006400">数据库软件（下面简称<b>软件</b>）</font>：软件本身，一台主机安装一套就可以了。（抛开你故意在一台服务器上安装2遍Oracle/DB2这种不正常思维）<br /><br /><font color="#006400"><b>实例</b></font>：数据库<b>软件</b>启动后的“进程+内存”<br /><blockquote>软件+实例的关系：一台电脑只需要按照一套QQ（软件），但是我们可以多用户登录（实例）。换到哲学的角度，就是抽象和具体的关系。<br /></blockquote><font color="#006400">数据库（狭义，下面简称<b>库</b>）</font>：一堆文件（数据文件、控制文件、日志文件、参数文件）<br />它和软件的区别：软件是厂商卖给你的东西；<b>库</b>是你自己的东西（业务、应用）<br />它和实例的关系：用户需要借助实例（所提供的各种手段）来访问<b>库</b><br /><blockquote><b>库</b>就相当于是QQ聊天记录<br /><br /></blockquote><font color="#a52a2a">最后：数据库（广义）= 软件 + 实例 + 库</font><br />一台服务器（即一套数据库软件）可以建多个实例，多个库，且互不相干<br /><br /><br /><font color="#0000ff"><b>体系结构的不同之处</b></font><br />Oracle  实例和库一一对应<br />DB2     一个实例可以挂多个库<br /><br /><br /><font color="#0000ff"><b>高级情况（简单提一下，以后再慢慢研究）</b></font><br />Oracle：RAC一个库被多个实例挂<br />DB2：DPF一个实例多个库<br /><blockquote>在数据库集群模式设计方面，有Share everything架构和Share nothing架构，前者以ORACLE RAC为代表，IBM DB2 Purescale为挑战者；后者以IBM DB2 DPF为代表。<br /></blockquote><br /><img src ="http://www.blogjava.net/Jcat/aggbug/325584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-07-08 18:26 <a href="http://www.blogjava.net/Jcat/archive/2010/07/08/325584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>行链接 和 行迁移</title><link>http://www.blogjava.net/Jcat/archive/2010/06/13/323511.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Sun, 13 Jun 2010 06:08:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/06/13/323511.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/323511.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/06/13/323511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/323511.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/323511.html</trackback:ping><description><![CDATA[
		<font size="5">行链接：</font>
		<br />1. 一条记录的大小大于block size，则产生行链接<br />2. 容易发生在比较大的行上<br />3. 因为行链接是由db_block_size不够大引起的，所以对已有的行链接是无法清除的<br />4. 9i以后，可以对不同的表空间设置不同的db_block_size，可以将一些特殊的宽表放在大block size的表空间<br /><br />例子：<br />表空间block size为8k（8192），因为数据块头也要占一定空间，所以如下例，实际只能放7948的数据，一旦超过，就产生行链接<br /><br />--无<br />create table test7948(a char(2000),b char(2000),c char(2000),d char(1948))<br />tablespace test;<br /><br />insert into test7948 values('a','b','c','d');<br />commit;<br /><br />--有<br />create table test7949(a char(2000),b char(2000),c char(2000),d char(1949))<br />tablespace test;<br /><br />insert into test7949 values('a','b','c','d');<br />commit;<br /><br /><br /><br /><font size="5">行迁移：</font><br />1. 本来是放的下的<br />2. 因为更新使row size变大了，一个block里又不足以放下增加的空间（PCTFREE相关），则产生行迁移<br />3. 容易发生在PCTFREE较小，对类似varchar类型的update又很多的表上<br />4. 无法避免，但通过把数据导出导入进行清除<br /><br />例子：<br />--无<br />create table test7948_vchar(a char(2000),b char(2000),c char(2000),d char(1940), e varchar(9))<br />tablespace test;<br /><br />insert into test7948_vchar values('a','b','c','d','12345678');<br />commit;<br /><br />一更新，使得row size大于7948了，产生行迁移<br />--有<br />update test7948_vchar set e='123456789'<img src ="http://www.blogjava.net/Jcat/aggbug/323511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-06-13 14:08 <a href="http://www.blogjava.net/Jcat/archive/2010/06/13/323511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>切换TEMP表空间</title><link>http://www.blogjava.net/Jcat/archive/2010/04/30/319765.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 30 Apr 2010 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/04/30/319765.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/319765.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/04/30/319765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/319765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/319765.html</trackback:ping><description><![CDATA[--创建一个大一点的TEMP表空间<br />create temporary tablespace temp1<br />tempfile '/oracledatafile/temp01.dbf' SIZE 100m autoextend on next 100m maxsize 5000m;<br /> <br />--切换默认TEMP表空间<br />alter database default temporary tablespace temp1;<br /><br />--删掉以前的TEMP表空间<br />drop tablespace temp including contents and datafiles;<img src ="http://www.blogjava.net/Jcat/aggbug/319765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-04-30 11:05 <a href="http://www.blogjava.net/Jcat/archive/2010/04/30/319765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>物化视图</title><link>http://www.blogjava.net/Jcat/archive/2010/01/13/309251.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Tue, 12 Jan 2010 16:04:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/01/13/309251.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/309251.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/01/13/309251.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/309251.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/309251.html</trackback:ping><description><![CDATA[
		<font color="#006400">
				<font color="#800080">1. 物化视图由于是物理真实存在的，故可以创建索引。 </font>
				<br />
				<br />
				<br />
				<br />
				<br />--为基表创建MLOG<br />--创建物化视图时应先创建存储的日志空间，否则建MV时报错<br />--ORA-23413: table "SCOTT"."EMP" does not have a materialized view log</font>
		<br />create materialized view log on <font color="#ff0000">scott.emp</font><br />tablespace test<br />/<br /><br /><br /><font color="#006400">--创建物化视图</font><br />create materialized view test_mv<br />tablespace test<br />parallel (degree 4)<br />build immediate refresh fast<br />enable query rewrite<br />as <br />select * from <font color="#ff0000">scott.emp</font><br />/<br /><br /><br /><font color="#006400">--查看一下结果，果然很符合物化视图的定义，一个表+一个视图</font><br />SQL&gt; select object_name, object_type from user_objects where object_name = 'TEST_MV';<br />OBJECT_NAME    OBJECT_TYPE<br />-----------    --------<br />TEST_MV        TABLE<br />TEST_MV        MATERIALIZED VIEW<br /><br />SQL&gt; select mview_name, container_name from user_mviews;<br />MVIEW_NAME       CONTAINER_NAME<br />---------------- ------------------------------<br />TEST_MV          TEST_MV  <font color="#0000ff">（这就是那个存储表）</font><br /><br /><font color="#006400">--查看MLOG的情况</font><br /><font color="#006400">--注意：MLOG的所属和MV的所属并不是同一个</font><br />SQL&gt; select log_owner, master, log_table from dba_mview_logs<br />LOG_OWNER    MASTER    LOG_TABLE<br />---------------------------------<br />SCOTT        EMP    MLOG$_EMP <font color="#000080">（MLOG其实也就是一个表）</font><br /><br />SQL&gt; desc scott.<font color="#000080">mlog$_emp</font>;<br />Name            Type<br />-------------------------------<br />EMPNO            NUMBER(4)<br />SNAPTIME$$        DATE<br />DMLTYPE$$        VARCHAR2(1)<br />OLD_NEW$$        VARCHAR2(1)<br />CHANGE_VECTOR$$        RAW(255)<br /><br /><br /><br /><font color="#006400">--删除MLOG</font><br />drop materialized view log on 物化视图所依赖的表名;  <br /><font color="#006400">--删除物化视图</font><br />drop materialized view 物化视图名;<br /><img src ="http://www.blogjava.net/Jcat/aggbug/309251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-01-13 00:04 <a href="http://www.blogjava.net/Jcat/archive/2010/01/13/309251.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>触发器</title><link>http://www.blogjava.net/Jcat/archive/2010/01/11/309025.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Mon, 11 Jan 2010 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/01/11/309025.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/309025.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/01/11/309025.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/309025.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/309025.html</trackback:ping><description><![CDATA[
		<font color="#a52a2a">注意，为了能在终端看见put_line的输出，还需要先开启<br />set serveroutput on</font>
		<br /> 
		<br /><br /><font color="#006400">--用来测试的表</font><br />create table test_tri(<br />a1 int,<br />a2 int<br />)<br />tablespace test<br /><br /><b><br /><i><font color="#0000ff">-----行级</font><font color="#0000ff">insert</font><font color="#0000ff">触发器</font></i></b><font color="#0000ff"><i><b>-----</b></i><br />1) 插入的一行新数据保存在<b>:new</b><br />2) </font><font color="#0000ff">insert触发器没有:old值</font><br /><font color="#0000ff">3) 对:new的修改，只能定义在before类型的触发器中</font><br /><br /><font color="#800080">---触发器语法---</font><br /><font color="#800080">create or replace trigger 名称 <br />[after|before] [delete|update|insert] <br />[of 列名] [on 表名] <br />[referencing new as 新行别名 old as 旧行别名] <br />[for each row] [when(条件)]<br />declare <br />.... <br />begin <br />... <br />exception <br />.... <br />end; </font><br /><br /><font color="#006400">--定义</font><br />create or replace trigger test_before_insert<br /><b>before </b>insert on test_tri<br />for each row <font color="#ff0000">when(new.a2 is null)</font><br />begin<br />    dbms_output.put_line('insert row original: a1=' || :new.a1 || ' a2=' || :new.a2);<br />    :new.a2 := :new.a1 * 2;   <br />end;<br />/<br /><br />create or replace trigger test_after_insert<br /><b>after </b>insert on test_tri<br />for each row<br />begin<br />    dbms_output.put_line('insert row actual: a1=' || :new.a1 || ' a2=' || :new.a2);   <br />end;<br />/<br /><font color="#006400"><br />--测试</font><br />SQL&gt; insert into test_tri(a1) values(1);<br />insert row original: a1=1 <font color="#ff0000">a2=</font><br />insert row actual: a1=1 a2=2<br /><br />SQL&gt; insert into test_tri values(2,3);<br />insert row actual: a1=2 a2=3<br /><br />SQL&gt; select * from test_tri;<br />        A1         A2<br />---------- ----------<br />         1          <font color="#ff0000">2(由触发器生成的值)</font><br />         2          3<br /><br /><br /><br /><i><b><font color="#0000ff">-----DDL触发器-----</font></b></i><font color="#006400"><br />--任何create语句都会触发这个语句</font><br />create or replace trigger test_ddl_trigger<br />before create on schema<br />begin<br />    dbms_output.put_line( 'DDL Trigger' );<br />    insert into test_tri values(9,9);<br />end;<br /><img src ="http://www.blogjava.net/Jcat/aggbug/309025.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-01-11 14:58 <a href="http://www.blogjava.net/Jcat/archive/2010/01/11/309025.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IPC extproc PLSExtPro</title><link>http://www.blogjava.net/Jcat/archive/2010/01/05/308354.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Tue, 05 Jan 2010 13:59:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2010/01/05/308354.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/308354.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2010/01/05/308354.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/308354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/308354.html</trackback:ping><description><![CDATA[
		<font color="#808080">Oracle建好后，tnsnames和listener中自动就带有如下内容，这里咱们就来解释一下这些东西是干什么用的</font>
		<br />
		<br />
		<i>----TNSNAMES.ora----</i>
		<br />EXTPROC_CONNECTION_DATA =<br />  (DESCRIPTION =<br />    (ADDRESS_LIST =<br />      (ADDRESS = (PROTOCOL = <b><font color="#0000ff">IPC</font></b>)(KEY = <font color="#ff1493"><b>EXTPROC1</b></font>))<br />    )<br />    (CONNECT_DATA =<br />      (SID = <b><font color="#ff0000">PLSExtProc</font></b>)<br />      (PRESENTATION = RO)<br />    )<br />  )<br /><br /><i>----LISTENER.ora----</i><br />SID_LIST_LISTENER =<br />  (SID_LIST =<br />    (SID_DESC =<br />      (SID_NAME = <font color="#ff0000"><b>PLSExtProc</b></font>)<br />      (ORACLE_HOME = /opt/oracle/10gR2)<br />      (PROGRAM = <b><font color="#ffa500">extproc</font></b>)<br />    )<br />  )<br /><br />LISTENER =<br />  (DESCRIPTION_LIST =<br />    (DESCRIPTION =<br />      (ADDRESS = (PROTOCOL = <font color="#0000ff"><b>IPC</b></font>)(KEY = <b><font color="#ff1493">EXTPROC1</font></b>))<br />      (ADDRESS = (PROTOCOL = TCP)(HOST = dcm)(PORT = 1521))<br />    )<br />  )<br /><br /><br /><font color="#0000ff"><b>IPC - Inner Process Communication</b></font><br />When a process is on the same machine as the server, use the IPC protocol for connectivity instead of TCP. Inner Process Communication on the same machine does not have the overhead of packet building and deciphering that TCP has. <br />I've seen a SQL job that runs in 10 minutes using TCP on a local machine run as fast as one minute using an IPC connection. The difference in time is most dramatic when the Oracle process has to send and/or receive large amounts of data to and from the database.<br />For example, a SQL*Plus connection that counts the number of rows of some tables will run about the same amount of time, whether the database connection is made via IPC or TCP. But if the SQL*Plus connection spools much data to a file, the IPC connection will often be much faster -- depending on the data transmitted and the machine workload on the TCP stack.<br /><br />For how to configure it:<br />1. you should add one IPC line in the LISTENER.ORA<br />2. You should also add one IPC line in the TNSNAMES.ORA<br /><br /><br /><br /><font color="#ff0000"><b>PLSExtPro - PL/Sql External Procdure</b></font><br />默认安装时，会安装一个PL/SQL外部程序（<font color="#ffa500"><b>extproc</b></font>--这是程序名）条目在listener.ora中，是oracle为调用外部程序默认配置的监听，它的名字（也就是SID）通常是ExtProc或<font color="#ff0000">PLSExtProc</font>。<br />但一般不会使用它，可以直接从listener.ora中将这项移除，因为对ExtProc已经有多种攻击手段了，在不使用外部程序时，Oracle也是建议删除的。<br /><br /><font color="#ffa500"><b><br /><br /></b><b>extproc</b><font color="#000000">的作用</font></font>就是在pl/sql中调用<b>外部语句</b>，如c，java写的过程。<br />现在，Oracle已经全面支持JAVA了，这东西也就过时了，之所以继续保留是考虑到兼容以前老版本的数据库实例。<br /><br /><font color="#ffa500">[oracle@dcm bin]$ extproc<br />Oracle Corporation --- TUESDAY   JAN 05 2010 21:58:23.878<br />Heterogeneous Agent Release 10.2.0.1.0 - Production</font><br /><img src ="http://www.blogjava.net/Jcat/aggbug/308354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2010-01-05 21:59 <a href="http://www.blogjava.net/Jcat/archive/2010/01/05/308354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Scheduler 10G NEW</title><link>http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 17 Dec 2009 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/306315.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/306315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/306315.html</trackback:ping><description><![CDATA[
		<font color="#006400">--登录sys用户，创建一个测试用户，权限可以给大点</font>
		<br />SQL&gt; create user test identified by xxxxx;<br />SQL&gt; grant connect to test;<br />SQL&gt; grant resource to test;<br />SQL&gt; grant dba to test;<br /><br /><br /><b><font color="#006400">--登录test用户，开始测试</font></b><br /><font color="#006400">--建个测试表</font><br />create table test_table(id int, time timestamp);<br /><br /><font color="#006400">--创建Job</font><br />begin<br />dbms_scheduler.create_job(<br />    job_name =&gt; 'test_job',<br />    job_type =&gt; 'PLSQL_BLOCK',<br />    job_action =&gt; 'insert into test_table <br />                  (select <font color="#0000ff">nvl</font>(max(id),0)+1, systimestamp from test_table, dual);', <font color="#0000ff">--nvl函数同SQLServer的isnull函数</font><br />    start_date =&gt; null, <font color="#006400">--一激活，就开始</font><br />    repeat_interval =&gt; '<font color="#ff0000">FREQ=SECONDLY;INTERVAL=10</font>');<br />end;<br /><br /><font color="#ff0000">FREQ用来指定间隔的时间周期，可选参数有：YEARLY，MONTHLY，WEEKLY，DAILY，HOURLY，MINUTELY，SECONDLY。</font><br /><br /><font color="#006400">--光创建没用，还需要激活；也可以在创建时，直接把enable属性设置为true（<font color="#a52a2a">enabled =&gt; true</font>）</font><br />select job_name, enabled, run_count from user_scheduler_jobs;<br /><font color="#808080">JOB_NAME                       ENABL  RUN_COUNT<br />------------------------------ ----- ----------<br />TEST_JOB                       <b>FALSE</b>          0</font><br /><br />begin<br />dbms_scheduler.enable('test_job');<br />end;<br /><br /><font color="#006400">--查看效果</font><br />select id, to_char(time,'HH24:MI:SS:FF3') from test_table;<br /> <font color="#808080">      ID  TO_CHAR(TIME,'HH24<br />---------- ------------------<br />         1 16:13:29:542<br />         2 16:13:39:506<br />         3 16:13:49:109<br />         4 16:13:59:097<br />         5 16:14:09:109<br />         6 16:14:19:103<br />         7 16:14:29:101<br />         8 16:14:39:099<br />         9 16:14:49:105<br />        10 16:14:59:100</font><br /><br /><font color="#006400">--停止任务</font><br />begin<br />dbms_scheduler.disable('test_job');<br />end;<br /><br /><font color="#006400">--删除任务</font><br />begin<br />dbms_scheduler.drop_job('test_job');<br />end;<br /><img src ="http://www.blogjava.net/Jcat/aggbug/306315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-12-17 16:13 <a href="http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库的隔离级别</title><link>http://www.blogjava.net/Jcat/archive/2009/12/05/304869.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Sat, 05 Dec 2009 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/12/05/304869.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/304869.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/12/05/304869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/304869.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/304869.html</trackback:ping><description><![CDATA[
		<h3>
				<font color="#800080" face="Verdana">一致和并发是对立的，需要根据应用，选择权宜之计</font>
		</h3>
		<b>
				<br />
				<font color="#0000ff">数据不一致的现象</font>
		</b>
		<br />
		<font color="#808080">---事务内单SQL的情况---</font>
		<br />1.<b>脏读</b>-Dirty Read：本事务读取了其它事务尚未提交的修改数据<br />例子：读了不该读的<br />1:00 x=1<br />1:01 A用户 Update x=2（但未commit）<br />1:02 B用户 Select x --&gt; x=2<br /><font color="#006400">合理的情况是x仍然等于1</font><br /><br /><font color="#808080">---事务内多SQL的情况（典型的如，先查再改）---</font><br />2.<b>不可重复读</b>-Non Repeatable Read<br />例子1：自相矛盾<br />1:00 x=1 y=2<br />1:01 B用户 Select x,y --&gt; x=1 y=2<br />1:02 A用户 Update x=2; Commit;<br />1:03 B用户 Select x+y --&gt; x+y=4 <br /><font color="#006400">首先这个结果从单条SQL的角度看，是没有问题的。但是，如果把B的两次查询看作一个整体（事务），那么合理的情况应该是<br />  x+y仍然等于3<br />  或者B再进行一次事务，得出 x=2 y=2 x+y=4 的结果</font><br /><br />例子2：更新丢失<br />1:00 x=1<br />1:01 B用户 Select x --&gt; x=1<br />1:02 A用户 Select x --&gt; x=1<br />1:03 A用户 Update x=2; Commit;<br />1:04 B用户 Update x=3; Commit;<br /><font color="#006400">同样，从单条SQL来讲，没有任何问题。<br />但是从逻辑的合理性讲，一般的更新操作都是先查再改，换言之<br />  A真正想做的是Update x from 1 to 2<br />  B真正想做的是Update x from 1 to 3<br />但最终却造成了在B不知情的情况下，把B的初衷改为了Update x from 2 to 3</font><br /><br />3.<b>幻影读</b>-Phantom Read<br />例子：读到了未来<br />1:00 X1=1 X2=2<br />1:01 B用户 Select Xi --&gt; X1=1 X2=2<br />1:02 A用户 Insert X3=3; Commit;<br />1:03 B用户 Select sum(Xi) --&gt; re=6<br /><font color="#006400">其实道理和之前的不可重复读相同，只不过是由Insert引起的罢了。<br />（甚至Delete也会引起类似的问题，但好像学术界并没有对Delete进行讨论）</font><br /><br /><br /><br /><font color="#0000ff"><b>Isolation Level</b></font><br />Read Uncommitted：1，2，3都会发生<br />  Oracle中严格禁止脏读<br />  在SQL Server 7.0中，是可以选择该级别的<br />Read Committed：发生2，3（Oracle的默认级别）<br />Repeatable Read：发生3<br />Serializable：都不发生<br /><br /><br /><font color="#0000ff"><b>Oracle的实现方式</b></font><br />Read Committed：默认就实现<br />Repeatable Read：<br />  1. 悲观锁（select ... for update)，影响并发<br />  2. 乐观锁（update where 所有字段都作为条件)，不影响并发<br />Serializable：<br />  alter session set isolation_level=serializable/read only<br /><img src ="http://www.blogjava.net/Jcat/aggbug/304869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-12-05 17:45 <a href="http://www.blogjava.net/Jcat/archive/2009/12/05/304869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分区表初探，外加双引号问题</title><link>http://www.blogjava.net/Jcat/archive/2009/08/18/291683.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Tue, 18 Aug 2009 10:17:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/08/18/291683.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/291683.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/08/18/291683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/291683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/291683.html</trackback:ping><description><![CDATA[
		<font color="#006400">--创建一个分区表</font>
		<br />create table scott.testpart <br />(<br />    TEXTDATE   VARCHAR2(8) <br />)<br />partition by range ( TEXTDATE )<br />(<br />     partition p1 values less than ('20090201'),<br />     partition <font color="#ff0000">"p2"</font> values less than ('20090301'), <font color="#006400">--注意这里的双引号</font><br />     partition pm values less than (MAXVALUE)  <br />)<br /><br /><font color="#006400"><br />--插入一些数据（顺便实践一下双层循环）</font><br />DECLARE<br />    i int:=1;<br />    j int:=1;<br />BEGIN<br />       WHILE i&lt;=3 LOOP<br />            WHILE j&lt;=3 LOOP<br />                insert into scott.testpart values (2009*10000+i*100+j);<br />                j:=j+1;<br />            END LOOP;          <br />        i:=i+1;    <br />        j:=1; <font color="#006400">--注意要重置j，否则就回不到j循环里面了</font><br />        END LOOP;<br />END;<br /><br /><br /><font color="#006400">--需要先进行分析，否则num_rows列将为空</font><br />analyze table scott.testpart compute statistics;<br /><br /><font color="#006400">--查看各个分区的情况</font><br />select table_name, partition_name, num_rows from DBA_TAB_PARTITIONS<br />where table_owner='SCOTT' and table_name='TESTPART';<br />TABLE_NAME                PARTITION_NAME           NUM_ROWS<br />-------------------------- ------------------------------ ----------<br />TESTPART                       P1                                              3<br />TESTPART                       PM                                            3<br />TESTPART                       <b><font color="#ff0000">p2</font></b>                                             3<br /><font color="#ff0000">注意p2因为加了引号仍然是小写（但并不显示引号，这点比较讨厌），没加引号的会显示为大写</font><br /><br /><br /><font color="#006400">--验证数据确实进入了正确的分区</font><br />select * from scott.testpart partition(p1);<br />TEXTDATE<br />--------<br />20090101<br />20090102<br />20090103<br /><br /><font color="#006400">--创建p2时有引号，使用p2时也就需要引号。</font><br /><font color="#ff0000">--特别的，用一些第三方客户端创建分区表时，生成的SQL往往会自动加上引号，而查看DBA_TAB_PARTITIONS时又看不出来，所以遇到下面的问题，可以加个引号试试。</font><br />select * from scott.testpart partition(p2);<br />ERROR at line 1:<br />ORA-02149: Specified partition <font color="#a52a2a">does not exist</font><br /><br />select * from scott.testpart partition(<b><font color="#ff0000">"p2"</font></b>);<br />TEXTDATE<br />--------<br />20090201<br />20090202<br />20090203<br /><br /><br /><font color="#006400">--其它相关</font><br />select * from scott.testpart;<br />truncate table scott.testpart;<br />drop table scott.testpart;<br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/291683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-08-18 18:17 <a href="http://www.blogjava.net/Jcat/archive/2009/08/18/291683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NLS_DATE_FORMAT</title><link>http://www.blogjava.net/Jcat/archive/2009/06/27/284404.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Sat, 27 Jun 2009 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/06/27/284404.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/284404.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/06/27/284404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/284404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/284404.html</trackback:ping><description><![CDATA[
		<b>--修改后重新启动数据库，永久生效</b>
		<br />SQL&gt; alter system set nls_date_format='yyyymmdd';<br />ERROR at line 1: <font color="#006400">--不能是memory scope（默认是both，所以也不行）</font><br />ORA-02096: specified initialization parameter is not modifiable with this option<br /><br />SQL&gt; alter system set nls_date_format='yyyymmdd' scope=spfile;<br />System altered.<br /><br />SQL&gt; show parameter nls_date_format  <font color="#006400">--这个时候还没生效</font><br />NAME                                 TYPE        VALUE<br />------------------------------------ ----------- ------------------------------<br />nls_date_format                      string<br /><br /><font color="#006400">--重启数据库后</font><br />SQL&gt; show parameter nls_date_format <br />NAME                                 TYPE        VALUE<br />------------------------------------ ----------- ------------------------------<br />nls_date_format                      string      yyyymmdd<br /><br />SQL&gt; select sysdate from dual;<br />SYSDATE<br />--------<br />20090627<br /><br /><br /><br /><b>--只对当前session有效，重登录一次SQLPLUS，效果就消失了</b><br />SQL&gt; alter session set nls_date_format='yyyy-mm-dd';   <font color="#ff1493">--这个格式也很常用 yyyy-mm-dd hh:mi:ss</font><br />Session altered.  <font color="#006400">--同时会覆盖初始化参数里的设置</font><br /><br />SQL&gt; select sysdate from dual;<br />SYSDATE<br />----------<br />2009-06-27<img src ="http://www.blogjava.net/Jcat/aggbug/284404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-06-27 16:18 <a href="http://www.blogjava.net/Jcat/archive/2009/06/27/284404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle Data Dictionary</title><link>http://www.blogjava.net/Jcat/archive/2009/06/18/283125.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 18 Jun 2009 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/06/18/283125.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/283125.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/06/18/283125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/283125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/283125.html</trackback:ping><description><![CDATA[Oracle所有对象的相关信息都可以通过<b>静态数据字典</b>来查找，但数据字典实在太多，也记不清名字。<br />因为数据字典都是以<font color="#ff0000">DBA_</font>开头的<font color="#ff0000">视图</font>，所以可以想办法先把它们列出来。<br /><font color="#808080">btw，DBA&gt;ALL&gt;User</font><br /><br />以下两句结果上是等效的<br />select object_name from dba_objects where object_name like 'DBA\_%' escape '\' and object_type='VIEW';<br />select view_name from dba_views where view_name like 'DBA\_%' escape '\';<br /><br /><br /><br />例子：<br />我想查看数据文件的相关信息，但是从DBA_DATA_FILES里，并没有看见Temp表空间的数据文件的信息。<br />于是可以尝试如下搜索：<br />SQL&gt; select view_name from dba_views where view_name like 'DBA\_%<b><font color="#0000ff">TEMP</font></b>%' escape '\';<br />VIEW_NAME<br />------------------------------<br />DBA_ADVISOR_SQLW_TEMPLATES<br />DBA_ADVISOR_TEMPLATES<br />DBA_HIST_BASELINE_TEMPLATE<br />DBA_LOB_TEMPLATES<br />DBA_REPCAT_REFRESH_TEMPLATES<br />DBA_SUBPARTITION_TEMPLATES<br />DBA_TEMPLATE_REFGROUPS<br />DBA_TEMPLATE_TARGETS<br /><b><font color="#0000ff">DBA_TEMP_FILES</font></b>    <font color="#006400">--找到嫌疑犯，进去一看，果然记录的是关于Temp表空间的数据文件的信息</font><br />DBA_TEMP_FREE_SPACE<br /><br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><img id="Code_Closed_Image_231211" onclick="this.style.display='none'; Code_Closed_Text_231211.style.display='none'; Code_Open_Image_231211.style.display='inline'; Code_Open_Text_231211.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11" /><img id="Code_Open_Image_231211" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_231211.style.display='none'; Code_Closed_Image_231211.style.display='inline'; Code_Closed_Text_231211.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11" /><span id="Code_Closed_Text_231211" style="border: 1px solid rgb(128, 128, 128); background-color: rgb(255, 255, 255);">列一些常用的在这吧</span><span id="Code_Open_Text_231211" style="display: none;"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">有趣的时，绝大多数数据字典都是复数单词，一般从单词上也都能猜出该视图的作用：<br />dba_users     数据库用户信息<br />dba_segments  表段信息<br />dba_extents    数据区信息<br />dba_objects    数据库对象信息<br />dba_tablespaces   数据库表空间信息<br />dba_data_files    数据文件设置信息<br />dba_temp_files   临时数据文件信息<br />dba_rollback_segs   回滚段信息<br />dba_ts_quotas   用户表空间配额信息<br />dba_free_space  数据库空闲空间信息<br />dba_profiles   数据库用户资源限制信息<br />dba_sys_privs   用户的系统权限信息<br />dba_tab_privs  用户具有的对象权限信息<br />dba_col_privs  用户具有的列对象权限信息<br />dba_role_privs  用户具有的角色信息<br />dba_audit_trail  审计跟踪记录信息<br />dba_stmt_audit_opts  审计设置信息<br />dba_audit_object   对象审计结果信息<br />dba_audit_session  会话审计结果信息<br />dba_indexes  用户模式的索引信息</span></span></div><br /><img src ="http://www.blogjava.net/Jcat/aggbug/283125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-06-18 22:42 <a href="http://www.blogjava.net/Jcat/archive/2009/06/18/283125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ALTER DATABASE vs ALTER SYSTEM</title><link>http://www.blogjava.net/Jcat/archive/2009/06/16/282570.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Tue, 16 Jun 2009 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/06/16/282570.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/282570.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/06/16/282570.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/282570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/282570.html</trackback:ping><description><![CDATA[这两个命令都是用来更改一些数据库配置的，所以经常容易混淆，如：<br />&gt;alter database drop logfile group 1;<br />&gt;alter system switch logfile;<br />&gt;alter system kill session 'sid,serial#';<br /><br />为了方便记忆，归纳如下：<br /><font color="#000080"><b>alter database</b> (改变数据库--database)<br />和物理文件直接相关的操作<br /><br /><b>alter system </b>(改变实例--instance)<br />不直接牵涉到磁盘文件的操作</font><br /><br /><font color="#006400">当然，这只是为了方便记忆，只满足大部分的情况，并不是所有的命令都能套到这个框框里，最终还是用熟了就记住哪个是哪个了。</font><br /><br /><br /><font color="#a52a2a">---外传---<br />oracle server=Instance (memory structure) + Database (disk file) + U/S Process<br />   Instance=SGA + Background Process<br />   Database=control file + data file + log file<br />   U/S Process= User Process + Server Process + PGA<br /></font><br /><img src ="http://www.blogjava.net/Jcat/aggbug/282570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-06-16 12:32 <a href="http://www.blogjava.net/Jcat/archive/2009/06/16/282570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RMAN基础</title><link>http://www.blogjava.net/Jcat/archive/2009/05/13/270434.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Wed, 13 May 2009 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/05/13/270434.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/270434.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/05/13/270434.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/270434.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/270434.html</trackback:ping><description><![CDATA[
		<font color="#006400">登录RMAN</font>
		<br />
		<b>[oracle@dcm ~]$ rman target /</b>
		<br />Recovery Manager: Release 11.1.0.6.0 - Production on Wed May 13 13:25:30 2009<br />Copyright (c) 1982, 2007, Oracle.  All rights reserved.<br />connected to target database: O11G (DBID=140043054)<br /><font color="#006400">  或</font><br /><b>[oracle@dcm ~]$ rman</b><br />Recovery Manager: Release 11.1.0.6.0 - Production on Thu Jun 18 13:28:07 2009<br />Copyright (c) 1982, 2007, Oracle.  All rights reserved.<br /><b>RMAN&gt; connect target /</b><br />connected to target database: O11G (DBID=140043054)<br /><br /><br /><font color="#006400"><br />因为数据库是Open的，且又是非归档模式，所以无法进行在线全备份</font><br /><b>RMAN&gt; backup database;</b><br />ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode<br /><br /><font color="#006400">关了，整成mount状态</font><br /><b>RMAN&gt; shutdown</b><br />database closed<br />database dismounted<br />Oracle instance shut down<br /><br /><b>RMAN&gt; startup mount</b><br />connected to target database (not started)<br />Oracle instance started<br />database mounted<br /><br /><font color="#006400"><br /><br />开始数据库全备份</font><br /><b>RMAN&gt; backup database;</b><br />Starting backup at 13-MAY-09<br />allocated channel: ORA_DISK_1<br />channel ORA_DISK_1: SID=154 device type=DISK<br />channel ORA_DISK_1: starting full datafile backup set<br />channel ORA_DISK_1: specifying datafile(s) in backup set<br />input datafile file number=00001 name=/u01/app/oracle/oradata/o11g/system01.dbf<br />input datafile file number=00002 name=/u01/app/oracle/oradata/o11g/sysaux01.dbf<br />input datafile file number=00005 name=/u01/app/oracle/oradata/o11g/example01.dbf<br />input datafile file number=00003 name=/u01/app/oracle/oradata/o11g/undotbs01.dbf<br />input datafile file number=00007 name=/u01/app/oracle/oradata/o11g/testspace2.dbf<br />input datafile file number=00004 name=/u01/app/oracle/oradata/o11g/users01.dbf<br />channel ORA_DISK_1: starting piece 1 at 13-MAY-09<br />channel ORA_DISK_1: finished piece 1 at 13-MAY-09<br /><font color="#ff0000">piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp</font> tag=TAG20090513T153229 comment=NONE<br />channel ORA_DISK_1: backup set complete, elapsed time: 00:01:35<br />channel ORA_DISK_1: starting full datafile backup set<br />channel ORA_DISK_1: specifying datafile(s) in backup set<br />input datafile file number=00006 name=/u01/app/oracle/oradata/o11g/testspace.dbf<br />channel ORA_DISK_1: starting piece 1 at 13-MAY-09<br />channel ORA_DISK_1: finished piece 1 at 13-MAY-09<br />piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13<font color="#ff0000">/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp</font> tag=TAG20090513T153229 comment=NONE<br />channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02<br />Finished backup at 13-MAY-09<br /><br />Starting Control File and SPFILE Autobackup at 13-MAY-09<br />piece handle=<font color="#ff0000">/home/oracle/myo11g/autobackup/c-140043054-20090513-00</font> comment=NONE<br />Finished Control File and SPFILE Autobackup at 13-MAY-09<br /><br /><font color="#006400">查看备份信息</font><br /><b>RMAN&gt; list backup of database;</b><br />List of Backup Sets<br />===================<br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br /><b><font color="#0000ff" size="5">1 </font></b>      Full    1.15G      DISK        00:01:33     13-MAY-09      <br />        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20090513T153229<br />        Piece Name: /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp<br />  List of Datafiles in backup set 1<br />  File LV Type Ckp SCN    Ckp Time  Name<br />  ---- -- ---- ---------- --------- ----<br />  1       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/system01.dbf<br />  2       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/sysaux01.dbf<br />  3       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/undotbs01.dbf<br />  4       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/users01.dbf<br />  5       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/example01.dbf<br />  7       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/testspace2.dbf<br /><br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br /><font color="#0000ff" size="5"><b>2</b></font>       Full    252.00K    DISK        00:00:07     13-MAY-09      <br />        BP Key: 2   Status: AVAILABLE  Compressed: NO  Tag: TAG20090513T153229<br />        Piece Name: /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp<br />  List of Datafiles in backup set 2<br />  File LV Type Ckp SCN    Ckp Time  Name<br />  ---- -- ---- ---------- --------- ----<br />  6       Full 1565621    13-MAY-09 /u01/app/oracle/oradata/o11g/testspace.dbf<br /><br /><b>RMAN&gt; list backup of controlfile;</b><br />List of Backup Sets<br />===================<br />BS Key  Type LV Size       Device Type Elapsed Time Completion Time<br />------- ---- -- ---------- ----------- ------------ ---------------<br /><font color="#0000ff" size="5"><b>3</b></font>       Full    9.36M      DISK        00:00:08     13-MAY-09      <br />        BP Key: 6   Status: AVAILABLE  Compressed: NO  Tag: TAG20090513T161909<br />        Piece Name: /home/oracle/myo11g/autobackup/c-140043054-20090513-01<br />  Control File Included: Ckp SCN: 1568079      Ckp time: 13-MAY-09<br /><br /><font color="#006400"><br /><br />删除指定(BS Key)的备份集</font><br /><b>RMAN&gt; delete backupset <font color="#0000ff">1</font>;</b><br />using channel ORA_DISK_1<br />List of Backup Pieces<br />BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name<br />------- ------- --- --- ----------- ----------- ----------<br />1       1       1   1   AVAILABLE   DISK        /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp<br /><br />Do you really want to delete the above objects (enter YES or NO)? <b>YES</b><br />deleted backup piece<br />backup piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxwnqz_.bkp RECID=1 STAMP=686763156<br />Deleted 1 objects<br /><br /><font color="#006400">删除所有备份集</font><br /><b>RMAN&gt; delete backup;</b><br /><br />using channel ORA_DISK_1<br /><br />List of Backup Pieces<br />BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name<br />------- ------- --- --- ----------- ----------- ----------<br /><font color="#0000ff"><b>2</b></font>       2       1   1   AVAILABLE   DISK        /u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp<br /><font color="#0000ff"><b>3</b></font>       3       1   1   AVAILABLE   DISK        /home/oracle/myo11g/autobackup/c-140043054-20090513-00<br /><br />Do you really want to delete the above objects (enter YES or NO)? YES <br />deleted backup piece<br />backup piece handle=/u01/app/oracle/flash_recovery_area/O11G/backupset/2009_05_13/o1_mf_nnndf_TAG20090513T153229_50nxzv00_.bkp RECID=2 STAMP=686763258<br />deleted backup piece<br />backup piece handle=/home/oracle/myo11g/autobackup/c-140043054-20090513-00 RECID=3 STAMP=686763268<br />Deleted 2 objects<br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/270434.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-05-13 15:47 <a href="http://www.blogjava.net/Jcat/archive/2009/05/13/270434.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle里的特殊数字</title><link>http://www.blogjava.net/Jcat/archive/2009/04/23/267224.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 23 Apr 2009 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/04/23/267224.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/267224.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/04/23/267224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/267224.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/267224.html</trackback:ping><description><![CDATA[
		<font size="-1">
				<b>01555</b>
				<br />ORA-01555: snapshot too old    回滚段不够用了<br />可以采取的措施有：<br />1、应用程序尽量避免巨表的漫长查询操作，改传统的cursor游标为bulk collect；<br />2、尽量程序中不要使用大事务量的增删改操作，同时记得及时commit；<br />3、加大undo表空间和加大undo的retention。<br /><br /><b>10046</b><br />Event 10046是oracle用于系统性能分析时的一个最重要的事件。</font>
<img src ="http://www.blogjava.net/Jcat/aggbug/267224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-04-23 20:33 <a href="http://www.blogjava.net/Jcat/archive/2009/04/23/267224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle buys Sun</title><link>http://www.blogjava.net/Jcat/archive/2009/04/21/266694.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Tue, 21 Apr 2009 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/04/21/266694.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/266694.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/04/21/266694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/266694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/266694.html</trackback:ping><description><![CDATA[
		<font size="6">Ora</font>
		<font color="#ff0000" size="6">s</font>
		<font size="6">le</font>
		<br />
		<br />
		<span class="javascript" id="text197683">74亿美元</span>呀，现在Oracle可以和18摸全面抗衡了！<br /><br />
简直就成了IT届的 GE vs 西门子!<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/jcat/oracle-sun.JPG" alt="oracle-sun.JPG" border="0" height="385" width="516" /><br /><br /><br />----收购后的格局----<br />航母级：IBM  vs  Oracle+SUN<br />软件：Microsoft，SAP，RedHat，Sybase（小赛的级别是不够放在这的，我觉得它最终也会走上被收购的道路）<br />硬件：HP，Dell，Fujitsu<br /><br /><br />----预测----<br />1. MySQL是生是死？<br />Oracle是当今企业级数据库的老大，MySQL是当今互联网应用的老大。<br />如果小O把小My干掉，并不代表小My的那部分市场会成为小O的；相反，如果小O能好好照顾小My，那简直就无敌了。<br />个人预测：75分，只要小O能够保持一颗开放的心，小My应该能有很好的发展。<br /><br />2. Solaris是生是死？<br />小O一直致力于发展Linux技术（比如他和小红合作搞的Unbreakable Linux），是把Solaris拿来当补充，还是干掉？<br />个人预测：60分，不会有太大发展，保持现状。<br /><br />3. Java的发展方向？<br />Oracle在很多方面都很需要Java，这是好的一面。<br />但是Java作为一门技术，而不是一个产品，需要有一个中立的代表，SUN以前的态度还是不错的。但小O和小I显然是誓不两立的，会不会导致Java世界的分裂？<br />个人预测：70分，这个可能最难预测，实在不希望看到不好的结果。<br /><br />4. 硬件部分<br />这是小O没有的，但是不排除小O把它剥离卖出去。但我又觉得这种可能性很小，因为小O最不缺的就是钱，而且这是小O去和小I叫板的一大资本。<br />个人预测：80分，以后Oracle也可以玩total solution的游戏了。<br /><br /><br /><br />----关系----<br />  和IBM，这回真的成为死死对头了<br />  和HP、Dell，选什么产品还是由市场决定的，小O总不能强买强卖SUN的服务器吧，还好吧<br />  和RedHat，小O和小红正在一起搞过Unbreakable Linux，我觉得小O会继续搞下去<br />  和Sybase，这回搞得三大主流操作系统（Windows、AIX、Solaris）都有自己的数据库了，Sybase的数据库将越来越难卖了<br />  和SAP，Microsoft，跟这次收购没太大关系，但震撼一定不小<br /><img src ="http://www.blogjava.net/Jcat/aggbug/266694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-04-21 10:27 <a href="http://www.blogjava.net/Jcat/archive/2009/04/21/266694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试Oracle Job</title><link>http://www.blogjava.net/Jcat/archive/2009/04/16/265985.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 16 Apr 2009 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/04/16/265985.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/265985.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/04/16/265985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/265985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/265985.html</trackback:ping><description><![CDATA[
		<font color="#006400">
				<font color="#000000">
						<font color="#006400">--最多同时运行的JOB个数；如果太小，JOB就排队等待；如果为0，就没有JOB会被执行。</font>
						<br />SQL&gt; show parameter job_queue_processes<br /><font color="#0000ff">NAME                                        TYPE          VALUE<br />--------------------------         ----------    -------------<br />job_queue_processes         integer          10</font></font>
				<br />
				<br />--一个什么也不做的SP</font>
		<br />CREATE OR REPLACE PROCEDURE mytest<br />IS<br />BEGIN<br />    NULL;<br />END;<br /><br /><font color="#006400">--一个往表里写数据的SP</font><br />CREATE OR REPLACE PROCEDURE mytest<br />IS<br />BEGIN<br />    insert into test_table values(...);<br />END;<br /><br /><font color="#006400">--定时调用SP，10秒（86400秒=1天）</font><br />SQL&gt; VARIABLE job_id NUMBER;<br />SQL&gt; BEGIN<br />           <font color="#006400">-- :job_id中的冒号表示冒号后面的是变量，类似SQL Server的@</font><br />           DBMS_JOB.SUBMIT(:job_id, 'mytest;', sysdate, 'sysdate + 10 / 86400') ;<br />           COMMIT;  <font color="#008000">--记得一定要commit哦</font><br />           END;<br /><br /><font color="#006400">--查看刚才生成的Job ID</font><br />SQL&gt; set serveroutput on<br />SQL&gt; execute dbms_output.put_line(:job_id)  <font color="#006400">--这里倒是不需要commit，直接execute就好了</font><br /><font color="#0000ff">318</font><br /><br /><font color="#006400">--查看所有Job</font><br /> select * from user_jobs;<br /><br /><font color="#006400">--删除Job</font><br />SQL&gt; BEGIN<br />           DBMS_JOB.REMOVE(123); --123是Job ID<br />           COMMIT;<br />           END;<br /><br /><br /><font color="#ffa500">如果Job由于某种原因未能成功运行，Oracle将重试16次，之后如果还未能成功运行，将被标记为Broken。<br /><br /><br /><br /><font color="#800080"><a title="http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html" href="/Jcat/archive/2009/12/17/306315.html">http://www.blogjava.net/Jcat/archive/2009/12/17/306315.html</a><br />从10g开始，DBMS_SCHEDULER 逐步会替换掉 DBMS_JOB<br /><br />DBMS_JOB has been around forever, and now it is deprecated. Although DBMS_JOB still exists in 10g and 11g, but only for backward compatibility. No new features are being added to dbms_job and you will likely quickly run into its limitations. Oracle recommends the use of DBMS_SCHEDULER in releases 10g and up. DBMS_SCHEDULER is a much more robust package and fully-featured than DBMS_JOB. To use the DBMS_SCHEDULER package a user must be granted the CREATE JOB privilege.<br /><br />After replace DBMS_JOB with DBMS_SCHEDULER for all jobs successful, the job_queue_processes parameter can now be set to zero.<br />SQL&amp;gt; alter system set job_queue_processes=0;</font><br /></font><img src ="http://www.blogjava.net/Jcat/aggbug/265985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-04-16 15:42 <a href="http://www.blogjava.net/Jcat/archive/2009/04/16/265985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MySQL CMD</title><link>http://www.blogjava.net/Jcat/archive/2009/03/27/262518.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 27 Mar 2009 14:33:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2009/03/27/262518.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/262518.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2009/03/27/262518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/262518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/262518.html</trackback:ping><description><![CDATA[
		<b>登录</b>  shell&gt; mysql -u用户名 -p密码<br /><br /><b>查看数据库</b>  mysql&gt; show databases;<br /><font color="#006400">至少会显示出两个数据库mysql和test，这是系统自建的，供大家练习用。</font><br /><br /><b>使用数据库</b>  mysql&gt; use 数据库名<br /><br /><b>查看表</b>  mysql&gt; show tables;<br /><br /><b>查看表结构</b>  mysql&gt; desc 表名;<br /><br /><b>备份数据库</b>  shell&gt; mysqldump -uroot -p密码 数据库名 &gt; 备份的文件路径<br /><img src ="http://www.blogjava.net/Jcat/aggbug/262518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2009-03-27 22:33 <a href="http://www.blogjava.net/Jcat/archive/2009/03/27/262518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(Z) 用 SQL_Trace 诊断Oracle中的问题</title><link>http://www.blogjava.net/Jcat/archive/2008/12/19/247345.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 19 Dec 2008 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/12/19/247345.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/247345.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/12/19/247345.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/247345.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/247345.html</trackback:ping><description><![CDATA[很多时候，在我们进行数据库操作时，比如drop user,drop table等，经常会遇到这样的错误：<br />ORA-00604: error occurred at recursive SQL level 1 .<br /><br />关于Recursive SQL错误：<br />我们知道，当我们发出一条简单的命令以后，Oracle数据库要在后台解析这条命令，并转换为Oracle数据库的一系列后台操作，这些后台操作统称为递归SQL。<br />比如create table这样一条简单的DDL命令，Oracle数据库在后台，实际上要把这个命令转换为对于obj$，tab$，col$等底层表的插入操作。Oracle所作的工作可能比我们有时候想的要复杂的多.。<br /><br />所以对于这样的提示，很多时候是没有丝毫用处的。<br /><br />这时，我们需要更详细的信息，sql_trace就是一个好办法。<br />sql_trace实际上就是Oracle内部事件10046的第一个级别，即level=1。通过<font color="#ff0000">event 10046</font>, 我们可以得到详细的数据库会话的信息，每个会话究竟在干什么，在等什么。通过对这个事件的学习，我们可以深入的理解和调整Oracle。<br /><br /><br /><font color="#808080">结合eygle的文章整理的，SQL Trace更详细的用法请见<a href="http://www.eygle.com/archives/2004/10/use_sql_trace_to_diagnose_database.html">原文</a>。</font><br /><br /><br />----------<br /><br />Event 10046是oracle用于系统性能分析时的一个最重要的事件。当激活这个事件后，将通知oracle kernel追踪会话的相关即时信息，并写入到相应trace文件中。这些有用的信息主要包括sql是如何进行解析，绑定变量的使用情况，话中发生的等待事件等。<br />Trace文件将会存放在<font color="#ff0000"> user_dump_dest</font> 所指向的目录，如，C:\ent\oracle\admin\o10g01\udump<br /><br />Event 10046可分成不同的级别（level），分别追踪记录不同程度的有用信息。对于这些不同的级别，应当注意的是向下兼容的，即高一级的trace信息包含低于此级的所有信息。<br />    level 1：跟踪sql语句，包括解析、执行、提取、提交和回滚等。<br />    level 4：包括变量的详细信息<br />    level 8：包括等待事件<br />    level 12：包括绑定变量与等待事件<br />其中，level 1相当于打开了sql_trace。<br /><br />在当前会话启用event，可以利用alter session + 事件名称 + level：<br /><font color="#0000ff">SQL&gt; alter session set event ‘10046 trace name context forever, level 12’;</font><br /><br />关闭当前会话的event：<br /><font color="#0000ff">SQL&gt; alter session set event ‘10046 trace name context off’;</font><br /><br />这里应当值得一提的是，TRACE将消耗相当的系统资源，因此我们在使用TRACE的时候应当慎重。对于正式的系统，应当只在必要的时候进行TRACE操作，并且应当及时关闭。<br /><img src ="http://www.blogjava.net/Jcat/aggbug/247345.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-12-19 15:19 <a href="http://www.blogjava.net/Jcat/archive/2008/12/19/247345.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The meaning of Oracle's version number</title><link>http://www.blogjava.net/Jcat/archive/2008/11/17/241045.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Mon, 17 Nov 2008 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/11/17/241045.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/241045.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/11/17/241045.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/241045.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/241045.html</trackback:ping><description><![CDATA[Oracle Database的大版本号由两部分组成：<b>数字+字母</b>，数字自然是大版本号，<b>字母则是代表了这个版本的“中心思想”</b><font color="#0000ff"><br /><br />8i（1998），9i（2001）：那时候正好互联网兴起，i就代表internet（网络）</font><br /><font color="#ff0000">10g（2003），11g（2007）：现在主推分布式计算，g就代表grid（网格）</font><br /><br /><br /><br /><font color="#a52a2a"><font color="#008000">另外，还有个11i，这容易引起混淆，其实11i是指Oracle EBS（E-Business Suite电子商务套件）的版本号，其实就是Oracle ERP。（这好像跟Oracle Database没什么必然联系，我也不知道这个i代表什么）<br /><br />这也说明Oracle不等于Oracle Database。平常我们说“Oracle”，一般都是指Oracle Database，当然这是它最著名的产品；不过，其实Oracle早就已经不是一家数据库厂商了，而是航母级厂商，东收西购，啥都有了。</font><br /><br /><font color="#9acd32">我见过这样的问题：“</font></font><font color="#9acd32"><i>从版本命名来看8i-9i-10g-<font size="3"><b>11i</b></font>，是不是意味着grid只是昙花一现？</i>”显然这就是混淆了Oracle Database和Oracle ERP。</font><br /><br /><br /><br /><font color="#a9a9a9">----以下是一些参考----<br />In 1998, Oracle announced Oracle8i, which is sometimes referred to as Version 8.1 of the Oracle8 database. The i was added to denote added functionality supporting Internet deployment in the new version. Oracle9i followed, with Application Server available in 2000 and Database Server in 2001.<br /><br />Oracle Database 10g was introduced in 2003; the g denotes Oracle's focus on emerging grid deployment models.<br /><br />Oracle 11i refers to the Oracle ERP Application Suite (often called Oracle E-Business Suite) and really has nothing to do with the database. The latest release (12) will be referred to as 12i. The confusing part is that Oracle used to call its database "i" for "internet" in releases 8 and 9, but now calls the database "g" for "grid". So, to summarize, Oracle 11i refers to the apps and Oracle 11g refers to the database</font><br /><br /><br /><br /><img src ="http://www.blogjava.net/Jcat/aggbug/241045.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-11-17 22:32 <a href="http://www.blogjava.net/Jcat/archive/2008/11/17/241045.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hash Hash</title><link>http://www.blogjava.net/Jcat/archive/2008/07/18/215866.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Fri, 18 Jul 2008 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/07/18/215866.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/215866.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/07/18/215866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/215866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/215866.html</trackback:ping><description><![CDATA[
		<font size="4">
				<b>
						<font color="#808080">&lt;What's Hash&gt;</font>
				</b>
		</font>
		<br />Hash，一般翻译做“散列”，也有直接音译为“哈希”的。<br /><br />我们通常说的Hash，其实指的是Hash算法（即散列算法）：把任意长度的输入，通过Hash算法，变换成固定长度的输出（即Hash值、散列值）。<br /><br />Hash算法有多种实现形式，比如MD5、SHA1，这里就不对算法本身进行讨论了。重点谈谈Hash算法的特性和作用吧：<br />    1）Hash是一种压缩映射：散列值的长度通常远小于输入的长度（比如emule，任意大小是视频文件，都可以映射成一个固定长度的字符串，它就相当于这个文件的信息摘要）<br />    2）不同的输入可能会Hash成相同的输出：这是一个小概率事件，且采用安全性高的Hash算法时，两个不同的输入几乎不可能得到相同的Hash结果。<br />    3）与加密算法不同，Hash算法是一个不可逆的单向函数，不可能从散列值来唯一的确定输入值。<br /><br /><br /><font color="#808080" size="4"><b><br />&lt;What's Hash Table&gt;</b></font><br />0. 在下面的讨论中，我们将用到三国这个例子：假设我们要做个存储结构，需要存储下来三国中的英雄，以及他们的详细信息。我们用他们的名字来作为存储的关键值，例如：刘备，关羽，张飞，曹操，孙权...n。<br /><br /><b>1. 一般的表</b><br /><font color="#0000ff">    name    age    身高    体重<br />    刘备    30    175    60<br />    关羽    28    190    80<br />    张飞    27    185    80<br />    ...n</font><br />这时，如果我们想要查找某个英雄，就需要一边遍历表，一边对名字进行比较。它的时间复杂度为O（n）--线性阶。<br /><br />总结：记录在结构中的相对位置和记录的关键字之间不存在确定的关系，在结构中查找记录时需进行一系列和关键字的比较，查找的效率与比较次数密切相关。<br /><br /><b>2. 数组</b><br />    1）通过地址的访问方式（数组）：Array[2]，这里2就是它的“物理”地址，找到2所对应的内容是通过“直接定位”，而不是“遍历比较”。所以，在所有的线性数据结构中，数组的定位速度最快。它的时间复杂度为O（1）--常熟阶。<br /><br />    这时，我们会想，那我们把刘-关-张-...n，按照1-2-3-...n的顺序放在一个数组里（数组的内容就是这个英雄的对象）不就可以直接定位了？<br /><font color="#0000ff">    arrayid    （name    age    身高    体重）<br />    1            （刘备    30    175    60）<br />    2            （关羽    28    190    80）<br />    3            （张飞    27    185    80）<br />    ...n</font><br /><br />    2）但是：<br />        a）可你凭什么说刘=1，关=2呢？（显然不是叫你用拼音或者笔画排序）<br />        b）我们查找的时候，不可能用arrayid作为查找条件（那还查个P呀），怎样通过name=关羽，“计算”得到arrayid=2呢？<br /><br /><br /><font color="#ff0000">3. <b>散列表</b></font>：其主要目的是用于解决数据的快速定位问题，也即，<font color="#ff1493">怎样通过关键字，计算（而不是遍历比较）得到物理地址。</font><br /><br />1）存放时<br />    <font color="#ff1493">Hash（刘备）=13<br />    Hash（关羽）=7<br />    Hash（张飞）=26<br />    ...n</font><br /><br /><font color="#0000ff">    arrayid    （name    age    身高    体重）<br />    ...<br />    7            （关羽    28    190    80）<br />    ...<br />    13          （刘备    30    175    60）<br />    ...<br />    26          （张飞    27    185    80）<br />    ...n</font><br /><br />    我们也可以看出：<br />    a）<font color="#ff0000">散列</font>，数据并非紧凑的、按顺序存入的：我们可以先在13的位置存上刘备，再在7的位置存上关羽；有些位置还可能一直是空的。<br />    b）<font color="#ff0000">空间换时间</font>：因为散列，显然数组的大小要大于实际实际数据的数量。比如，即使我们只存刘关张3个人，我们也需要一个至少26的数组。<br /><br />2）查找时，就很简单了<br />    Aarry[Hash（关羽）]=Array[7]<br /><br />3）当然实际的hash算法，要比上述复杂，比如<br />    “把Key通过Hash算法转换成一个整型数字，然后就将该数字对数组长度进行取余，取余结果就当作数组的下标，将value存储在以该数字为下标的数组空间里；<br />    而当使用哈希表进行查询的时候，就是再次使用哈希函数将key转换为对应的数组下标，并定位到该空间获取value，如此一来，就可以充分利用到数组的定位性能进行数据定位。”<br /><br />4）Hash冲突：前面说了，不同的输入是有可能hash成相同的输出的<br />    如果Hash（关羽）=Hash（张飞）=250，我们岂不是在存储过程中会遇到麻烦，怎么安排他们二位的地方呢?（总不能让二位打一架，谁赢了谁呆在那吧），这就需要一个解决冲突的方法。<br />    先存储好了关羽，当张飞进入系统时会发现关羽已经是250了，那咱就加一位，251得了。我们查找张飞的时候也是，一看250不是张飞，那就加个1，就找到了。<br />    更极端地，如果这时Hash（赵云）=251，张飞已经早早占了他的地方，那就再加1存到252呗。呵呵，这时我们会发现，当哈希函数冲突发生的机率很高时，可能会有一群英雄在250这个值后面扎堆排队。要命的是查找的时候，时间算法复杂度早已不是O（1）了。所以我们说理想情况下哈希表的时间算法复杂度为O（1）。<br />    这就是说哈希函数的编写是哈希表的一个关键问题，会涉及到一个存储值在哈希表中的统计分布。如果哈希函数已经定义好了，冲突的解决就成为了改变系统性能的关键因素。其实还有很多种方法来解决冲突情况下的存储和查找问题，不一定非要线性向后排队，如果有好的哈希表冲突的解决方法也能很大程度上提高系统的效率。<br /><br /><br /><font color="#a52a2a">FYI，比较书面化的定义：<br />    理想的情况是能直接找到需要的记录，因此必须在记录的存储位置和它的关键字之间建立一确定的对应关系f，使每个关键字和结构中一个唯一的存储位置相对应。因而查找时，只需根据这个对应关系f找到给定值K的像f（K）。若结构中存在关键字和K相等的记录，则必定在f（K）的存储位置上，由此不需要进行比较便可直接取得所查记录。在此，称这个对应关系f为哈希函数，按这个思想建立的表为哈希表（又称为杂凑法或散列法）。</font><br /><br /><br /><font color="#a9a9a9" size="1">参考：<br />http://calmness.javaeye.com/blog/184465<br />http://blog.163.com/xx_snoopy/blog/static/12577162008426731299/</font><br /><img src ="http://www.blogjava.net/Jcat/aggbug/215866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-07-18 16:55 <a href="http://www.blogjava.net/Jcat/archive/2008/07/18/215866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库范式</title><link>http://www.blogjava.net/Jcat/archive/2008/04/16/193422.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Wed, 16 Apr 2008 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/04/16/193422.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/193422.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/04/16/193422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/193422.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/193422.html</trackback:ping><description><![CDATA[
		<b>1NF</b>：属性单一，不可再分（仅一个值仅一种值）<br />很显然，在当前的任何RDBMS中，傻瓜也不可能做出不符合第一范式的数据库，因为RDBMS不允许你把数据库表的一列再分成二列或多列。实际上，还真有这样的垃圾设计，我在某个项目中遇到，将 first_name，middle_name，last_name放在一个字段的，最后想分都分不开，完全折服。<br /><br /><br /><b>2NF</b>：消除了部分依赖（部分依赖由复合主键导致，显然所有单主键的表都符合2NF）<br />&lt;反例&gt; 一个表<br />（学号， 课程名称）→（姓名， 年龄， 成绩， 学分）<br />&lt;部分依赖&gt;<br />（课程名称）→（学分）<br />（学号）→（姓名， 年龄）<br />&lt;改正&gt; 改为三个表<br />（学号）→（姓名， 年龄）<br />（课程名称）→（学分）<br />（学号，课程名称）→（成绩）<br /><br /><br /><b>3NF</b>：消除了传递依赖<br />&lt;反例&gt;<br />（学号）→（姓名， 年龄， 学院， 学院地点， 学院电话）<br />&lt;传递依赖&gt;<br />（学号）→（学院）→（学院地点， 学院电话）<br />&lt;改正&gt; 改为两个表<br />（学号）→（姓名，年龄，学院）<br />（学院）→（地点，电话）<img src ="http://www.blogjava.net/Jcat/aggbug/193422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-04-16 14:16 <a href="http://www.blogjava.net/Jcat/archive/2008/04/16/193422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(z) 存储容量</title><link>http://www.blogjava.net/Jcat/archive/2008/04/07/191210.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Mon, 07 Apr 2008 03:41:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/04/07/191210.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/191210.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/04/07/191210.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/191210.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/191210.html</trackback:ping><description><![CDATA[存储容量：是该存储设备上可以存储数据的最大数量，通常使用千字节（kb kilobyte）、兆字节（MB megabyte）、吉字节（GB, gigabyte）、太字节（TB ，terabyte）和PB(Petabyte)、EB(Exabyte)等来衡量。<br /><br />1KB=2(10)B=1024B； 括号中的数字为2的指数(即多少次方)<br />1MB=2(10)KB=1024KB=2(20)B；<br />1GB=2(10)MB=1024MB=2(30)B。<br />1TB=2(10) GB=1024GB=2(40)B<br />1PB=2(10) TB=1024TB=2(50)B<br />1EB=2(10) PB=1024PB=2(60)B<br /><br />1Byte相當於一個英文字母。<br />Kilobyte(KB)=1024B相當於一則短篇故事的內容。<br />Megabyte(MB)=l024KB相當於一則短篇小說的文字內容。<br />Gigabyte(GB)=1024MB相當於貝多芬第五樂章交響曲的樂譜內容。<br />Terabyte(TB)=1024GB相當於一家大型醫院中所有的X光圖片資訊量。<br />Petabyte(PB)=l024TB相當於50%的全美學術研究圖書館藏書資訊內容。<br />Exabyte (EB)=1024PB；5EB相當於至今全世界人類所講過的話語。<br />Zettabyte(ZB)=1024EB如同全世界海灘上的沙子數量總和。<br />Yottabyte(YB)=1024ZB相當於7000位人類體內的微細胞總和。<br /><br /><br /><font color="#ff0000">厂商制造硬盘时， 1K=1000B，1M=1000K，1G=1000M<br />
所有标80G的硬盘，拿到电脑里就变小了（除以3个1.024）：74.5 = 80 ÷ <b>1.07374<br /><br /><font color="#000000">-----------<br /><br /></font></b><font color="#000000">1 Byte = 8 bit，8位2进制数，2的8次方，256<br /><br /></font></font> 一般网络的速度是以“位每秒”（bps）来表示。注意，是小写b（位），而不是大写B（字节）。所以，<font color="#0000ff">显示的网络速度是需要除8的</font>。<br />比如我的230K的无线猫，也就是说它一秒钟可传输230K个bit，其实也就28K个字节，而且这28K还只是理想值，最快确实达到过20K，一般能有5K都笑了。<img src ="http://www.blogjava.net/Jcat/aggbug/191210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-04-07 11:41 <a href="http://www.blogjava.net/Jcat/archive/2008/04/07/191210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle LOB</title><link>http://www.blogjava.net/Jcat/archive/2008/03/27/188959.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 27 Mar 2008 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/03/27/188959.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/188959.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/03/27/188959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/188959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/188959.html</trackback:ping><description><![CDATA[&lt;引言&gt;<br />    随着社会的发展，在现代信息系统的开发中，需要存储的已不仅仅是简单的文字信息，同时还包括一些图片和音像资料或者是超长的文本。比如开发一套旅游信息系统，每一个景点都有丰富的图片、音像资料和大量的文字介绍。这就要求后台数据库要有存储这些数据的能力。<br />    ORACLE自Oracle8i起通过提供LOB字段实现了该功能。<br /><br />&lt;LOB分类&gt;<br />    LOB，即Large Objects（大对象），是用来存储大量的二进制和文本数据的一种数据类型（一个LOB字段可存储可多达4GB的数据）。它又分为两种类型：内部LOB和外部LOB。<br />    1.内部LOB将数据以字节流的形式存储在数据库的内部。因而，内部LOB的许多操作都可以参与事务，也可以像处理普通数据一样对其进行备份和恢复操作。Oracle支持三种类型的内部LOB：<br />    1）BLOB（二进制数据）<br />    2）CLOB（单字节字符数据）<br />    3）NCLOB（多字节国家字符数据）。<br />    其中CLOB和NCLOB类型适用于存储超长的文本数据，BLOB字段适用于存储大量的二进制数据，如图像、视频、音频等。<br /><br />    2.目前只支持一种外部LOB类型，即BFILE类型。在数据库内，该类型仅存储数据在操作系统中的位置信息，而数据的实体以外部文件的形式存在于操作系统的文件系统中。因而，该类型所表示的数据是只读的，不参与事务。<br />    该类型可帮助用户管理大量的由外部程序访问的文件。<br /><br /><br />&lt;LOB存储方式&gt;<br />    LOB由两部分组成：数据（值）和指向数据的指针（定位器）。尽管值与表自身一起存储，但是一个LOB列并不包含值，仅有它的定位指针。更进一步，为了使用大对象，程序必须声明定位器类型的本地变量。<br /><br />    当内部LOB被创建时，定位器被存放在列中，值被存放在LOB段中，LOB段是在数据库内部表的一部分。<br />    当BFILE被创建时，定位器如同平常一样存储在列中，但是它的值被存储在数据库之外的操作系统文件中。<img src ="http://www.blogjava.net/Jcat/aggbug/188959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-03-27 11:12 <a href="http://www.blogjava.net/Jcat/archive/2008/03/27/188959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sybase PD vs PB</title><link>http://www.blogjava.net/Jcat/archive/2008/03/10/185127.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Mon, 10 Mar 2008 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/03/10/185127.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/185127.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/03/10/185127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/185127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/185127.html</trackback:ping><description><![CDATA[
		<table style="border: 0pt none ; border-spacing: 0px; vertical-align: top; background-color: rgb(255, 255, 255); width: 100%; border-collapse: collapse;">
				<tbody>
						<tr>
								<td style="text-align: left; vertical-align: bottom;">
										<h1 class="header_title">PowerDesigner</h1>
								</td>
						</tr>
						<tr>
								<td style="height: 10px;">
										<br />
								</td>
						</tr>
						<tr>
								<td style="height: 15px; text-align: left; vertical-align: bottom;">
										<h2 class="header_description header_h2">Enterprise architecture modeling and design solution</h2>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- HtmlOnly - content -->
		<p>
				<strong>
						<em>Build or re-engineer your applications using PowerDesigner, Sybase's all-in-one enterprise modeling and design solution.</em>
				</strong>
		</p>
		<p>
PowerDesigner 12.5, a model-driven approach to aligning business and
IT, is an enterprise modeling and design solution that helps you
implement effective enterprise architecture. It brings powerful
analysis and design techniques to your development lifecycle. <br /></p>
		<font color="#ffa500">PowerDesigner：数据库建模工具，与ERWin等工具起名，它的归类是 Modeling &amp; Metadata<br /><br /><br /></font>
		<table style="border: 0pt none ; border-spacing: 0px; vertical-align: top; background-color: rgb(255, 255, 255); width: 100%; border-collapse: collapse;">
				<tbody>
						<tr>
								<td style="text-align: left; vertical-align: bottom;">
										<h1 class="header_title">PowerBuilder</h1>
								</td>
						</tr>
						<tr>
								<td style="height: 10px;">
										<br />
								</td>
						</tr>
						<tr>
								<td style="height: 15px; text-align: left; vertical-align: bottom;">
										<h2 class="header_description header_h2">A 4GL rapid application development tool</h2>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- HtmlOnly - content -->
		<script src="http://www.sybase.com/products.js" type="text/javascript">
		</script>
		<p>
				<a name="top" title="top">
				</a>
				<strong>Accelerate development with PowerBuilder, the market’s favorite 4GL RAD tool.</strong>
		</p>
		<p>
PowerBuilder lets you stay ahead of the development curve and offers
the flexibility to develop for your most productive platform.
PowerBuilder 11.1 incorporates new and emerging technologies that let
you to build traditional two-tier applications, distributed
applications, Web applications and Smart Clients with speed and ease.
And with this new release, you can easily deploy your existing
PowerBuilder applications to .NET. Get started with PowerBuilder 11.1
today, and see how quickly and easily you can build data-driven
applications.</p>
		<br />
		<font color="#ffa500">PowerBuilder：是公司随数据库产品的一个前台开发工具，专门开发应用程序的。它的归类是 Development</font>
		<br />
<img src ="http://www.blogjava.net/Jcat/aggbug/185127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-03-10 16:55 <a href="http://www.blogjava.net/Jcat/archive/2008/03/10/185127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sybase的三大产品</title><link>http://www.blogjava.net/Jcat/archive/2008/03/10/185113.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Mon, 10 Mar 2008 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2008/03/10/185113.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/185113.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2008/03/10/185113.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/185113.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/185113.html</trackback:ping><description><![CDATA[
		<table style="border: 0pt none ; border-spacing: 0px; vertical-align: top; background-color: rgb(255, 255, 255); width: 100%; border-collapse: collapse;">
				<tbody>
						<tr>
								<td style="text-align: left; vertical-align: bottom;">
										<h1 class="header_title">Adaptive Server Enterprise</h1>
								</td>
						</tr>
						<tr>
								<td style="height: 10px;">
										<br />
								</td>
						</tr>
						<tr>
								<td style="height: 15px; text-align: left; vertical-align: bottom;">
										<h2 class="header_description header_h2"> Mission-critical enterprise data management</h2>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- HtmlOnly - content -->
		<p>
				<strong>
						<em>Adaptive Server Enterprise is the mission-critical data  management system for taming the information explosion.</em>
				</strong>
		</p>
		<p>
Adaptive Server Enterprise (ASE) has long been noted for its
reliability, low total cost of ownership and superior performance. With
its latest version, ASE 15, it has been dramatically enhanced to
deliver capabilities urgently needed by enterprises today. It lays the
long-term foundation for strategic agility and continuing innovation in
mission-critical environments. ASE 15 provides unique security options
and a host of other new features that boost performance while reducing
operational costs and risk. Find out how you can exploit new
technologies such as grids and clusters, service-oriented architectures
and real-time messaging. <br /></p>
		<font color="#ffa500">ASE：企业及数据库服务器，适合用于企业级OLTP（和混合负载）环境
		</font>
		<br />
		<br />
		<br />
		<table style="border: 0pt none ; border-spacing: 0px; vertical-align: top; background-color: rgb(255, 255, 255); width: 100%; border-collapse: collapse;">
				<tbody>
						<tr>
								<td style="text-align: left; vertical-align: bottom;">
										<h1 class="header_title">SQL Anywhere</h1>
								</td>
						</tr>
						<tr>
								<td style="height: 10px;">
										<br />
								</td>
						</tr>
						<tr>
								<td style="height: 15px; text-align: left; vertical-align: bottom;">
										<h2 class="header_description header_h2">Sybase iAnywhere - Mobile and Embedded Database</h2>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- HtmlOnly - content -->
		<p>
				<strong>
						<em>The industry-leading mobile and embedded database,
providing data management and exchange technologies that enable
applications for frontline environments. </em>
				</strong>
		</p>
		<p>
SQL Anywhere provides data management and exchange technologies
designed for database-powered applications that operate in frontline
environments without onsite IT support. It offers enterprise-caliber
features in a database that is easily embedded and widely deployed in
server, desktop, remote office and mobile applications. <br /></p>
		<font color="#808080">
				<font color="#ffa500">ASA（Adaptive Server Anywhere）：轻量级数据库服务器，适合用于移动计算（PDA、带操作系统的手机等）/嵌入式计算（POS机、路由器等），和工作组级OLTP环境，特别是移动计算/嵌入式计算。（我估计ASA现在改名叫SQL Anywhere了）</font>
				<br />
		</font>
		<br />
		<p>
				<br />
		</p>
		<table style="border: 0pt none ; border-spacing: 0px; vertical-align: top; background-color: rgb(255, 255, 255); width: 100%; border-collapse: collapse;">
				<tbody>
						<tr>
								<td style="text-align: left; vertical-align: bottom;">
										<h1 class="header_title">Sybase IQ</h1>
								</td>
						</tr>
						<tr>
								<td style="height: 10px;">
										<br />
								</td>
						</tr>
						<tr>
								<td style="height: 15px; text-align: left; vertical-align: bottom;">
										<h2 class="header_description header_h2">Highly optimized business intelligence, analytics and data warehousing</h2>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- HtmlOnly - content -->
		<p>
				<strong>
						<em>The smartest way to deliver high-performance enterprise
analytics and data warehousing with dramatically faster results at a
low cost.</em>
				</strong>
		</p>
		<p>
Sybase IQ is a highly optimized analytics server designed specifically
to deliver faster results for mission-critical business intelligence,
data warehouse and reporting solutions on any standard hardware and
operating systems. It works with diverse data – including unstructured
data – and diverse data sources to deliver unsurpassed query
performance at the lowest price/performance available.
</p>
		<font color="#ffa500">ASIQ：企业级数据仓库数据库服务器，适合于DSS环境中的企业级数据仓库和数据集市
		</font>
		<br />
		<br />
		<br />
		<br />
		<br />
		<font color="#ee82ee">谨以此篇记录我开始Sybase之旅的第一步</font>
		<br />
<img src ="http://www.blogjava.net/Jcat/aggbug/185113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2008-03-10 16:33 <a href="http://www.blogjava.net/Jcat/archive/2008/03/10/185113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(z) SQL Server vs Oracle 存储过程语法转换</title><link>http://www.blogjava.net/Jcat/archive/2007/09/13/144886.html</link><dc:creator>Jcat</dc:creator><author>Jcat</author><pubDate>Thu, 13 Sep 2007 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/Jcat/archive/2007/09/13/144886.html</guid><wfw:comment>http://www.blogjava.net/Jcat/comments/144886.html</wfw:comment><comments>http://www.blogjava.net/Jcat/archive/2007/09/13/144886.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jcat/comments/commentRss/144886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jcat/services/trackbacks/144886.html</trackback:ping><description><![CDATA[
		<br />
		<p>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
								<b>1.  top N 问题</b>
								<br />
    在sql server中，top N 问题很容易解决，如下例：从表stbdbdj中选取排序后的第一行数据进行赋值。</span>
				</font>
		</p>
		<p>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">在sql中解决方法很简单，在select 后面加上：top n 即可，其中 n 代表行数。    <br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">top</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 0, 0); font-weight: bold;">1</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@entrust_date</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> entrust_date,<br /></span><span style="color: rgb(0, 128, 0);">@entrust_no</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> entrust_no<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> run2k..stbdbdj<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> entrust_date </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@date</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> entrust_no </span><span style="color: rgb(128, 128, 128);">&gt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@entrust_no_q</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> report_status </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">order</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">by</span><span style="color: rgb(0, 0, 0);"> entrust_date,entrust_no；</span></div><br /><br />
    在oracle中，没有top n这个命令，我们采取把两层查询方式解决：首先，把需要查找的字段值直接进行排序，然后在外面进行第二次查询，并使用rownum决定行数。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> entrust_date,entrust_no<br /></span><span style="color: rgb(0, 0, 255);">into</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@entrust_date</span><span style="color: rgb(0, 0, 0);">, </span><span style="color: rgb(0, 128, 0);">@entrust_no</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> ( </span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> entrust_date,entrust_no<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> stbdbdj<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> entrust_date </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@date</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> entrust_no </span><span style="color: rgb(128, 128, 128);">&gt;</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@entrust_no_q</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> report_status </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(255, 0, 0);">1</span><span style="color: rgb(255, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">order</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">by</span><span style="color: rgb(0, 0, 0);"> entrust_date,entrust_no )<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> rownumber </span><span style="color: rgb(128, 128, 128);">&lt;=</span><span style="color: rgb(128, 0, 0); font-weight: bold;">1</span><span style="color: rgb(0, 0, 0);"> ;</span></div><br /><br /><br /><b>
2. 如何解决结果集返回时，* 和变量同时存在的问题</b><br />
   下面例子表示，在用游标返回结果集时，同时返回一个变量的值，在</span>
				</font>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">sql server</span>
				</font>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">中代码如下所示：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> a.</span><span style="color: rgb(128, 128, 128);">*</span><span style="color: rgb(0, 0, 0);">,b.organ_id<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> run2k..stbbp a,run2k..stkaccoarg b<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> a.date </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@entrust_date</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.serial_no </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 128, 0);">@serial_no</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.branch_no </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> b.branch_no<br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.exchange_type </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> b.exchange_type;</span></div><br /></span>
				</font>
		</p>
		<p>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
   但在oracle中却没有这种用法，’*’后面必需跟from。解决方法如下：<br />
     1）我们可以把 '*' 变成所需要选择的字段，就是说采用表中需要显示的全部字段表示*。<br />
      例如：<br /></span>
				</font>
		</p>
		<p>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
								<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;">
										<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->
										<span style="color: rgb(0, 0, 255);">open</span>
										<span style="color: rgb(0, 0, 0);"> p_cursor </span>
										<span style="color: rgb(0, 0, 255);">for</span>
										<span style="color: rgb(0, 0, 0);">
												<br />
										</span>
										<span style="color: rgb(0, 0, 255);">select</span>
										<span style="color: rgb(0, 0, 0);"> branch_no,...,organ_id<br /></span>
										<span style="color: rgb(0, 0, 255);">where</span>
										<span style="color: rgb(0, 0, 0);"> ...</span>
								</div>
								<br />
      2）如果这个字段或者说变量是从另外一张表中取出来的，同样可以采用下面的办法。<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">open</span><span style="color: rgb(0, 0, 0);"> p_cursor </span><span style="color: rgb(0, 0, 255);">for</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 0);"> a.</span><span style="color: rgb(128, 128, 128);">*</span><span style="color: rgb(0, 0, 0);">,b.organ_id;<br /></span><span style="color: rgb(0, 0, 255);">from</span><span style="color: rgb(0, 0, 0);"> stkaccoentrust a, stkaccoarg b<br /></span><span style="color: rgb(0, 0, 255);">where</span><span style="color: rgb(0, 0, 0);"> a.branch_no </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> b.branch_no<br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.exchange_type </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> b.exchange_type<br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.init_date </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> v_entrust_date<br /></span><span style="color: rgb(128, 128, 128);">and</span><span style="color: rgb(0, 0, 0);"> a.serial_no </span><span style="color: rgb(128, 128, 128);">=</span><span style="color: rgb(0, 0, 0);"> v_serial_no;<br /></span></div><br /><b>
3. 外联接问题</b><br /><u>
  sql </u></span>
				</font>
				<u>
						<font face="verdana, arial, helvetica" size="2">
								<span style="font-size: 12px;" class="javascript" id="text3651280">&lt;---&gt;</span>
						</font>
				</u>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
								<u> oracle   </u>
								<br />
       a = *b  &lt;---&gt;  a(+)= b<br />
       a *= b  &lt;---&gt;  a = b(+)<br /><br /><b>4. 多条记录求和问题</b><br />
   select sum(A+B+C)<br />
     into  D<br />
     from ...<br />
     where ...<br />
     group by ...<br /><br />
   单条记录求和<br />
    select A+B<br />
      into C<br />
      from ...<br />
      where ...</span>
				</font>
		</p>
		<p>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
								<b>5. case 问题转换</b>
								<br />
  sql:<br />
     case  client_status<br />
           when '0'  then '正常'<br />
           when '1'  then '冻结'<br />
           when '2'  then '挂失'<br />
           when '3'  then '销户'<br />
     else  '未知'<br />
     end<br /><br />
  oracle:<br />
   decode(client_status,'0','正常，'1','冻结','2','挂失','3','销户','未知');<br /><br /><b>6. char 和 varchar 类型区别： </b><br />char 尾部补空格，varchar 尾部不补空格。<b><br /><br />
7. convert转换问题</b><br /><u>
     sql                              </u></span>
				</font>
				<u>
						<font face="verdana, arial, helvetica" size="2">
								<span style="font-size: 12px;" class="javascript" id="text3651280">---&gt; </span>
						</font>
				</u>
				<font face="verdana, arial, helvetica" size="2">
						<span style="font-size: 12px;" class="javascript" id="text3651280">
								<u>oracle</u>
								<br />
     convert(char(5),branch_no) ---&gt;  to_char(branch_no,'99999')<br />
     convert(char(19),count(*)) ---&gt;  lpad(to_char(count(*)),19)<br />
     convert(varchar(20),serial_no) ---&gt; to_char(serial_no,'999...9' )<br />
     							    总共20个9<br />
     					lpad(to_char(serial_no),20)	<br /><br /><br />
8. charindex(substring,string)  ---&gt;  instr(string,substring)   <br />
     		子串	父串 ---&gt;	            父串     子串<br /></span>
				</font>
		</p>
<img src ="http://www.blogjava.net/Jcat/aggbug/144886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jcat/" target="_blank">Jcat</a> 2007-09-13 15:42 <a href="http://www.blogjava.net/Jcat/archive/2007/09/13/144886.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>