程序员便利贴
分类: 数据库 | 评论

oracle 中 NLSSORT函数的用法 NLSSORT(),用来进行语言排序 拼音 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,’NLS_SORT = SCHINESE_PINYIN_M’) 笔划 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,’NLS_SORT = SCHINESE_STROKE_M’) 部首 SELECT * FROM TEAM ORDER BY NLSSORT(排序字段名,’NLS_SORT = SCHINESE_RADICAL_M’) /*——增加:yl end–*/ 列表一行汉字 WITH A AS (SELECT ‘获取汉字拼音首字母’ W FROM DUAL) SELECT SUBSTR(W, ROWNUM, 1) FROM A CONNECT BY ROWNUM = [...]

oracle

Oracle数据库所在服务器地址:192.168.3.67 默认端口:1521 服务名:OA10 修改 oracle\ora92\network\admin目录下的tnsnames.ora文件 # TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora # Generated by Oracle configuration tools. #以下是添加的 SNDEV= (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.67)(PORT=1521)) (CONNECT_DATA= (SID=OA10) ) ) 补充:cmd中doc窗口登录方式为: 先用scott/tiger登录进去,然后conn username/pwd@SNDEV username为用户名 pwd为密码 SNDEV为上面配置的。

分类: 数据库 | 评论

由于工作需要,需要将业务数据库里所有的数据同步到另外一个处理服务器上。在做方案的时候,想了很多方法,当然最快的办法还是使用物理热备的方式。   但是我个人认为如果对于中大型数据库(我们的数据库有300G左右)最佳的选择还是使用SnapShot方式,即快照的方式。   Oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。也就是说快照根本的原理就是将本地或远程数据库上的一个查询结果保存在一个表中。   以下是我建立的Snapshot,目的是从业务数据库上将数据Copy到处理数据库上,是不同的两个服务器之间对数据copy。   第一步:在处理服务器上的Oracle终端,建立database link,业务数据库服务器SID为TEST   create database link TEST_DBLINK.US.ORACLE.COM   connect to AMICOS identified by AMICOS   using ’test’;   第二步:在业务数据库上对应的表建立快照日志   Create snapshot log on A_Table;   第三步:建立Snapshot 快照名称为:Test_SnapShot   Create snapshot Test_SnapShot   REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24   as select * from A_Table@TEST_DBLINK   说明:REFRESH是刷新方法   刷新方式有:COMPLETE和FAST两种,而START WITH是说明开始执行的时间。   Next是下次执行的时间   而AS以后是构成快照的查询方法。   相关的方法:   更改快照   ALTER SNAPSHOT Test_SnapShot   REFRESH COMPLETE START WITH [...]

分类: Java, 数据库 | 评论

