书山有路勤为径,学海无涯苦作舟。

0%

由于 Ubuntu 是基于 Debian 的 linux 操作系统,在默认的情况下,是没有超级用户(superuser, root)的,但有些系统操作必须有超级用户的权限才能进行,如手动释放内存等。

在其他 linux 操作系统 (如 fedora) 下,可以使用
su
切换到超级用户。
当输入 su 命令后, 系统会要求输入 root 的密码。
可是,在 Ubuntu 下我们根本不知道 root 的密码是什么。

这样,在 Ubuntu 下切换到超级用户需要使用其他方法,主要有两种:

1) sudo -i

sudo
是 su 的加强版,意思是 do something as the supervisor。
不需要密码就可以得到 root 的权限。
但是它也有很多限制,比如,在默认的情况下,只能在 5 分钟之内使用 root 权限。

2) 如果想一直使用 root 权限,还是要使用 su, 还是要得到 root 密码的。

sudo passwd root
可以设置 root 的密码。
之后就可以自由使用 su 命令啦。

1.
导出时候出现:IMP-00010: 不是有效的导出文件, 头部验证失败。
经查明是导出和导入的oracle版本不同,用文件编辑器修改dmp文件的头部分的版本信息,改为导入oracle的版本。
对应版本:
11g R2:V11.02.00
  11g R1:V11.01.00
  10g:V10.02.01

2.
警告: 这些对象由 xxx导出, 而不是当前用户
在导出语句中加上fromuser=xxx touser=xxxx

附oracle导出格式:
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以”00”打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\” where filed1 like ‘00%’\”

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
                不过在上面命令后面 加上 compress=y  就可以了

数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)

基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。

注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。

数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!

同名用户之间的数据导入:
imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp

log=c:\orabackup\hkbimp.log;

今天在从某个server上取文件,但是本地无法直接连接,只能通过另外一台server连接,再ssh到它的上面。
1.在有外网ip的server上:sftp username@ip
get filename
2.在本地用secureCRT登录有外网ip的server,alt+P打开sftp标签页,get filename

附sftp相关command
sftp> help
可用命令:
cd 路径 更改远程目录到“路径”
lcd 路径 更改本地目录到“路径”
chgrp group path 将文件“path”的组更改为“group”
chmod mode path 将文件“path”的权限更改为“mode”
chown owner path 将文件“path”的属主更改为“owner”
exit 退出 sftp
help 显示这个帮助文本
get 远程路径 下载文件
ln existingpath linkpath 符号链接远程文件
ls [选项] [路径] 显示远程目录列表
lls [选项] [路径] 显示本地目录列表
mkdir 路径 创建远程目录
lmkdir 路径 创建本地目录
mv oldpath newpath 移动远程文件
open [用户@]主机[:端口] 连接到远程主机
put 本地路径 上传文件
pwd 显示远程工作目录
lpwd 打印本地工作目录
quit 退出 sftp
rmdir 路径 移除远程目录
lrmdir 路径 移除本地目录
rm 路径 删除远程文件
lrm 路径 删除本地文件
symlink existingpath linkpath 符号链接远程文件
version 显示协议版本

oracle分页查询时,会遇到数据重复的问题,下面就教您一个解决oracle分页查询数据重复问题的方法,希望对您能够有所帮助。

在oracle分页查询中,我们采用类似以下所示的公认的比较高效的数据库分页查询语句(Effective Oracle by Design中有描述、众多oracle使用者也做过测试)。

写道

SELECT FROM
(
SELECT A.
, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= n)
WHERE RN > m
这里的ROWNUM是一个伪列,它是oracle为查询结果所编的一个号,第一行的 ROWNUM为1,第二行为2,以此类推。

因为oracle是按块进行读取数据的,如果数据按顺序存储,则可能使读取出来的数据是按顺序的,给用户误解为默认排序。事实上,oracle没有进行任何排序操作,如果sql没有要求排序,oracle会顺序的从数据块中读取符合条件的数据返回到客户端。所以在没有使用排序sql的时候,分页返回的数据可能是按顺序的,也可能是杂乱无章的,这都取决与数据的存储位置。在oracle分页查询过程中,如果数据的物理位置发生了改变,就可能会引起分页数据重复的现象。

所以,要正确使用oracle分页查询,sql语句中必须有排序条件。

但是,在有排序条件的时候,仍然会出现数据重复的现象,这是为什么呢?

通过了解oracle的排序机理就会明白,出现这种情况的原因是因为排序列值的不唯一性。 Oracle这里使用的排序算法不具有稳定性,也就是说,对于键值相等的数据,这种算法完成排序后,不保证这些键值相等的数据保持排序前的顺序。

解决的方法是在后边增加一个唯一性列,比如主键。

所以解决方法如下(两个条件必须同时满足):
**
1.sql语句中需要有排序条件。

2.排序条件如果没有唯一性,那么必须在后边跟上一个唯一性的条件,比如主键。**

1.2012年的十一从深圳去湖南株洲爸妈那。期间全家去张家界旅游。

