| 调整内容 | Oracle | SQL Server | MySQL |
| 数据类型:字符 | VARCHAR2 | NVARCHAR | |
| 数据类型:数字 | NUMBER | tinyint,smallint,int,bigint | |
| 数据类型:时间 | TIMESTAMP | DATATIME | |
| 列自增 | sqeuence.nextval | identity(1,1) | identity(1,1) |
| 约束主键 | CONSTRAINT 表名 PRIMARY KEY (列名) USING INDE | PRIMARY KEY | |
| 约束唯一 | CONSTRAINT 表名 UNIQUE (列名) USING INDEX | UNIQUE INDEX | |
| 注释 | commnet | sp_addextendedproperty | |
| 函数时间 | sysdate | getdate() | |
| 查询分页 | rownum | top | limit |
| 查询跨库 | 库名.表名 | 库名.dbo.表名 | limit |
| 执行存储过程 | call | exec |
Author Archives: neohope
Oracle Job 101
1、新建一个存储过程
create or replace procedure p_insert_into_t1
as
begin
insert into t1
(select * from t where STATUS=1);
end;
2、新建一个作业
variable job_abc number;
begin
sys.dbms_job.submit(:job_abc,
'p_insert_into_t1;',
sysdate,
'sysdate+1/1440');
commit;
end;
其中,
参数1表示作业名字,参数2表示执行的存储过程,
参数3表示开始执行的时间,参数4表示执行的时间间隔
commit表示立即开始执行
执行成功后,返回job的ID
3、查询作业
select job,
log_user,
to_char(last_date,'yyyy-mm-dd hh24:mi:ss') last_date,
to_char(next_date,'yyyy-mm-dd hh24:mi:ss') next_date,
interval,
what
from user_jobs
4、执行作业
execute dbms_job.run(job_id);
5、删除作业
execute dbms_job.remove(job_id);
6、暂停和继续作业
execute dbms_job.broken(job_id,true); execute dbms_job.broken(job_id,false);
Java HTTP Premature EOF
这几天在调试HTTP通讯的时候,偶尔会发生下面的异常:
java.io.IOException: Premature EOF
主要原因是:
client在读取server返回的文件时,本来已经读完,但client又去读了一次
此时,就会抛出上面的异常
另外,公司搬家后,测试Java取回文件的效率,会出现两种诡异的延时:
1、打开输入流的时候,奇慢无比,要3~4s
2、在从输入流中读取时,不时会有200ms的奇怪延时
在不同的客户端机器上,从同一个服务端取回,会有不同的表现
貌似和客户端操作系统种类和JDK版本都有关,总之很诡异了。
唉~~,时间紧迫,只好找了其他方法解决
有人说是HTTP头设置问题,有人说是IPV6问题,试过后,问题依旧啊。
Oracle实用命令
1、tns命令台
lsnrctl
2、检查tns是否可用
tnsping
3、查询SQL历史记录
select * from v$sql where parsing_schema_name='USERID' order by last_active_time desc
4、查询所有配置
show parameter
JS调用签名Applet访问本地文件导致权限不足
Applet访问本地文件,只需要用私有签名即可搞定。但用JS去调用相同的方法,却返回下面错误:
Exception in thread "Thread-14" java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\TEMP" "read")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.exists(Unknown Source)
......
主要是JS本身不被允许调用本地文件,从而JS调用的Applet方法也就没有权限去做访问本地文件这样的方法了。
为了解决这个问题:
首先,要用Manifest进行权限设置:
Manifest-Version: 1.0 Application-Name: AppletTest Implementation-version: 1.0 Permissions: all-permissions Caller-Allowable-Codebase: * localhost 127.0.0.1 Application-Library-Allowable-Codebase: *
然后,一般来说有两个方案来解决这个问题:
1、通过JS解决:
A、不要直接调用Applet的方法
B、而是用JS操作DOM,生成新的Applet的Tag
C、这样Applet可以在此从init进入,从而获得新的权限,儿不是JS的权限
2、通过AccessController.doPrivileged获取权限来解决:
public String readFile() {
final TestContent content = new TestContent();
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
content.text = readFileByLines("test.txt");
return null;
}
});
return content.text;
}
VS2010中使用System.Data.OracleClient
System.Data.OracleClient在FrameWork2中,在VS2010默认为FrameWork4,只要手工用引用
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.OracleClient.dll
就可以了
winxpx86+cygwin+vs2008编译32位openjdk7
除了win7x64+cygwin+vs2010编译64位openjdk6中的问题外,还会遇下面问题:
1、配套的WindowsSDK为6.0
2、编译器版本校验会出错,要调整Makefile
3、缺少头文件:stdint.h
主要是因为VS2008不符合c99规范
stdint.h
win7x64+cygwin+vs2010编译64位openjdk6
用VS2010编译OpenJDK6,是一个比OpenJDK7更痛苦的过程。
除了OpenJDK7里需要注意的,还有下面几个:
1、编译器版本不同,所以要自行在Makefile中,增加编译器版本
同样的,还有cp一些dll的命令,需要屏蔽
2、命令冲突
主要是sort和echo
3、Windows版本问题,导致部分define失败,以及部分结构体不存在
从而无法编译通过,主要是
jdk/src/windows/native/sun/windows/awtmsg.h jdk/src/windows/native/sun/windows/awtMMStub.h jdk/src/windows/native/java/net/NetworkInterface.h
4、jchar*与LPWCHAR之间的CAST失败,主要存在于
jdk/src/windows/native/sun/windows jdk/src/windows/native/sun/nio/sun jdk/src/windows/native/sun/java2d/windows jdk/src/windows/native/sun/awt/splashscreen
5、设置环境变量的命令行:
@set PATH=C:\Windows\system32; @call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64 @set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools @set ANT_HOME=D:/JavaTools/apache-ant-1.8.1 @set PATH=%PATH%;%ANT_HOME%\bin; @set FREETYPE_HOME=D:/GnuWin/freetype2.4.10 @set PATH=%PATH%;%FREETYPE_HOME%/bin; @set ALT_FREETYPE_LIB_PATH=%FREETYPE_HOME%/lib64 @set ALT_FREETYPE_HEADERS_PATH=%FREETYPE_HOME%/include @set ALT_BOOTDIR=D:/JavaJDK/jdk1.6.0_34 @set ARCH_DATA_MODEL=64 @set ARCH=amd64 @set PLATFORM=windows @set ALT_DROPS_DIR=D:/DiskF/OpenJDK/openjdk6_VS2010_x64/drops @set ALT_COMPILER_PATH=C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/amd64 @set PATH=%PATH%;D:\Cygwin\bin; @set JAVA_HOME= @set CLASSPATH= @color 02 @title OpenJDK6+VS2010+x64 @cmd
Windows2008R2的FTP防火墙配置
最近在Windows2008R2上架设了Windows的FPT服务。
但无论怎样配置防火墙,本地都可以访问,远程只能显示登录框,登录后就卡住不动了。
各种配置入站出站规则。
1、允许了端口
2、允许了服务通过Microsoft FTP Service
还是不行。
最后,增加了一条配置:
允许C:\Windows\System32\svchost.exe通过防火墙,一切正常了。
好吧。。。
虽然这样有风险,但至少管用。
win7x64+cygwin+vs2010编译64位openjdk7
建议:
1、这是一个比较折腾的过程,可能的话建议用linux
2、建议用英文系统
3、建议用英文版的vc++
4、请不要用带空格的路径,尤其是不要用带中文的路径,
主要问题有:
1、可执行文件版本不兼容
2、win和linux路径问题
3、字符集问题,鄙视一下corba的注释,根本没考虑其他字符
4、cl的MT和MD要统一
5、不同路径下文件名冲突问题,
准备与编译:
1、安装VS2010、windows sdk7.1、VS2010 sp1,注意sp1和windows sdk的安装顺序
也有说只有VS的Express版本才需要安装windows sdk的,我反正都安装了。
2、安装directx sdk9(Summer 2004)
3、安装cygwin,并按照要求,下载相应组件,
http://www.cygwin.com/
http://hg.openjdk.java.net/jdk7/jdk7/raw-file/tip/README-builds.html
其中make组件太新,需要替换为3.8.1以前的版本
http://www.cmake.org/files/cygwin/make.exe-cygwin1.7
4、下载JDK6u22+,并安装
5、下载ant,并解压
6、下载并编译FreeType2.4
http://sourceforge.net/projects/freetype/files/
x64+MD+Release
7、下载OpenJDK7,并解压
8、新建drops文件夹,下载下面三个文件,并放到dorps文件夹中:
jaxp145_01.zip
jdk7-jaf-2010_08_19.zip
jdk7-jaxws2_2_4-b03-2011_05_27.zip
理论上,ant应该可以自动下载这三个文件,但我这里下不到
手工下载的话,在Makefile里找下面三个关键字就好了:
jaxp_src.bundle.name
jaxws_src.bundle.name
jaf_src.bundle.name
9、准备编译,新建run.bat,按自己的路径进行修改:
rem 这里是为了解决路径冲突问题 @set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem; rem 注意,这里我的VS和WindowsSDK有冲突,导致VS100COMNTOOLS路径错误 @call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64 @set VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools rem ANT配置 @set ANT_HOME=D:/JavaTools/apache-ant-1.8.1 @set PATH=%PATH%;%ANT_HOME%\bin; rem FreeType配置 @set FREETYPE_HOME=D:/GnuWin/freetype2.4.10 @set PATH=%PATH%;%FREETYPE_HOME%/bin; @set ALT_FREETYPE_LIB_PATH=%FREETYPE_HOME%/lib64 @set ALT_FREETYPE_HEADERS_PATH=%FREETYPE_HOME%/include rem Cygwin设置 @set PATH=%PATH%;D:\Cygwin\bin; rem 这里是OpenJDK的设置啦 @set ALT_BOOTDIR=D:/JavaJDK/jdk1.6.0_34 @set ARCH_DATA_MODEL=64 @set ARCH=amd64 @set PLATFORM=windows @set ALT_DROPS_DIR=D:/DiskF/OpenJDK/openjdk7_VS2010_x64/drops rem 这两个变量要置空 @set JAVA_HOME= @set CLASSPATH= rem 个人爱好 @color 02 @title OpenJDK+VS2010 @cmd
10、运行run.bat
#测试配置: make sanity #没有错误的话: make
我遇到的问题:
1、主要死到了MT和MD上,这个我修改了Makefile,一定要和FreeType保持一致
2、还有FreeType.dll,我编译的是个大Lib,所以Makefile里拷贝dll的语句要去掉
3、corba的字符集问题,要把Makefile里的ascii去掉,因为生成的注释有中文,显然要出错
4、EXE冲突,我的工具版本很多,估计一般人没这么多问题,最后改了PATH,Find改了名称
比如win的find和cygwin的find,Oracle的zip和cygwin的zip
同样,cygwin和(mingw、GnuSetup、GnuWin)的冲突,也要注意
5、还有一个,就是bat中的路径,除Path外尽量用/,因为linux下,\是转义用的
6、尝试了MinGW,发现不够给力啊