mysql 大对象存取: 类型一般应该用mediumblod, blob只能存2的16次方个byte, mediumblod是24次方, 一般来说够用了.longblob是32次方有些大. MYSQL默认配置只能存1M大小的文件,要修改配置,WIN版本的在mysql.ini文件中 修改max_allowed_packet,net_buffer_length等几个参数,或直接SET GLOBAL varName=value. linux版本可以在启动参数后加-max_allowed_packet=xxM等几个参数. MYSQL存大对象最好直接就setBinaryStream,又快又方便. 而不要先插入空再造型成BLOB然后再setBlob 例子: import java.sql.*; import java.io.*; public class DBTest { static String driver = “org.gjt.mm.mysql.Driver”; static String url = “jdbc:mysql://localhost:3306/test”; static String user = “root”; static String passwd = “passwd”; public static void main(String[] args) throws Exception { Connection conn = null; try [...]

分类: 数据库 | 评论

有些不准确的,请指正 1.查看数据库版本 MSSQL: select @@version; MySQL: select version(); ORACLE: select * from v$version; 2.查看当前用户名 MSSQL: select user_name(); MySQL: select user(); ORACLE: select user from user_tables;  select username from v$session; 不知道是不是这样 3.查看当前数据库名 MSSQL: select db_name(); MySQL: select database(); Oracle: select name from v$database; show parameter db_name; 好象是多行,这个不对 oracle还有实例名 select instance_name from v$instance; show parameter instance 4.查看所有数据库名 MSSQL: [...]

windows中手工删除ORACLE数据库 1.以Administrators group身份登陆windows系统。 2.通过oracle installer 卸载所有orcle产品及组件。 3.停掉Oracle Service服务。 4.删除%ORACLE_base%文件和SYSTEM_DRIVE:\program files下的oracle文件。 .删除SYSTEM_DRIVE:\Documents and Settings\All Users\「开始」菜单\程序中的oracle项。 6.打开注册表 到HKEY_CLASSES_ROOT下,删除以Oracle,ORA,ORCL开头的键; 到HKEY_LOCAL_MACHINE\SOFTWARE下,删除ORACLE键和Apache Group键; 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,删除以oracle开头的键; 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \Eventlog\Application下,删除以oracle开头的键; 到HKEY_CURRENT_USER下,删除ORACLE键; 到HKEY_CURRENT_USER\SOFTWARE\ORACLE下,删除以Oracle 或 ORCL开头的键(如果有的话); 关闭注册表,重启计算机。 7.打开系统系统环境变量(我的电脑->右键->系统属性->高级->环境变量),在PATH中删除所有以%ORACLE_HOME%开始的项。、 8.重启计算机。

分类: 数据库 | 评论

oracle自动备份 @echo off set curdate=%date:~0,4%%date:~5,2%%date:~8,2% set backuppath=E:\oracle\databak\%curdate% md %backuppath% exp fnfloa/fnfloauser@orcl file=%backuppath%\fnfloa%curdate%.dmp log=%backuppath%\fnfloa%curdate%.log %date:~0,4%:取得年份 %date:~5,2%:取得月份 %date:~8,2%:取得日 md %backuppath% 建立目录 设置好bat文件后,就可以在计划任务中使用了,选择好备份时间,那么系统将自动备份了。

这几天做项目,因为关系到从MYSQL向Oracle的迁移,所以,有了一些经验。 因为项目一开始就是用MYSQL开发的,所以没想到会出现的问题都出现了。 一、MYSQL可以导入导出脚本,本来应该准备好数据库的备份的初始化数据库和初始化数据的两个初始化脚本,经由MYSQL导出为一个full.sql的总的初始化脚本,用过mysql的都知道,导出的数据库脚本中,包含了建库、建表、以及插入数据的语句。需要分割成两个:建库、建表的初始化脚本和插入数据的初始化脚本。于是我写了一个类,用于分割SQL脚本,在类中,我查找到create table开头的后面紧跟着的字符串,就是表的名字,取出insert开头的语句,改行就是插入数据的,于是,通过文件流读取文件的每一行,如果是插入的取出来放入一个方法convertInsertSQL处理后写入一个脚本文件insert_data.sql中,剩下的写入一个脚本文件create_table.sql中, 方法convertInsertSQL对于插入语句做处理,因为脚本中的插入语句是批量插入的,insert into 表名(列名) values(对应值),( 对应值),( 对应值),所以需要拆分成insert into 表名(列名) values (对应值)这样的语句,所以我通过将前面values(前的值截取后,对剩下的所有对应数据,进行通过),(用正则分割成String数组,对数组进行循环,每次追加组成插入语句,最后将插入语句全部返回后写入文件流。 package com.test.file; import  java.io.BufferedReader; import  java.io.BufferedWriter; import  java.io.File; import  java.io.FileInputStream; import  java.io.FileOutputStream; import  java.io.IOException; import  java.io.InputStreamReader; import  java.io.OutputStreamWriter; import  java.util.HashMap; import  java.util.Map; /** * 将mysql数据库导出的脚本 * 分割成为建库和建表的两个脚本 * @author gaofei * */ public class MyFileReader { /** * @param args */ [...]