2.在株洲开往张家界的列车上,我们4个打跑的快,4个人一副牌,每个人的牌很少,所以总是少这少那。一次我缺个7,就在取牌的时候大呼“7!7!”,老妈听到,你妻没来。(- -#好吧,老妈,这都被你知道了!)

3.一路上都是山,火车总是穿山的隧道,窗外一黑一黑的。老妈不满意了,诗曰:一山一水一黑洞。 众人大惊,无人能应下一句。

4.一起吃饭的时候,因为最近你幸福吗比较火,遂问老妈:你幸福吗?老妈整理了一下普通话语气(在家我们都是说方言)颤抖的说道:我很幸福。我有一个好老公,一个好儿子一个好女儿。我很幸福。 大家大笑,又问: 既然你这么幸福了怎么还总是生气发脾气呢? 答曰:这个是控制不住的,有时候不想生气但还是控制不住。问:那你生气的时候考虑了你老公的感受吗? 只听老爸在那悠悠可怜的唱道:我多么多么多么(此处省略N个多么)想…

在tomat的任意app中创建一个jsp文件。

代码如下:
`
<%@page contenttype=”text/html” pageencoding=”UTF-8”>

<%

double total = (Runtime.getRuntime().totalMemory()) / (1024.0 * 1024);

double max = (Runtime.getRuntime().maxMemory()) / (1024.0 * 1024);

double free = (Runtime.getRuntime().freeMemory()) / (1024.0 * 1024);

out.println(“Java 虚拟机试图使用的最大内存量(当前JVM的最大可用内存)maxMemory(): “ + max + “MB
“);

out.println(“Java 虚拟机中的内存总量(当前JVM占用的内存总数)totalMemory(): “ + total + “MB
“);

out.println(“Java 虚拟机中的空闲内存量(当前JVM空闲内存)freeMemory(): “ + free + “MB
“);

out.println(“因为JVM只有在需要内存时才占用物理内存使用,所以freeMemory()的值一般情况下都很小,
“ +

“而JVM实际可用内存并不等于freeMemory(),而应该等于 maxMemory()-totalMemory()+freeMemory()。
“);

out.println(“JVM实际可用内存: “ + (max - total + free) + “MB
“);

%>

`

保存运行即可。

常见的内存溢出有以下两种:

java.lang.OutOfMemoryError: PermGen space

java.lang.OutOfMemoryError: Java heap space

 


这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。
一、java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小
超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

 

二、java.lang.OutOfMemoryError: Java heap space
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,
其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可
进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 
解决方法:手动设置Heap size


 

Linux下修改JVM内存大小:

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false前 。注意引号要带上,红色的为新添加的.

OS specific support.  $var must be set to either true or false.

JAVA_OPTS=”-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m”
cygwin=false

 

windows下修改JVM内存大小:

情况一:解压版本的Tomcat, 要通过startup.bat启动tomcat才能加载配置

要添加在tomcat 的bin 下catalina.bat 里

rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%后面添加,红色的为新添加的.

set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true

 

情况二:安装版的Tomcat下没有catalina.bat

windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.

修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions
原值为
-Dcatalina.home=”C:\ApacheGroup\Tomcat 5.0”
-Djava.endorsed.dirs=”C:\ApacheGroup\Tomcat 5.0\common\endorsed”
-Xrs

加入 -Xms300m -Xmx350m  
重起tomcat服务,设置生效

 


各参数的比例:

Xmx 与PermSize的和不可超过JVM可获得的总内存

PermSize不可大于Xmx

 

请参见其它的参数详解的文章,各参数值大小的本文不讨论.

每周一下午4点是固定的打篮球时间,

我本不是热爱篮球的人,但是因为这2个小时不必坐在办公室埋头苦干,能多呼吸一点外面虽然不新鲜的空气,所以每周一都是很积极着跟着同事去打篮球。
每次打球,无论是抢篮板数还是命中数,都是我最低,不是因为我最不会打,而是我最懒,相比别人不停的奔跑着抢篮板,我更多的是站在那里或者做着小弧度的移动,盯着球,等待着抢篮板的机会。除了偶然的守株待兔捡来个球,我始终是一个围观者。虽然我也告诉自己要动起来,不要怕累,不要怕出汗,不要怕被球砸伤被人碰伤,但身体始终无法执行大脑发的指令。

这让我想起了打魔兽,我最热爱的游戏,很久以前我是一个小小菜鸟,当然现在也仍然是一个菜鸟。打魔兽的时候,我也是喜欢盯,盯着建筑里面出兵,等待着兵出来我操作;盯着打怪,等待怪被打死然后收宝;盯着部队交战,等待敌人落荒而逃或者自己丢盔弃甲…后来知道了APM这个概念后,我发现我需要动起来,我不能让我的手停下来,一停下来我就会习惯了停,习惯了等待。之后,我的apm由开始的50,在我每打完一局就打开w3gmaster看自己的apm,100,150,200…此时再玩起魔兽,我已然有了一种满满的感觉,再快的节奏,再多的队伍,再复杂的操作也能轻松完成。

我在想,打球是不是也这样,如果我可以动起来,不停的奔跑,不停的追逐,哪怕累一点,哪怕很多时候抢不到球,我仍然可以比之前更出色。
那么,生活也是同理了,如果我不这么懒,我动起来,我的生活也会出色!
如果是这样,那么从这个blog开始,start here!

以前因为开机要启动什么mysql服务,oracle服务,所以就创建了批处理文件。

现在因为每天早上来上班,流程基本一样,打开工作软件、聊天工具、邮箱客户端等等。

每天都要逐个点,很麻烦。

今天忽然心血来潮找了下批处理文件运行exe程序,还真的有,也很简单。

来看吧:

1.右键新建一个txt文件,命名并改后缀为.bat

2.用记事本等文本编辑工具打开,输入程序执行文件的详细目录加文件名。

如我要打开qq:

start D:\”Program Files”\System\Tencent\QQ\Bin\qq.exe

3.保存,直接双击这个bat文件运行即可,发现qq被打开了。OK

remark:

1.也可以运行快捷方式,如:

start d:/iUse/QQ.lnk

快捷方式的后缀是lnk。

2.目录中有空格要注意,直接写是不行的,不能识别。如:

start d:/Program Files/System\Tencent\QQ\Bin\qq.exe   error

需要加引号:

start d:/“Program Files”/System\Tencent\QQ\Bin\qq.exe   right

注意引号是英文半角的。