社区
Informix
帖子详情
informix 执行存储过程,服务就停了
czl1016
2010-02-09 02:26:08
大家好,我现在碰到如下一个问题:
在informix下,部分存储过程执行时,数据库服务器就停了,(也就是有的存储过程可以正常调用,有的调用时,数据库服务就停了),必须重新oninit,
出现这中问题的原因是:之前数据库放在一台虚拟机上的,以前一切都是正常的,现在移到一台pc server上,就出现以上问题
各位有遇到类似问题或有好的解决方法,请回个贴,
谢谢?
...全文
73
3
打赏
收藏
informix 执行存储过程,服务就停了
大家好,我现在碰到如下一个问题: 在informix下,部分存储过程执行时,数据库服务器就停了,(也就是有的存储过程可以正常调用,有的调用时,数据库服务就停了),必须重新oninit, 出现这中问题的原因是:之前数据库放在一台虚拟机上的,以前一切都是正常的,现在移到一台pc server上,就出现以上问题 各位有遇到类似问题或有好的解决方法,请回个贴, 谢谢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
czl1016
2010-03-25
打赏
举报
回复
谢谢各位,已经解决了,是stack配置太低导致.
head_java_web
2010-03-23
打赏
举报
回复
这个真没遇到过
帝企鹅已被占用
2010-03-23
打赏
举报
回复
是不是lock太多了。
教材-数据库-全(数据库管理员岗位资格考试辅导教材)
数据库基础知识;
informix
数据库维护知识;Sybase数据库维护知识;tuxedo中间件维护知识
java 面试题 总结
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。 5、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 6、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被
服务
器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当
服务
器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于
服务
器进程中,它通过多线程方式运行其service方法,一个实例可以
服务
于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,
服务
完成后就销毁,所以效率上低于servlet。 7、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些
服务
器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。 对于客户机,SessionBean是一种非持久性对象,它实现某些在
服务
器上运行的业务逻辑。 对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中
执行
,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应的 Stateful Session Bean 的实体。Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来
执行
这个 method。换言之,很可能数个使用者在
执行
某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在
执行
。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、Collection 和 Collections的区别。 Collection是集合类的上级接口,继承与他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap和Hashtable的区别。 HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 12、final, finally, finalize的区别。 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是
执行
。 finalize是Object类的一个方法,在垃圾收集器
执行
的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep() 和 wait() 有什么区别? sleep是线程类(Thread)的方法,导致此线程暂
停
执行
指定时间,给
执行
机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 14、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 16、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来
执行
的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 17、abstract class和interface有什么区别? 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 18、heap和stack有什么区别。 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是
服务
器请求资源,
服务
器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道
服务
器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect就是
服务
端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。 22、JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 23、什么时候用assert。 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。 24、GC是什么? 为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。 25、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型) short s1 = 1; s1 += 1;(可以正确编译) 26、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? Math.round(11.5)==12 Math.round(-11.5)==-11 round方法返回与参数最接近的长整数,参数加1/2后求其floor. 27、String s = new String("xyz");创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); Dec dec=tt.new Dec(); for(int i=0;i<2;i++){ Thread t=new Thread(inc); t.start(); t=new Thread(dec); t.start(); } } private synchronized void inc(){ j++; System.out.println(Thread.currentThread().getName()+"-inc:"+j); } private synchronized void dec(){ j--; System.out.println(Thread.currentThread().getName()+"-dec:"+j); } class Inc implements Runnable{ public void run(){ for(int i=0;i<100;i++){ inc(); } } } class Dec implements Runnable{ public void run(){ for(int i=0;i<100;i++){ dec(); } } } } 29、Java有没有goto? java中的保留字,现在没有在java中使用。 30、启动一个线程是用run()还是start()? 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并
执行
。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来
停
止一个线程。 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? SessionBean:Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在
服务
器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例。 EntityBean:Entity Beans能存活相对较长的时间,并且状态是持续的。只要数据库中的数据存在,Entity beans就一直存活。而不是按照应用程序或者
服务
进程来说的。即使EJB容器崩溃了,Entity beans也是存活的。Entity Beans生命周期能够被容器或者 Beans自己管理。 EJB通过以下技术管理实务:对象管理组织(OMG)的对象实务
服务
(OTS),Sun Microsystems的Transaction Service(JTS)、Java Transaction API(JTA),开发组(X/Open)的XA接口。 32、应用
服务
器有那些? BEA WebLogic Server,IBM WebSphere Application Server,Oracle9i Application Server,jBoss,Tomcat 33、给我一个你最常见到的runtime exception。 ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException 34、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 35、List, Set, Map是否继承自Collection接口? List,Set是,Map不是 36、说出数据连接池的工作机制是什么? J2EE
服务
器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 37、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 都不能 38、数组有没有length()这个方法? String有没有length()这个方法? 数组没有length()这个方法,有length的属性。String有有length()这个方法。 39、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。 equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。 40、构造器Constructor是否可被override? 构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 41、是否可以继承String类? String类是final类故不可以继承。 42、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 43、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被
执行
,什么时候被
执行
,在return前还是后? 会
执行
,在return前
执行
。 44、编程题: 用最有效率的方法算出2乘以8等於几? 2 << 3 45、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 不对,有相同的hash code。 46、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 47、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 不能,一个对象的一个synchronized方法只能由一个线程访问。 48、编程题: 写一个Singleton出来。 Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 一般Singleton模式通常有几种种形式: 第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。 public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本class的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } 第二种形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 其他形式: 定义一个类,它的构造函数为private的,所有方法为static的。 一般认为第一种形式要更加安全些 49、Java的接口和C++的虚类的相同和不同处。 由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,该类要实现接口里面所有的方法和属性,并且接口里面的属性在默认状态下面都是public static,所有方法默认情况下是public.一个类可以实现多个接口。 50、Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 51、垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 52、请说出你所知道的线程同步的方法。 wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 53、你所知道的集合类都有哪些?主要方法? 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。 54、描述一下JVM加载class文件的原理机制? JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。 55、char型变量中能不能存贮一个中文汉字?为什么? 能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的 56、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify 57、JSP的内置对象及方法。 request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 page表示从该页面产生的一个servlet实例 58、线程的基本概念、线程的基本状态以及状态之间的关系 线程指在程序
执行
过程中,能够
执行
程序代码的一个
执行
单位,每个程序至少都有一个线程,也就是程序本身。 Java中的线程有四种状态分别是:运行、就绪、挂起、结束。 59、JSP的常用指令 isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式) 60、什么情况下调用doGet()和doPost()? Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。 61、servlet的生命周期 web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束
服务
,web容器调用servlet的destroy()方法。 62、如何现实servlet的单线程模式 63、页面间对象传递的方法 request,session,application,cookie等 64、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 65、四种会话跟踪技术 会话作用域ServletsJSP 页面描述 page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面 request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系) session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求 application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域 66、Request对象的主要方法: setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值 getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例 getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组 getCharacterEncoding():返回请求中的字符编码方式 getContentLength():返回请求的Body的长度 getHeader(String name):获得HTTP协议定义的文件头信息 getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例 getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例 getInputStream():返回请求的输入流,用于获得请求中的数据 getMethod():获得客户端向
服务
器端传送数据的方法 getParameter(String name):获得客户端传送给
服务
器端的有name指定的参数值 getParameterNames():获得客户端传送给
服务
器端的所有参数的名字,结果是一个枚举的实例 getParameterValues(String name):获得有name指定的参数的所有值 getProtocol():获取客户端向
服务
器端传送数据所依据的协议名称 getQueryString():获得查询字符串 getRequestURI():获取发出请求字符串的客户端地址 getRemoteAddr():获取客户端的IP地址 getRemoteHost():获取客户端的名字 getSession([Boolean create]):返回和请求相关Session getServerName():获取
服务
器的名字 getServletPath():获取客户端所请求的脚本文件的路径 getServerPort():获取
服务
器的端口号 removeAttribute(String name):删除请求中的一个属性 67、J2EE是技术还是平台还是框架? J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; } 69、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 区别主要答两点:a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型 b.逻辑操作不会产生短路 70、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问 SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问 STAX:Streaming API for XML (StAX) 71、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。 72、EJB的角色和三个对象 一个完整的基于EJB的分布式计算结构由六个角色组成,这六个角色可以由不同的开发商提供,每个角色所作的工作必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider) 、应用组合者(Application Assembler)、部署者(Deployer)、EJB
服务
器提供者(EJB Server Provider)、EJB 容器提供者(EJB Container Provider)、系统管理员(System Administrator) 三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类 73、EJB容器提供的
服务
主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等
服务
。 74、EJB规范规定EJB中禁止的操作有哪些? 1.不能操作线程和线程API(线程API指非线程对象的方法如notify,wait等),2.不能操作awt,3.不能实现
服务
器功能,4.不能对静态属生存取,5.不能使用IO操作直接存取文件系统,6.不能加载本地库.,7.不能将this作为变量和返回,8.不能循环调用。 75、remote接口和home接口主要作用 remote接口定义了业务方法,用于EJB客户端调用业务方法。 home接口是EJB工厂用于创建和移除查找EJB实例 76、bean 实例的生命周期 对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。 77、EJB的激活机制 以Stateful Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。 78、EJB的几种类型 会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean 会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种 实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种 79、客服端调用EJB对象的几个基本步骤 设置JNDI
服务
工厂以及JNDI
服务
地址系统属性,查找Home接口,从Home接口调用Create方法创建Remote接口,通过Remote接口调用其业务方法。 80、如何给weblogic指定大小的内存? 在启动Weblogic的脚本中(位于所在Domian对应
服务
器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M 81、如何设定的weblogic的热启动模式(开发模式)与产品发布模式? 可以在管理控制台中修改对应
服务
器的启动模式为开发或产品模式之一。或者修改
服务
的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。 82、如何启动时不需输入用户名与密码? 修改
服务
启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码. 83、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 保存在此Domain的config.xml文件中,它是
服务
器的核心配置文件。 84、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办? Domain目录
服务
器目录applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置
服务
器的缺省应用将可以实现在浏览器上无需输入应用名。 85、在weblogic中发布ejb需涉及到哪些配置文件 不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml 86、如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置 缺省安装中使用DemoIdentity.jks和DemoTrust.jks KeyStore实现SSL,需要配置
服务
器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。 87、如何查看在weblogic中已经发布的EJB? 可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB 88、CORBA是什么?用途是什么? CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:用不同的程序设计语言书写在不同的进程中运行,为不同的操作系统开发。 89、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法 Session Facade Pattern:使用SessionBean访问EntityBean Message Facade Pattern:实现异步调用 EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问 Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性 Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性 Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性 EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性。 90、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别 persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS
服务
器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。 91、Servlet
执行
时一般实现哪几个方法? public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo() public void service(ServletRequest request,ServletResponse response) public void destroy() 92、j2ee常用的设计模式?说明工厂模式。 Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调
停
者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 93、EJB需直接实现它的业务接口或Home接口吗,请简述理由。 远程接口和Home接口不需要直接实现,他们的实现代码是由
服务
器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。 94、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 / /使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 95、请对以下在J2EE中常用的名词进行解释(或简单描述) web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB
服务
器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB
服务
器就叫做J2EE中的WEB容器。 EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的
服务
。例如邮件
服务
、事务管理。 JNDI:(Java Naming & Directory Interface)JAVA命名目录
服务
。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 JMS:(Java Message Service)JAVA消息
服务
。主要实现各个应用程序之间的通讯。包括点对点和广播。 JTA:(Java Transaction API)JAVA事务
服务
。提供各种分布式事务
服务
。应用程序只需调用其提供的接口即可。 JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用
服务
。例如,远程有一台计算机上运行一个程序,它提供股票分析
服务
,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。 96、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来
执行
一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理。 用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。 throw语句用来明确地抛出一个"异常"。 throws用来标明一个成员函数可能抛出的各种"异常"。 Finally为确保一段代码不管发生什么"异常"都被
执行
一段代码。 可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。 97、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以。必须只有一个类名与文件名相同。 98、MVC的各个部分都有那些技术来实现?如何实现? MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。 99、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会
停
下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。 100、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? 字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。 101、java中会存在内存泄漏吗,请简单描述。 会。如:int i,i2; return (i-i2); //when i为足够大的正数,i2为足够大的负数。结果会造成溢位,导致错误。 102、java中实现多态的机制是什么? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。 103、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动
执行
System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会
执行
。 104、静态变量和实例变量的区别? static i = 10; //常量 class A a; a.i =10;//可变 105、什么是java序列化,如何实现java序列化? 序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 106、是否可以从一个static方法内部发出对非static方法的调用? 不可以,如果其中包含对象的method();不能保证对象初始化. 107、写clone()方法时,通常都有一行代码,是什么? Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。 108、在JAVA中,如何跳出当前的多重嵌套循环? 用break; return 方法。 109、List、Map、Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。 110、J2EE是什么? J2EE是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。 111、UML方面 标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。 112、说出一些常用的类,包,接口,请各举5个 常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer 常用的包:java.lang java.awt java.io java.util java.sql 常用的接口:Remote List Map Document NodeList 113、开发中都用到了那些设计模式?用在什么场合? 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。 114、jsp有哪些动作?作用分别是什么? JSP共有以下6种基本动作 jsp:include:在页面被请求的时候引入一个文件。 jsp:useBean:寻找或者实例化一个JavaBean。 jsp:setProperty:设置JavaBean的属性。 jsp:getProperty:输出某个JavaBean的属性。 jsp:forward:把请求转到一个新的页面。 jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。 115、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 可以继承其他类或完成其他接口,在swing编程中常用此方式。 116、应用
服务
器与WEB SERVER的区别? 应用
服务
器:Weblogic、Tomcat、Jboss WEB SERVER:IIS、 Apache 117、BS与CS的联系与区别。 C/S是Client/Server的缩写。
服务
器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、
Informix
或 SQL Server。客户端需要安装专用的客户端软件。 B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,
服务
器安装Oracle、Sybase、
Informix
或 SQL Server等数据库。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在
服务
器端实现。浏览器通过Web Server 同数据库进行数据交互。 C/S 与 B/S 区别: 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门
服务
器提供连接和数据交换
服务
. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.用户接口不同 C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8.信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心。 118、LINUX下线程,GDI类的解释。 LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。 GDI类为图像设备编程接口类库。 119、STRUTS的应用(如STRUTS架构) Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能: 一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。 二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。 三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 120、Jdo是什么? JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。 121、内部类可以引用他包含类的成员吗?有没有什么限制? 一个内部类对象可以访问创建它的外部类对象的内容 122、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。 Web ServiceWeb Service是基于网络的、分布式的模块化组件,它
执行
特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 JAXP(Java API for XML Parsing) 定义了在Java中使用DOM, SAX, XSLT的通用的接口。这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。 JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。 WSDL是一种 XML 格式,用于将网络
服务
描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(
服务
)。 SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。 JAVA代码查错 1. abstract class Name { private String name; public abstract boolean isStupidName(String name) {} } 大侠们,这有何错误? 答案: 错。abstract method必须以分号结尾,且不带花括号。 2. public class Something { void doSomething () { private String s = ""; int l = s.length(); } } 有错吗? 答案: 错。局部变量前不能放置任何访问修饰符 (private,public,和protected)。final可以用来修饰局部变量 (final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。 3. abstract class Something { private abstract String doSomething (); } 这好像没什么错吧? 答案: 错。abstract的methods不能以private修饰。abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstract method封锁起来呢? (同理,abstract method前不能加final)。 4. public class Something { public int addOne(final int x) { return ++x; } } 这个比较明显。 答案: 错。int x被修饰成final,意味着x不能在addOne method中被修改。 5. public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++; } } class Other { public int i; } 和上面的很相似,都是关于final的问题,这有错吗? 答案: 正确。在addOne method中,参数o被修饰成final。如果在addOne method里我们修改了o的reference (比如: o = new Other();),那么如同上例这题也是错的。但这里修改的是o的member vairable (成员变量),而o的reference并没有改变。 6. class Something { int i; public void doSomething() { System.out.println("i = " + i); } } 有什么错呢? 看不出来啊。 答案: 正确。输出的是"i = 0"。int i属於instant variable (实例变量,或叫成员变量)。instant variable有default value。int的default value是0。 7. class Something { final int i; public void doSomething() { System.out.println("i = " + i); } } 和上面一题只有一个地方不同,就是多了一个final。这难道就错了吗? 答案: 错。final int i是个final的instant variable (实例变量,或叫成员变量)。final的instant variable没有default value,必须在constructor (构造器)结束之前被赋予一个明确的值。可以修改为"final int i = 0;"。 8. public class Something { public static void main(String[] args) { Something s = new Something(); System.out.println("s.doSomething() returns " + doSomething()); } public String doSomething() { return "Do something ..."; } } 看上去很完美。 答案: 错。看上去在main里call doSomething没有什么问题,毕竟两个methods都在同一个class里。但仔细看,main是static的。static method不能直接call non-static methods。可改成"System.out.println("s.doSomething() returns " + s.doSomething());"。同理,static method不能访问non-static instant variable。 9. 此处,Something类的文件名叫OtherThing.java class Something { private static void main(String[] something_to_do) { System.out.println("Do something ..."); } } 这个好像很明显。 答案: 正确。从来没有人说过Java的Class名字必须和其文件名相同。但public class的名字必须和文件名相同。 10. interface A{ int x = 0; } class B{ int x =1; } class C extends B implements A { public void pX(){ System.out.println(x); } public static void main(String[] args) { new C().pX(); } } 答案:错误。在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时import java.util和java.sql两个包时直接声明Date一样)。对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为 public static final.所以可以通过A.x来明确。 11. interface Playable { void play(); } interface Bounceable { void play(); } interface Rollable extends Playable, Bounceable { Ball ball = new Ball("PingPang"); } class Ball implements Rollable { private String name; public String getName() { return name; } public Ball(String name) { this.name = name; } public void play() { ball = new Ball("Football"); System.out.println(ball.getName()); } } 这个错误不容
超级有影响力霸气的Java面试题大全文档
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行时异常与一般异常有何异同? 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。 Servlet被
服务
器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当
服务
器决定将实例销毁的时候调用其destroy方法。 与cgi的区别在于servlet处于
服务
器进程中,它通过多线程方式运行其service方法,一个实例可以
服务
于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,
服务
完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses
(重要)AIX command 使用总结.txt
AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //双机软件版本号 # lslpp -l|grep cluster //显示graphic display # lsdisp //查看CPU的个数 # bindprocessor -q //查看CPU的主频,操作系统版本最低是AIX 5.1,包含在软件包bos.pmapi.pmsvcs pmcycles This machine runs at 1500MHz //显示cpu的主频是1.5G #如何查找根文件系统(/)中的大文件 find -xdev -size +xxxx -ls #查找根卷组下大于2M的文件, 并根据文件大小排序, 大文件在前. find / -xdev -size +1024 -ls |sort -r +6 8277 624 -r-xr-xr-x 1 root system 635390 Jul 31 2003 /sbin/helpers/jfs2/fsck 28 596 -rw-r--r-- 1 root system 609388 Apr 12 17:25 /smit.log 30 1660 -rw-r--r-- 1 root system 3338083 Apr 5 14:08 /core #查看备份磁带中备份文件的大小 tcopy /dev/rmt0 tcopy: Tape File: 1; Records: 1 to 251; Size: 2097152. ---磁带机文件头大小 tcopy: Tape File: 1; Record: 252; Size 344064. ---磁带机文件头大小 tcopy: File: 1; End of File after: 252 Records, 526729216 Bytes. ---文件大小 tcopy: The end of the tape is reached. tcopy: The total tape length is 526729216 bytes. #如何取定文件与文件集的对应关系,有时想使用某个安装文件, 但没有安装包含该文件的文件集,找到文件集来安装所需文件 首先确认系统中已经安装了“bos.content_list”文件集(fileset), 如果没有安装, 请使用smitty installp进行安装. 运行which_fileset命令, 根据文件查找对应的文件集. 例如: #which_fileset iostat /usr/bin/iostat bos.acct 5.1.0.0 运行lslpp -f 命令, 查看指定文件集中包含的文件: #lslpp -f bos.acct //出于AIX系统安全考虑, 需要使某些用户只能在控制台登录使用,而不允许远程登陆使用. 更改/etc/security/user 文件中需要限制的用户的rlogin属性(rlogin = false) 当再次尝试远程登录时, 系统报错:Remote logins are not allowed for this account, 表示修改成功 //如何自动logout用户 有的用户登录后就长时间空闲,有可能导致安全上的问题,通过打开 /etc/profile 中 TMOUT 注释,将在设置的时间到达后自动logout用户 例如: export TMOUT=120 那么, 用户两分钟没有击键,将自动logout //AIX系统中如何限制用户所使用文件的大小(AIX小型机有大文件限制) >#smit chuser 在菜单上选择要控制的用户, 并修改下面两项: Soft FILE size [aaa] Hard FILE size [aaa] 则修改后用户的文件大小最大为aaa×512 bytes. >如何验证? 可以用该用户登录系统, 使用命令“ulimit -f”和“ulimit -Hf”可分别显示其fsize,fsize_hard的大小. //如何查看小型机适配器卡及硬盘的微码级别microcode level lscfg -vl device_name //查询SSA卡的微码级别 # lscfg -vl ssa0 //ssa0是此SSA卡的设备名,输出结果中的ROS level及ID即是微码级别(microcode level) //用下面命令可以得到一个硬盘的微码级别: # lscfg -vl pdisk* //IBM小型机AIX5.1操作系统密码文件丢失或者误删的恢复方法 进入维护模式: 1、将安装盘第一张放入光驱; 重启小型机选择主控台,按屏幕上提示的数字;选择语言,一般选english;选择3进入维护模式(start maintenence mode for system recovery); 选择1进入access a root volume group;选择0进入下一个菜单; --选择1--选择第一个磁盘; 选择1 access this volume group and start a shell 当出现提示符(如#时)开始操作 # cd /etc # cp passwd.old passwd (就是你刚刚保存的那个文件) # chown root:security passwd # reboot //查看内存信息两部曲: # lsdev -C | grep mem mem0 Available 00-00 Memory # lsattr -El mem0 size 1024 Total amount of physical memory in Mbytes False goodsize 1024 Amount of usable physical memory in Mbytes False //命令中的Machine/Cabinet Serial NO项即是 # lscfg -pvl sysplanar0 | grep "Machine/Cabinet" ##bootinfo命令start //若此命令返回值是1, 表示hdisk11可以由AIX引导, 其他返回值表示hdisk11不是rootvg制作镜像的候选 #bootinfo -B hdisk11 //显示CPU位数是64还是32 bootinfo -K //查看那个硬盘是引导区 bootinfo -b ##bootinfo命令end ##如何查看3种小型机的核心参数 /etc/security/limits //IBM核心参数配置文件 /etc/system //SUN核心参数配置文件 kmtune //HP-UX下用kmtune>kernel.txt将内核参数信息导出到kernel.txt文件中配置文件为: /usr/conf/master.d/core-hpux ##操作系统 //操作系统版本 uname -a //操作系统补丁 instfix -i|grep ML //获取硬件信息 prtconf ****** 创建文件系统四部曲 ************************************************ mklv -y lv
informix
-c 2 rootvg 64 //在卷组rootvg上创建逻辑卷lv
informix
, 大小为64(LP)×16M=1G, 磁盘镜像需用-c参数指定副本数 crfs -v jfs -d lv
informix
-m /opt/
informix
//在lv
informix
上创建文件系统/opt/
informix
mount /dev/lv
informix
/opt/
informix
//将设备mount到文件系统上 chfs -A yes /dev/lv
informix
//-A yes|no 修改所建文件系统的自动安装属性(Auto-Mount) ********************************************************************* ## 查看SSA磁盘阵列中pdisk与hdisk的对应关系start ssaxlate -l hdisk3 //逻辑磁盘hdisk3包含4个物理磁盘pdisk4,pdisk6,pdisk5,pdisk7 pdisk4 pdisk6 pdisk5 pdisk7 ssaxlate -l pdisk0 //物理磁盘pdisk0从属于逻辑磁盘hdisk2 hdisk2 ## 查看SSA磁盘阵列中pdisk与hdisk的对应关系end //设置文件系统/tellinshare/sms的mind属性,否则当文件系统中有足够多的大文件(指32K以上的文件)时会出问题 #chfs -a options=rw,mind /tellinshare/sms mkgroup id=101
informix
//创建组
informix
, 组编号101 mkuser id=101 pgrp=
informix
home=/opt/
informix
shell=/usr/bin/csh
informix
//创建用户
informix
,命令参数说明 //id:指定用户的id号,请根据规划设置; //pgrp:指定该用户的归属组,请根据规划设置; //home:指定该用户的home目录,请根据规划设置; //shell:指定该用户的登录shell,请根据规划设置; //
informix
:指定用户名称,请根据规划设置; //检查硬件错误信息 errpt -a |grep error ##交换区命令start lsps -a //显示交换区的分部信息 lsps -s //显示交换区的使用信息 slibclean //清除处理程序遗留的旧分页信息 smit mkps //建立交换区空间信息 swapon -a //启动所有的分页空间 ##交换区命令end ##查看HACMP, 外部硬盘信息: lscfg -v lscfg -v | grep -E "pdisk|hdisk" //可查看已经加入到卷组中的磁盘的大小 ## lsdev命令start 常用参数说明: C ->列出自定义设备对象类中设备的有关信息,缺省包括名称,状态,位置,描述,不可和P合用 c Class ->指定设备名 F Format ->以用户指定格式输出,Format参数为预定义或自定义设备对象类中的列名,如:name status等 H ->显示列输出前面的头部分,即输出中包括列头部分 P ->列出预定义设备对象类中设备的有关信息,即支持的设备,缺省显示信息包括class,type,subclass,description r ColumnName ->指定列名 S State ->列出指定状态的设备,3种状态可选,(1)已定义->defined,d,D,0;(2)可用->available,a,A,1;(3)
停
止->stopped,s,S,2; s Subclass ->指定设备的子类名称,subclass包括什么类型可用参数P显示; t Type ->指定设备类型名称; 查看系统中所有的外置物理磁盘 lsdev -Cc pdisk -s ssar -H name status location description pdisk0 Available 07-08-6931-01-P SSA160 Physical Disk Drive pdisk1 Available 07-08-6931-07-P SSA160 Physical Disk Drive pdisk2 Available 07-08-6931-04-P SSA160 Physical Disk Drive pdisk3 Available 07-08-6931-08-P SSA160 Physical Disk Drive pdisk4 Available 07-08-6931-05-P SSA160 Physical Disk Drive pdisk5 Available 07-08-6931-06-P SSA160 Physical Disk Drive pdisk6 Available 07-08-6931-03-P SSA160 Physical Disk Drive pdisk7 Available 07-08-6931-02-P SSA160 Physical Disk Drive 显示系统中SSA磁盘阵列的逻辑磁盘 lsdev -C -t hdisk -c disk -s ssar -H name status location description hdisk2 Available 07-08-L SSA Logical Disk Drive hdisk3 Available 07-08-L SSA Logical Disk Drive 列出所有支持的设备 lsdev -P 列出系统支持的所有磁盘类的设备清单 ZSSCP4-mscp2[/]# lsdev -Pc disk disk hdisk ssar SSA Logical Disk Drive disk 1000mb scsi 1.0 GB SCSI Disk Drive disk 1000mb16bit scsi 1.0 GB SCSI Disk Drive disk 1000mb16bitde scsi 1.0 GB 16 Bit Differential SCSI Disk Drive disk 1000mbde scsi 1.0 GB Differential SCSI Disk Drive disk 1100mb scsi 1.1 GB SCSI Disk Drive disk 1100mb16bit scsi 1.1 GB 16 Bit SCSI Disk Drive disk 1100mb16bitde scsi 1.1 GB 16 Bit Differential SCSI Disk Drive disk 1200mb scsi 1.2 GB SCSI Disk Drive (in 2.4 GB Disk Unit) 查看系统中的逻辑磁盘和磁盘类型(内置盘还是SSA外置盘) #lsdev -Cc disk hdisk0 Available 09-08-00-5,0 16 Bit LVD SCSI Disk Drive hdisk1 Available 09-08-00-8,0 16 Bit LVD SCSI Disk Drive hdisk2 Available 07-08-L SSA Logical Disk Drive //磁盘阵列中硬盘的逻辑名 hdisk3 Available 07-08-L SSA Logical Disk Drive 显示系统中的物理磁盘 lsdev -Cc pdisk pdisk0 Available 07-08-6931-01-P SSA160 Physical Disk Drive pdisk1 Available 07-08-6931-07-P SSA160 Physical Disk Drive 查询cpu的个数 lsdev -Cc processor proc0 Available 00-00 Processor proc1 Available 00-01 Processor 查询设备中状态为可用的适配器 lsdev -Cc adapter -S a sio0 Available 00-00 StandardI/OPlanar fda0 Available 00-00-0D StandardI/ODisketteAdapter kts0 Available 00-00-0K KeyboardTablet/Soundsystem sa0 Available 00-00-S1 StandardI/OSerialPort1 sa1 Available 00-00-S2 StandardI/OSerialPort2 scsi0 Available 00-07 SCSII/OController mous0 Available 00-00-0M Mousedevice 系统支持的设备的class lsdev -P -r class adapter bus . . . tcpip tty 列出自定义设备对象类中处于可用状态的所有设备的名称,类,子类,和类型,包括列头部分 lsdev -C -H -S a -F 'name class subclass type' sa0 adapter mca 8p232 fd0 diskette siofd fd hdisk0 disk scsi 670mb hdisk1 disk scsi 355mb 列出adapter的设备名 lsdev -CHc adapter -F name name ent0 ssa0 ent1 列出网口的设备名和class,包括列头部分 lsdev -CHc if -F 'name class' name class en0 if en1 if en2 if et0 if et1 if et2 if lo0 if 查看两台SSA7133通道状态 lsdev -C -t ssa160 -c adapter ssa0 Available 34-08 IBM SSA 160 SerialRAID Adapter (14109100) ssa1 Available 3k-08 IBM SSA 160 SerialRAID Adapter (14109100) 查看主机中所有HBA卡信息 lsdev -Cc adapter | grep fcs fcs0 Available 2V-08 FC Adapter fcs1 Available 3F-08 FC Adapter #显示连接到主机里面的HBA卡的网络地址 lscfg -vl fcs0 | grep Network Network Address.............10000000C9456CBF 列出磁盘阵列router lsdev -C | grep dar dar0 Available 1722-600 (600) Disk Array Router 列出磁盘阵列控制器 lsdev -C | grep dac dac0 Available 2V-08-01 1722-600 (600) Disk Array Controller dac1 Available 3F-08-01 1722-600 (600) Disk Array Controller //lsdev显示ibm小型机硬件设备名称, 然后使用lsattr显示该设备特性 lsdev -CH //输出内存的设备名 mem0 Available 00-00 Memory lsattr -El mem0 //使用lsattr -El mem0 可以输出该条内存的大小 size 1024 Total amount of physical memory in Mbytes False goodsize 1024 Amount of usable physical memory in Mbytes False ## lsdev命令 end crfs -v jfs -d lvtest -m /test //生成文件系统此命令将生产的文件系统mount到/test目录下 rmlv -f lvtest //要删除此文件系统, 先删除逻辑卷 rmdir /test //然后删除mount的目录即可 topas // topas
执行
结果的左上角, 我们看到了关于Kernel、User、Wait和Idle的显示, 这是topas关于CPU活动情况的使用报告 // Kernel: 表示在kernel模式下运行的进程所占用的CPU百分比 // User: 表示在user模式下运行的进程所占用的CPU百分比 // Wait: 表示等待I/O的CPU百分比, Idle表示空闲状态的CPU百分比 ****** 监控CPU性能start vmstat 2 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 0 22478 1677 0 0 0 0 0 0 188 1380 157 57 32 0 10 1 0 22506 1609 0 0 0 0 0 0 214 1476 186 48 37 0 16 0 0 22498 1582 0 0 0 0 0 0 248 1470 226 55 36 0 9 2 0 22534 1465 0 0 0 0 0 0 238 903 239 77 23 0 0 2 0 22534 1445 0 0 0 0 0 0 209 1142 205 72 28 0 0 2 0 22534 1426 0 0 0 0 0 0 189 1220 212 74 26 0 0 3 0 22534 1410 0 0 0 0 0 0 255 1704 268 70 30 0 0 2 1 22557 1365 0 0 0 0 0 0 383 977 216 72 28 0 0 2 0 22541 1356 0 0 0 0 0 0 237 1418 209 63 33 0 4 1 0 22524 1350 0 0 0 0 0 0 241 1348 179 52 32 0 16 1 0 22546 1293 0 0 0 0 0 0 217 1473 180 51 35 0 14 //如果要检查 CPU 是否存在性能瓶颈,那么vmstat报告中的两个kthr列和四个cpu列非常有判断价值,同时faults列也有一定的参考意义. ### kthr 列 ### 该列的数据是在采样时间段内对队列中的内核线程数进行计算得到的平均值. <> 表示可运行的内核线程平均数, 包括正在运行的线程和等待CPU的线程. 如果这个数字大于 CPU 的数目, 则至少有一个线程要等待CPU.等待CPU的线程越多, 对性能的影响就越大. <> 表示等待队列中的内核线程平均数,包括正在等待文件系统 I/O 的线程,或由于内存装入控制而被挂起的线程.如果block的值长时间连续非零,那就需要我们对CPU的运行状况做进一步的分析. ### cpu 列 ### 表示在该时间间隔内使用 CPU 时间的百分比. <> 显示了用户模式所消耗的 CPU 时间. 当在用户模式下
执行
时, 进程在它自己的应用程序代码中
执行
, 不需要内核资源来进行计算、管理内存或设置变量. <> 详细显示了CPU在系统模式下
执行
一个线程所花时间的百分比, 包括内核进程和其它需要访问内核资源的进程所消耗的CPU资源. 如果一个进程需要内核资源, 它必须
执行
一个系统调用, 并因此被切换到系统模式从而可以使用该资源. 例如, 对一个文件的读或写操作需要内核资源来打开文件、寻找指定的位置和读写数据. <> 显示了已确定本地磁盘 I/O 时 CPU 空闲或等待时间的百分比. <> 详细显示了有未决本地磁盘I/O时CPU空闲的时间百分比.wa 的值如果超过25%,就表明磁盘子系统可能没有被正确平衡,或者可能是磁盘工作负荷很重. ### faults 列 ### 关于进程控制的信息 <> 表示在该时间间隔中观测到的每秒设备中断数. <> 表示在该时间间隔中观测到的每秒系统调用次数.通过明确的系统调用,用户进程可以使用资源.通常来讲,在一个单处理器系统上当sy列增大到超过每秒钟10000 个调用,应进行进一步的深究(在一个对称多处理系统上,这个数字为每个处理器每秒钟10000 个调用) <> 在该时间间隔中观测到的每秒钟上下文切换次数. 观察上面vmstat命令的
执行
结果,我们看到最开始的三个报告表明系统稳定在用户模式 48-57%、系统模式 32-37% 和 I/O 等待 9-16%.从第四个报告开始,当非? 姆袰PU资源的一个恶意破坏循环程序开始运行后,所有的 CPU 周期被占用.因为循环程序不进行 I/O,所以它可以占有前面因为 I/O 等待而未用的所有周期.更糟糕的是这意味着,当一个有用进程放弃 CPU 的使用权时,这个进程总是要占用CPU.因为死循环程序的优先级与所有其它前台进程一样,所以当另一个进程变得可调度时它也没必要让出 CPU 的使用权.该程序运行大约10秒钟(5次×2秒/次=10秒), 然后由 vmstat 命令报告的活动恢复到较正常的模式. 总的来说, 如果 us + sy 时间低于 90%, 则不认为该单用户系统 CPU 受限制. 但是, 如果在一个多用户系统中 us + sy 时间超过 80%, 其中的进程将要花时间在运行队列中等待, 响应时间和吞吐量会受到损害;对于这样的系统, 我们应提高警惕. 对于CPU性能可能存在瓶颈的系统,我们可以用 tprof 命令找出占用CPU时间最多的进程, 用 nice 或 renice 命令调整用户进程的优先级, 用 schedtune 命令修改调度程序时间片的长度. 根据业务与软件产品的维护经验, 因为CPU性能存在瓶颈导致业务不能稳定运行的故障非常之少, 同时也因为CPU是系统的核心部件,对CPU进行任何调整都可能导致非常大的影响, CPU的性能调优需要非常全面深厚的理论基础, 所以在此我们不对CPU的调优操作做详细介绍. ##使用sar sar -u 3 3 AIX mscp2 3 4 005F7FDA4C00 08/15/07 11:32:55 %usr %sys %wio %idle 11:32:59 12 13 0 76 11:33:02 12 13 4 72 11:33:05 11 11 0 77 Average 12 12 1 75 ###看每个CPU地占用率,2秒为间隔之行5次 sar -P ALL -u 2 5 ****** 监控CPU性能end ****** 监控磁盘的I/O性能start ###使用iostat iostat 2 2 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.1 16.7 72.5 79.4 -59.0 7.1 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 50.8 102.2 85.7 66479591 713426327 hdisk1 49.6 97.7 84.8 31785338 713426327 hdisk2 278.0 192.2 549.7 978503313 488310751 cd0 0.0 0.0 0.0 0 0 tty: tin tout avg-cpu: % user % sys % idle % iowait 0.0 239.6 10.4 9.9 79.6 0.1 Disks: % tm_act Kbps tps Kb_read Kb_wrtn hdisk0 0.5 4.0 1.0 0 8 hdisk1 0.5 4.0 1.0 0 8 hdisk2 0.5 4.0 1.0 0 8 cd0 0.0 0.0 0.0 0 0 ### iowait ### 等待本地I/O时CPU空闲时间的百分比. 如果iowait时间的百分比很高,表明该磁盘输入输出(I/O)可能是导致系统运行速度缓慢的主要原因. ### idle ### 表示未等待本地 I/O 时CPU 空闲时间的百分比. ### tm_act ### 表示硬盘繁忙程度的百分比.如果tm_act的值很高,表明硬盘存在I/O瓶颈.当%tm_act(硬盘繁忙时间)很高时,可能会感觉到系统运行速度在减慢.有些系统上某个硬盘的%tm_act值超过35%时,系统性能就会受到明显的影响. ##使用sar sar -d 2 2 AIX mscp2 3 4 005F7FDA4C00 08/15/07 11:23:40 device %busy avque r+w/s blks/s avwait avserv 11:23:42 hdisk0 -19 0.0 85 102 0.0 0.0 hdisk1 -20 0.0 84 97 0.0 0.0 hdisk2 -3 0.0 549 192 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 11:23:44 hdisk0 0 0.0 0 0 0.0 0.0 hdisk1 0 0.0 0 0 0.0 0.0 hdisk2 0 0.0 2 9 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 Average hdisk0 -9 0.0 42 51 0.0 0.0 hdisk1 -10 0.0 42 48 0.0 0.0 hdisk2 -1 0.0 275 100 0.0 0.0 cd0 0 0.0 0 0 0.0 0.0 ### device ### 块设备的逻辑名, 以下各列的数据都是针对该device而言的. ### busy ### 该块设备处于
服务
请求状态的百分比, 单位是%. ### Avque ### 指定时间内, 平均处理的请求个数. 正常情况下, 该值应该小于0.5, 如果很多时候都超过1甚至达到3以上, 则表示该设备现在已经不能及时响应请求
服务
, IO成为瓶颈. ### r+w/s ### 每秒数据访问次数 ### blks/s ### 每秒数据访问量(单位是512byte) ### avwait ### 每个请求在请求队列中的平均等待时间(单位是毫秒). 它是和avque息息相关的, 如果avque增大, 则该值也会急剧增大. 记住正常情况下它的值, 如果一旦SCP处理能力不足时, 可以用以进行比较. ### avserv ### 平均每个IO请求的
服务
时间(单位是毫秒) ****** 监控磁盘的输入/输出性能end ***** Hacmp双机命令start #SCP双机脚本目录 /usr/sbin/cluster/utilities/tellin/scppkg #启动双机软件 smit clstart #关闭双机软件 smit clstop #双机状态查询, 取决于clinfo进程是否拉起, 若没有该进程则无法使用该命令,
执行
该命令需进入目录/usr/sbin/cluster/下: /usr/sbin/cluster/clstat -a clstat - HACMP Cluster Status Monitor --------------------------------------------- Cluster: mscp_cluster_yunnan (80) Fri Aug 17 14:24:23 BEIJING 2001 State: UP Nodes: 2 Node: mscp1 State: UP Interface: mscp1_boot (0) Address: 139.124.8.21 State: UP Interface: mscp1_tty (1) Address: 0.0.0.0 State: UP Node: mscp2 State: UP Interface: mscp2_boot (0) Address: 139.124.8.22 State: UP Interface: mscp2_stty (1) Address: 0.0.0.0 State: UP //查看监控进程appspy的状态 lssrc -s appspy Subsystem Group PID Status appspy (scp监控) 20722 active (激活) smpappspy (smp监控) inoperative(未激活) //查看cluster系统的状态 lssrc -g cluster Subsystem Group PID Status clstrmgr Cluster 21504 active clsmuxpd Cluster 22450 active clinfo Cluster 22708 active //建立smpappspy子系统 mkssys -s smpappspy -p /usr/sbin/cluster/utilities/tellin/smp/smppkg/smpappspy -u 0 -S -n 15 -f 15 //
停
止双机appspy监控,若
停
监控后双机状态为stopping,则参考"双机状态为stopping解决方法2则" stopsrc -s appspy //启动双机appspy监控 startsrc -s appspy ##
停
止双机步骤start //查询备机spy.sh是否存在 ps -ef | grep spy.sh | grep standby //若存在则kill掉监控进程 kill //
停
备机应用 /usr/sbin/cluster/utilities/tellin/scppkg/spy.sh stop //
停
止备机群组 smit clstop //检查应用,数据库是否
停
止 kill_scp.sh onmode -ky //主机直接
停
双机 smit clstop //检查应用,数据库是否
停
止 kill_scp.sh onmode -ky ##
停
止双机步骤end ***** Hacmp双机命令end //配置设备,读取设备上的硬件信息并识别,可以同步双机的hdisk信息 cfgmgr ****** IBM内存监测方法start ##查看系统内核消耗的内存信息(pin部分是否增长),大约10分钟收集一次,需要加入date信息. svmon -G ##查看各个进程的内存消耗, 这部分信息量大, 大约4小时收集一次, 需要加入date信息. svmon -P svmon -P 进程号 //查看某个进程的内存信息 ##topas没有办法记录到日志文件中,可以手工定时
执行
,也可以考虑拿一个第三方的top来收集. topas ##类似top的进程信息,信息量大,建议4小时收集一次,或截取部分有用信息,而增加收集的频度,如只采集前50个进程信息, 每分钟收集一次. tprof -kes -x sleep 5 ##收集内存CPU和内存综合信息,包括fi/fo,pi/po,建议每分钟收集一次. vmstat -t -I 2 5 ##收集文件缓冲占用内存程度,建议4小时收集一次. /usr/samples/kernel/vmtune ##通过sar -f sar.out后面跟相关参数查看对应的信息,建议每分钟收集一次. sar -A -o sar.out 2 5 #间隔2秒之行5次 ##观察参数%mem:内存使用百分比;RSS:实际使用内存 ps aux ##检查系统物理内存信息: lsdev -Cc memory lsattr -El mem0 ##3种小型机如何查看核心参数 IBM核心参数配置文件为: /etc/security/limits SUN核心参数配置文件为: /etc/system HP-UX下用kmtune>kernel.txt将内核参数信息导出到kernel.txt文件中 ##当操作系统内核内存调试开关使用bosdebug -M打开的局点, 还可以收集如下信息: i=`date +"%m%e%H%M%S"` echo heap | kdb > heap.$i echo "xm -lu" | kdb > xm.$i 写成shell如下: #!/bin/ksh integer count=0 sar -A -o sar.out 60 10000000 & #60秒为间隔
执行
sar命令10000000次 while : do if (( $count % 600 == 0 )) then date >> svmon.total svmon -G >> svmon.total fi if (( $count % 14400 == 0 )) then date >> svmon.detail svmon -P >> svmon.detail date >> vmtune.info /usr/samples/kernel/vmtune >> vmtune.info fi if (( $count % 60 == 0 )) then date >> tprof.info tprof -kes -x sleep 5 head -50 __prof.all >> tprof.info vmstat -t -I 2 5 >> vmstat.info fi ((count+=1)) sleep 1 done ###监测内存性能start vmstat 2 10 kthr memory page faults cpu ----- ----------- ------------------------ ------------ ----------- r b avm fre re pi po fr sr cy in sy cs us sy id wa 1 3 113726 124 0 14 6 151 600 0 521 5533 816 23 13 7 57 0 3 113643 346 0 2 14 208 690 0 585 2201 866 16 9 2 73 0 3 113659 135 0 2 2 108 323 0 516 1563 797 25 7 2 66 0 2 113661 122 0 3 2 120 375 0 527 1622 871 13 7 2 79 0 3 113662 128 0 10 3 134 432 0 644 1434 948 22 7 4 67 1 5 113858 238 0 35 1 146 422 0 599 5103 903 40 16 0 44 0 3 113969 127 0 5 10 153 529 0 565 2006 823 19 8 3 70 0 3 113983 125 0 33 5 153 424 0 559 2165 921 25 8 4 63 0 3 113682 121 0 20 9 154 470 0 608 1569 1007 15 8 0 77 0 4 113701 124 0 3 29 228 635 0 674 1730 1086 18 9 0 73 ### avm ### 活动的虚拟内存, 显示目前 vmstat 样本收集的动态虚拟内存的页数, 它是已经被占用的内存页面. ### fre ### 显示空闲内存页面的平均数量.系统为内存页面建立了一个缓冲区,称为空闲列表.当 VMM(虚拟内存管理)需要空间时可以立即访问此空闲列表.VMM在空闲列表中保存最少页面的数量决定于minfree参数,该参数
执行
vmtune 命令加f参数可以得到. ### re ### 表示系统回收的内存页面数.在AIX 5L当中不再支持回收,因为它只能提供有限的系统性能的信息却无法弥补跟踪回收算法对系统的负面影响 ### pi ### 表示分页空间调入数量的详细信息.分页空间是驻留在磁盘上的虚拟内存的一部分.当内存过量使用时,它用作超出部分的内存. ### po ### 显示页面调出数量的详细情况. ### fr ### 在一定时间间隔内为填充内存空闲表或分配给某进程所需要释放的内存页面. ### sr ### 为得到fr数量的空闲页面所需要检查的页面数.当fr和sr的比例(fr:sr)很高时,内存将会过量使用.fr:sr 为 1:4 的比例意味着每释放一页,有四页被检查了.当 po*SYS > fr (SYS 为一系统参数,可用命令/usr/samples/kernel/schedtune查看)时,系统自身认为已到崩溃边缘.该值在有128MB或更多内存的系统上默认值为0,表示禁止内存加载控制,否则默认值为6.系统崩溃表明此时系统使用大量时间用于内存换入/换出,而没有足够时间处理应用或正常工作.这时一些进程将被临时挂起或被kill掉,系统运行明显减慢. ### cy ### 时钟算法中当内存页面写满时每秒刷新周期的数量. ### 内存优化的工具start /usr/samples/kernel/vmtune
执行
结果中,maxperm=79.9% of real memory表示文件系统占用内存的比例上限为80%,minperm=20.0% of real memory表示文件系统占用内存的比例下限为20%, strict_maxperm = 0表示使用非严格上限模式.80%的文件系统内存占用上限易导致Paging space占用过高.对于一般对文件系统使用要求不高的应用,比如智能网系统,IIN平台最新推荐值是100-200M,可以根据实际物理内存,非严格上限模式. 命令如下: cd /usr/samples/kernel ./vmtune -P 20 -p 10 ./vmtune -h vmtune中还有两个比较关键的参数: npswarn和npskill. 当pagingspace的空闲页面数低于npswarn时,操作系统开始给进程发送SIGDANGER信息量,当pagingspace的空闲页面数低于npskill值时AIX操作系统开始随机地杀进程. ##查看共享内存 ipcs -ma IPC status from /dev/mem as of Sun Nov 18 09:48:52 PAKST 2007 T ID KEY MODE OWNER GROUP CREATOR CGROUP NATTCH SEGSZ CPID LPID ATIME DTIME CTIME Shared Memory: m 0 0x0d0369c6 --rw-rw-rw- root system root system 6 1440 336000 721078 9:30:28 9:30:28 9:37:46 m 1 0xffffffff --rw-rw---- root system root system 1 4096 450672 450672 9:48:00 9:48:00 9:38:01 m 1441794 0x52564801 --rw-rw---- root
informix
root
informix
0 238092288 581846 704714 9:48:31 9:48:31 9:27:32 m 131075 0x52564802 --rw-rw---- root
informix
root
informix
0 32768000 581846 704714 9:48:31 9:48:31 9:27:33 m 131076 0x52564803 --rw-rw-rw- root
informix
root
informix
0 606208 581846 704714 9:48:31 9:48:31 9:27:38 ##清除共享内存 ipcrm Usage: ipcrm [-q msqid] [-m shmid] [-s semid] [-Q msgkey] [-M shmkey] [-S semkey] //example ipcrm -m 0x52564801 ******IBM内存监测方法end ***** shutdown命令使用start 1、在 10 分钟后关掉系统: # shutdown +10 2、采用没有警告的快速关机: # shutdown -F 或 # halt 3、关掉并警告用户退出: # shutdown now 4、在警告1分钟后关机并重新启动: # shutdown -r 5、快速关机并重新启动: # shutdown -Fr # reboot 6、关掉 AIX 到单用户模式: # telinit S # init s # shutdown -m ***** shutdown命令使用end ***** 创建文件系统流程start 1、用smit工具创建testvg 2、# mklv -t jfs -e x -y testlv1 testvg 512 hdisk0 3、# crfs -v jfs -d testlv1 -m /zhaop 4、# mount /dev/testlv1 /zhaop 5、# mount node mounted mounted over vfs date options -------- --------------- --------------- ------ ------------ --------------- /dev/hd4 / jfs Jan 31 08:53 rw,log=/dev/hd8 /dev/hd2 /usr jfs Jan 31 08:53 rw,log=/dev/hd8 /dev/hd9var /var jfs Jan 31 08:53 rw,log=/dev/hd8 /dev/hd3 /tmp jfs Jan 31 08:53 rw,log=/dev/hd8 /dev/hd1 /home jfs Jan 31 08:55 rw,log=/dev/hd8 /proc /proc procfs Jan 31 08:55 rw /dev/hd10opt /opt jfs Jan 31 08:55 rw,log=/dev/hd8 /dev/lv00 /oracle jfs Jan 31 08:55 rw,log=/dev/hd8 /dev/lv
informix
/
informix
jfs Jan 31 08:55 rw,log=/dev/hd8 ***** 创建文件系统流程end ***** 为设备增加一个外接磁盘start 先将设备下电,连接硬盘,重启即可,系统会自动分配一个物理卷名给新磁盘hdisk(n),n是下一个磁盘号.如果内置磁盘的卷标是hdisk0那么新加 磁盘就会取名为hdisk1.这时硬盘只是对LVM来说可用,但尚未配置.配置磁盘可使用SMIT或者chdev命令实现. #如果用smit命令连接磁盘, 命令行输入: smit makdsk, 显示信息如下: +--------------------------------------------------------------------------+ | Disk Type | | | | Move cursor to desired item and press Enter. | | | | [TOP] | | 1000mb scsi 1.0 GB SCSI Disk Drive | | 1000mb16bit scsi 1.0 GB SCSI Disk Drive | | 1000mb16bitde scsi 1.0 GB 16 Bit Differential SCSI Disk Drive | ........... | 730mb scsi 730 MB SCSI Disk Drive | | 857mb scsi 857 MB SCSI Disk Drive | | osdisk scsi Other SCSI Disk Drive | | scsd scsi Other SCSI Disk Drive | 若安装的是非IBM的SCSI硬盘, 在列表中选择osdisk, 显示信息如下: +--------------------------------------------------------------------------+ | Parent Adapter | | | | Move cursor to desired item and press Enter. | | | | scsi0 Available 10-60 Wide/Fast-20 SCSI I/O Controller | | scsi1 Available 10-88 Wide/Ultra-2 SCSI I/O Controller | 选择正确的适配卡 ***** 为设备增加一个外接磁盘end ***** smit管理存储设备start //相当于输入smit->System Storage Management(Physical & Logical Storage),进入管理存储设备界面Logical Volume Manager smit lvm Move cursor to desired item and press Enter. Volume Groups Logical Volumes Physical Volumes Paging Space //直接进入管理卷组界面 smit vg //添加一个卷组 smit mkvg //修改一个卷组 smit vgsc Change a Volume Group Add a Physical Volume to a Volume Group ->命令为: extendvg Remove a Physical Volume from a Volume Group ->命令为: reducevg Reorganize a Volume Group ->命令为: reorgvg //导入卷组 #smit importvg //若用户要把当前系统中的卷组转移到其它系统中,以下为操作步骤: //1:必须使用exportvg或者smit工具把卷组从当前系统导出, 用importvg或者smit工具把卷组信息导入到目的设备系统中; //2:导出前必须是非激活状态, 卷组被导出, 系统将删除此卷组的所有信息; //3:不要试图导出rootvg; //直接进入逻辑卷管理界面 smit lv //添加一个LV smit mklv //修改LV属性 smit lvsc //给LV做镜像, 命令为: mklvcopy smit mklvcopy //把硬盘hdisk1上的lv00转移到hdisk2上,可以使用lslv -l命令查看LV在PV上的分布情况smit pv migratepv -l lv00 hdisk1 hdisk2 # pdisk和hdisk有何区别 pdisk物理磁盘(每个硬盘都是一个pdisk),hdisk逻辑磁盘,做完阵列后系统看到的磁盘形式.对应关系是若没有raid或者镜像,每个pdisk就是一个hdisk.如果做了raid,那么做完后的虚拟磁盘就是hdisk.例如三块pdisk做raid5 后所看到的就是hdisk一块盘. #smitty devices 依次选择: SSA Disks-----SSA Logical Disks----Show Logical to Physical SSA Disk Relationship 这里可以显示出你的hdisk2与你之前显示的四块硬盘的关系; 还有其他选项可以选择, 如下信息显示hdisk2做了raid5: Command: OK stdout: yes stderr: no Before command completion, additional instructions may appear below. hdisk2 CA4F43598AC04CK system good 54.7GB raid_5 ***** smit管理存储设备end ****** 物理卷管理start 1、增加新磁盘 >>方法一: 适用于安装磁盘时可以关闭系统. 安装完磁盘之后,启动系统,cfgmgr命令在启动过程中被自动
执行
,新磁盘被自动配置,启动完毕后,root用户使用lspv命令可看到有新磁盘 加入系统: hdisk1 none none 或者 hdisk1 00085166b4d41888 none 如果有PVID号,则磁盘可以被LVM使用,如果没有PVID号,则需要将磁盘转化为物理卷,请参考第二步. >>方法二: 适用于安装磁盘时不能关闭系统. (1)lspv命令显示当前系统中存在的物理卷, 如: #lspv hdisk0 00085166b4d41888 rootvg (2)运行cfgmgr, 配置系统新检测到的新设备 #cfgmgr #cfgmgr -vl ssar 表示检测ssar设备中的新设备信息,l 指定设备名;v 输出详细信息 (3)再次
执行
lspv命令显示当前系统存在的物理卷 #lspv hdisk0 00085166b4d41888 rootvg hdisk1 0008516684c7b231 none 注意: 若新增磁盘没有PVID, 则需要将磁盘转化为物理卷, 请参考第二步. 2、将磁盘转化为物理卷 一个磁盘必须被设置为一个物理卷材可被LVM管理,以下命令可以使一个可用磁盘(hdisk1)成为一个物理卷并分配一个PVID #chdev -l hdisk1 -a pv=yes //-l: 指示磁盘的设备名;-a: 指定设备属性值 注意:该命令对于已设置为物理卷的磁盘没有作用 3、修改物理卷特性 (1) 给物理卷设置分配许可权 物理卷的分配许可权决定那些物理卷可以分配给逻辑卷,那些不可以. 以下命令关闭hdisk1的分配许可: #chpv -a n hdisk1 以下命令打开分配许可: #chpv -a y hdisk1 (2) 设置物理卷的可用性 可用性决定了是否可以处理逻辑输入/输出操作, 当一个物理卷从系统中移除或者故障导致不可用时, 应将其置为不可用: #chpv -v r pvname 该操作将会冻结该物理卷中所有的VGDA和VGSA拷贝,将来卷组激活时将不会被加入卷组,同样该卷的信息也从该卷组中其他的物理卷 的VGDA和VGSA中删除. 置为可用: #chpv -v a pvname 注意: chpv命令
执行
会使用tmp目录, 若
执行
失败则检查tmp目录是否够大, 扩展其空间后再
执行
. 4、显示系统中的物理卷 #列出系统中的物理卷设备 lspv #作用同上 lsdev -Cc disk #显示物理卷特性 lspv hdisk1 PHYSICAL VOLUME: hdisk2 VOLUME GROUP: vgscp PV IDENTIFIER: 0033c87d7973d945 VG IDENTIFIER 0033c87d00004c0000000104798aca36 PV STATE: active STALE PARTITIONS: 0 ALLOCATABLE: yes PP SIZE: 16 megabyte(s) LOGICAL VOLUMES: 3 TOTAL PPs: 8686 (138976 megabytes) VG DESCRIPTORS: 2 FREE PPs: 0 (0 megabytes) HOT SPARE: no USED PPs: 8686 (138976 megabytes) FREE DISTRIBUTION: 00..00..00..00..00 USED DISTRIBUTION: 1738..1737..1737..1737..1737 #显示物理卷中逻辑卷的分配信息 lspv -l hdisk1 hdisk2: LV NAME LPs PPs DISTRIBUTION MOUNT POINT tellinsharelv 7661 7661 1737..713..1737..1737..1737 /tellinshare loglv00 1 1 01..00..00..00..00 N/A tellinlv 1024 1024 00..1024..00..00..00 /tellin #显示物理卷中物理分区的分配信息 lspv -p hdisk1 hdisk2: PP RANGE STATE REGION LV NAME TYPE MOUNT POINT 1-1737 used outer edge tellinsharelv jfs /tellinshare 1738-1738 used outer edge loglv00 jfslog N/A 1739-2762 used outer middle tellinlv jfs /tellin 2763-3475 used outer middle tellinsharelv jfs /tellinshare 3476-5212 used center tellinsharelv jfs /tellinshare 5、迁移物理卷内容 (1)确认源磁盘与目标磁盘是否在同一卷组中, 源磁盘与目标磁盘必须在同一卷组中 #lsvg -p rootvg //显示卷组包含那些物理卷 (2)确认目标磁盘上是否有充足的空闲空间 #lspv hdisk0|grep "USED PPs" //确认源磁盘上已使用的PP个数 USED PPs: 537 (4296 megabytes) 根据上面信息目标磁盘必须有至少537个PP才可迁移数据 (3)使用smit migratepv命令迁移数据, 界面如下: Move Contents of a Physical Volume Type or select a value for the entry field. Press Enter AFTER making all desired changes. [Entry Fields] * SOURCE physical volume name [] + (4)从卷组中移除源磁盘,
执行
: reducevg VGNAME Sourcedisk (5)删除该磁盘信息 rmdev -l Sourcedisk -d 6、lspv命令 Usage: lspv lspv [-L] [-M | -l | -p] [-n DescriptorPV] [-v VGid] PVname Lists the characteristics of a volume group's physical volume. //查看hdisk和vg的对应关系 # lspv hdisk0 00c9e7ea7056c6e0 rootvg active hdisk3 00c9e7aa712e4723 smpvg active 显示系统中的hdisk(逻辑硬盘), 中间一列表示PV的ID号, 若没有PVID表示磁盘对于LVM来说不可用 //hdisk0的详细信息 # lspv hdisk0 PHYSICAL VOLUME: hdisk0 VOLUME GROUP: rootvg PV IDENTIFIER: 00085166b4d41888 VG IDENTIFIER 0008516600004c000000010aaa9b6eb8 PV STATE: active STALE PARTITIONS: 0 ALLOCATABLE: yes PP SIZE: 8 megabyte(s) LOGICAL VOLUMES: 9 TOTAL PPs: 537 (4296 megabytes) VG DESCRIPTORS: 2 FREE PPs: 19 (152 megabytes) HOT SPARE: no USED PPs: 518 (4144 megabytes) FREE DISTRIBUTION: 00..00..00..00..19 USED DISTRIBUTION: 108..107..107..107..89 //物理卷hdisk0包含那些LV # lspv -l hdisk0 hdisk0: LV NAME LPs PPs DISTRIBUTION MOUNT POINT testlv1 512 512 108..107..107..107..83 /zhaop loglv00 1 1 00..00..00..00..01 N/A //物理卷hdisk1包含那些LV # lspv -l hdisk1 hdisk1: LV NAME LPs PPs DISTRIBUTION MOUNT POINT hd5 1 1 01..00..00..00..00 N/A hd6 4 4 00..04..00..00..00 N/A hd2 55 55 00..40..15..00..00 /usr hd8 1 1 00..00..01..00..00 N/A hd4 1 1 00..00..01..00..00 / hd9var 1 1 00..00..01..00..00 /var hd3 10 10 00..00..10..00..00 /tmp hd1 1 1 00..00..01..00..00 /home hd10opt 80 80 00..00..80..00..00 /opt //显示物理卷的信息, 其中PP RANGE列和REGION列显示了PP所在的硬盘位置 # lspv -p hdisk1 hdisk1: PP RANGE STATE REGION LV ID TYPE MOUNT POINT 1-1750 free outer edge 1751-2445 used outer middle lv
informix
jfs /
informix
2446-2495 used outer middle lvrootdbs jfs N/A 2496-3372 free outer middle 3373-3500 used outer middle paging00 paging N/A 3501-3555 used center hd3 jfs /tmp 3556-5250 used center lv00 jfs /oracle 5251-7000 used inner middle lv00 jfs /oracle 7001-7555 used inner edge lv00 jfs /oracle 7556-8750 free inner edge //显示物理分区分配表 #lspv -M hdisk0 hdisk0:1 hd5:1 //第一列指明磁盘的物理分区,第二列指明物理分区对应那个逻辑卷的逻辑分区 hdisk0:2 hd3:3 ****** 物理卷管理end ****** 逻辑卷管理start lslv: 查看lv详细信息 Usage: lslv [-L] [-l | -m] [-n DescriptorPV] LVname lslv: [-L] [-n DescriptorPV] -p PVname [LVname] Lists the characteristics of a logical volume. ## lslv start # lslv -l testlv1 //查看testlv1逻辑卷在各个PV上的分布情况 testlv1:/zhaop PV COPIES IN BAND DISTRIBUTION hdisk0 512:000:000 20% 108:107:107:107:083 //查看逻辑磁盘hdisk3中包含那些物理磁盘,下图中表示hdisk3中包含4个物理磁盘pdisk4,pdisk6,pdisk5,pdisk7 ssaxlate -l hdisk3 pdisk4 pdisk6 pdisk5 pdisk7 # lslv -m hd3 //查看是否镜像, 查看hd3的LP在PV上的映射关系 hd3:/tmp LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0228 hdisk0 ->第一个LP映射在hdisk0的第228个PP上 0002 0229 hdisk0 ->第二个LP映射在hdisk0的第229个PP上 # lslv -m lv
informix
lv
informix
:/opt/
informix
LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0118 hdisk1 0131 hdisk0 ->lv
informix
有镜像, 1个LP对应2个PV, 第1个LP对应第1个PV的第118个PP和第2个PV的第131个PP 0002 0119 hdisk1 0132 hdisk0 ->第2个LP对应第1个PV的第119个PP和第2个PV的第132个PP # lslv -L testlv1 LOGICAL VOLUME: testlv1 VOLUME GROUP: testvg LV IDENTIFIER: 0008516600004c000000010534b4151f.1 PERMISSION: read/write VG STATE: active/complete LV STATE: opened/syncd TYPE: jfs WRITE VERIFY: off MAX LPs: 512 PP SIZE: 8 megabyte(s) COPIES: 1 SCHED POLICY: parallel LPs: 512 PPs: 512 STALE PPs: 0 BB POLICY: relocatable INTER-POLICY: maximum RELOCATABLE: yes INTRA-POLICY: middle UPPER BOUND: 32 MOUNT POINT: /zhaop LABEL: /zhaop MIRROR WRITE CONSISTENCY: on/ACTIVE EACH LP COPY ON A SEPARATE PV ?: yes #lslv hd5 //lslv查看各个lv的详细信息 LOGICAL VOLUME: hd5 VOLUME GROUP: rootvg LV IDENTIFIER: 00009856b3996546.1 PERMISSION: read/write VG STATE: active/complete LV STATE: closed/syncd TYPE: boot WRITE VERIFY: off MAX LPs: 512 PP SIZE: 8 megabyte(s) COPIES: 1 SCHED POLICY: parallel LPs: 1 PPs: 1 STALE PPs: 0 BB POLICY: relocatable INTER-POLICY: minimum RELOCATABLE: no INTRA-POLICY: edge UPPER BOUND: 32 MOUNT POINT: N/A LABEL: None MIRROR WRITE CONSISTENCY: on EACH LP COPY ON A SEPARATE PV ?: yes ## lslv end ## mklv start ##在卷组vgtest上创建逻辑卷lvtest mklv -t jfs -e x -y lvtest vgtest 512 //-t: 指定lv的文件系统类型,包括:(1)jfs;(2)jfslog;(3)paging;(4)raw //-e: 指定物理卷分配策略,后跟x和m, x:数据存储于最多几个磁盘上;m:数据存储于最少几个磁盘 //-y: 指定新逻辑卷名称 //vgtest: 新逻辑卷所在卷组名称 //512: 逻辑卷包含的LP个数 ##在卷组vg03上创建逻辑卷 mklv -c 3 -u 2 -s n vg03 9 //-c: 新LV的镜像个数 //-u: LV的数据限制在2个磁盘上 //-s: 指定分配策略, 后跟y,n,s y:严格分配策略,逻辑分区的拷贝不共享相同的物理卷,此为缺省值; n:不设置严格分配策略,逻辑分区的拷贝可共享相同的物理卷; s:超级严格分配策略,一个为镜像分配的分区不能和另一个镜像的分区共享相同的物理卷; ##创建卷组vg03, 大小为15个LP, 这15个LP分别从磁盘hdisk5、hdisk6、hdisk9上选择 mklv vg03 15 hdisk5 hdisk6 hdisk9 ##在vg05上创建LV,-u:指定磁盘个数,3个磁盘;-S:设置条带化,条带化大小为64K mklv -u 3 -S 64K vg05 12 ##在vg05上创建LV, 条带化大小为8K,大小为12个LP,存在于hdisk1,hdisk2,hdisk3 mklv -S 8K vg05 12 hdisk1 hdisk2 hdisk3 ## mklv用例end ##扩大逻辑卷空间,逻辑卷mylv增加10个LP extendlv mylv 10 ## mklvcopy start #mklvcopy-> 对指定逻辑卷进行镜像 Usage: [-a IntraPolicy] [-e InterPolicy] [-k] [-m MapFile] [-u UpperBound] [-s Strict] LVname LPcopies [PVname...] #mklvcopy hd10opt 2 hdisk1 //在hdisk1上创建1个逻辑卷hd10opt的镜像副本,前提是hdisk1上必须有足够的空闲空间 //2表示增加一个副本 //确认
执行
是否成功:lslv -m hd10opt #syncvg -l LogVol_name //同步新镜像副本中的分区,或者:syncg -p hdisk1 #rmlvcopy hd10opt 1 hdisk1 //删除hdisk1上的逻辑卷hd10opt的副本, 目前hdisk1上没有hd10opt的副本 #例1 start 将原始逻辑卷复制到另一物理卷,给逻辑卷做镜像 注意:要在并行卷组环境中成功完成此过程,必须在所有并行节点上安装 AIX 4.3.2 或后续版本 mklvcopy LogVol_name 2 new_PhysVol_name //使用以下命令在卷组的新物理卷上创建逻辑卷的镜像的副本 example: mklvcopy hd10opt 2 hdisk1 //在hdisk1上创建1个逻辑卷hd10opt的镜像副本,前提是hdisk1上必须有足够的空闲空间 //使用lslv -l hd10opt查看hd10opt分布在哪些物理磁盘上 # lslv -m hd10opt //使用lslv命令查看命令
执行
结果成功 hd10opt:/opt LP PP1 PV1 PP2 PV2 PP3 PV3 0001 0232 hdisk0 3370 hdisk1 0002 0297 hdisk0 3371 hdisk1 0003 0298 hdisk0 3372 hdisk1 syncvg -l LogVol_name //使用以下命令同步新镜像副本中的分区 syncvg -l hd10opt rmlvcopy LogVol_name 1 old_PhysVol_name //使用以下命令从物理卷除去逻辑卷的副本 rmlvcopy hd10opt 1 hdisk1 //删除hdisk1上的逻辑卷hd10opt的副本 此时,原始逻辑卷副本可用 #例1 end #例2 start 更改逻辑卷名称 umount /FSNAME //取出逻辑卷对应的文件系统 chlv -n NewLVName OldLVName //重命名逻辑卷 mount /FSNAME //重新挂接逻辑卷对应的文件系统 #例2 end ## mklvcopy end //删除逻辑卷 rmlv -f lvtest ****** 逻辑卷管理end ****** 卷组管理start #mkvg -t 16 -s 4 -y vgdata hdisk2 //在hdisk2上创建卷组vgdata //-t 16: 指定系数factor=16, 每个PV中PP的个数限制 //-s 4: 指定物理分区大小PP SIZE=4MB //必须满足要求: factor×PP SIZE×1016≥hdisk2 //上式结果:16×4M×1016=65024M, 即hdisk2空间必须小于65024M, 若不小则需调整factor和PP SIZE #mkvg -y myvg -d 10 -s 8 hdisk1 hdisk5 //-d: 该vg最多容纳10个pv //-s: 设置pp的大小 //-y: 新vg的名称 #varyonvg vgdata //激活卷组vgdata #varyoffvg vgdata //去激活卷组vgdata #exportvg testvg //若smcp2上已经有testvg的信息, 则先删除原有信息(exportvg), 再引入新信息(importvg) #importvg -y vgsmp hdisk2 //将vgsmp信息引入hdisk2 #chvg -u rootvg //将锁定的卷组解锁 #chvg -ay VGname //使卷组可以自动激活 #chvg -an VGname //取消卷组自动激活 ###lsvg start #lsvg -p rootvg //列出卷族rootvg包含的物理卷信息和状态 rootvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk0 active 537 0 00..00..00..00..00 hdisk1 active 8750 3822 1750..877..00..00..1195 #lsvg -o //查询所有处于激活状态的卷组 #lsvg //显示存在的vg Usage: lsvg [-o] [[-L] -n PVname] Lists the characteristics of a volume group. #lsvg rootvg //显示rootvg信息 VOLUME GROUP: rootvg VG IDENTIFIER: 00009856b3996546 VG STATE: active PP SIZE: 8 megabyte(s) VG PERMISSION: read/write TOTAL PPs: 537 (4296 megabytes) MAX LVs: 256 FREE PPs: 3 (24 megabytes) LVs: 9 USED PPs: 534 (4272 megabytes) OPEN LVs: 8 QUORUM: 2 TOTAL PVs: 1 VG DESCRIPTORS: 2 STALE PVs: 0 STALE PPs: 0 ACTIVE PVs: 1 AUTO ON: yes MAX PPs per PV: 1016 MAX PVs: 32 //MAX PVs项有3种选择: 32表示常规;128表示大容量;1024表示可扩展卷组 # lsvg -L testvg //显示卷组testvg的详细信息 VOLUME GROUP: testvg VG IDENTIFIER: 0008516600004c000000010534b4151f VG STATE: active PP SIZE: 8 megabyte(s) VG PERMISSION: read/write TOTAL PPs: 537 (4296 megabytes) MAX LVs: 256 FREE PPs: 24 (192 megabytes) LVs: 2 USED PPs: 513 (4104 megabytes) OPEN LVs: 2 QUORUM: 2 TOTAL PVs: 1 VG DESCRIPTORS: 2 STALE PVs: 0 STALE PPs: 0 ACTIVE PVs: 1 AUTO ON: yes MAX PPs per PV: 1016 MAX PVs: 32 LTG size: 128 kilobyte(s) AUTO SYNC: no HOT SPARE: no #lsvg -l rootvg //查看vg中的逻辑卷的信息, 确认逻辑卷是否镜像 rootvg: LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT hd5 boot 1 1 1 closed/syncd N/A ->此处显示1个lp对应1个pp, 说明lv没有做镜像 hd6 paging 64 64 1 open/syncd N/A hd8 jfslog 1 1 1 open/syncd N/A hd4 jfs 2 2 1 open/syncd / hd2 jfs 458 458 1 open/syncd /usr hd9var jfs 2 2 1 open/syncd /var hd3 jfs 60 60 2 open/syncd /tmp hd5 boot 1 2 2 closed/syncd N/A ->如果逻辑卷做过镜像, 则1个LP对应2个PP hd6 paging 4 8 2 open/syncd N/A hd8 jfslog 1 2 2 open/syncd N/A #lsvg -p rootvg //查看rootvg中的物理卷信息和状态 rootvg: PV_NAME PV STATE TOTAL PPs FREE PPs FREE DISTRIBUTION hdisk0 active 546 463 109..65..71..109..109 hdisk1 active 546 476 109..78..71..109..109 ###lsvg end ##将名为hdisk3的pv加入datavg中 extendvg -f datavg hdisk3 ##缩小卷组大小;-d:表示在删除pv的时候先删除其中的lv及相关数据;-f 表示强行删除, 不需确认 reducevg -df 'datavg' 'hdisk3' ### mirrorvg start mirrorvg->创建卷组镜像 Usage: mirrorvg [-S | -s] [-Q] [-c Copies] [-m] VGname [PVname...]镜像卷组 例子: #mirrorvg rootvg //镜像rootvg #mirrorvg -c 3 workvg //镜像workvg, 设置3个副本 #mirrorvg -S -c 3 workvg //背景中同步创建的镜像 #mirrorvg -m datavg hdisk2 hdisk3 //创建一个精确映射的卷组 #mirrorvg -m rootvg hdisk11 //在hdisk11上创建rootvg的镜像, hdisk11属于rootvg #smit mirrorvg //卷组镜像 ##制作rootvg卷组镜像 环境:rootvg包含在hdisk01中,镜像制作到hdisk11的磁盘中,以下为具体步骤: 检查hdisk11是否可设为引导设备,若此命令返回值是1, 表示hdisk11可以由AIX引导, 其他返回值表示hdisk11不是rootvg制作镜像的候选 bootinfo -B hdisk11 扩展rootvg以包含hdisk11 extendvg rootvg hdisk11 mirrorvg -m rootvg hdisk11 //使用精确映射选项制作rootvg镜像 bosboot -a //创建固定磁盘(此该磁盘引导系统)上的缺省引导逻辑卷上的引导印象 //bosboot -ad hdisk1, 在hdisk1上创建boot image, hdisk1就可以做为引导盘 bootlist -m normal hdisk01 hdisk11 //设置主机中系统的引导顺序依次为:hdisk01,hdisk11 bootlist -m normal -o //查询系统引导顺序 ### mirrorvg end ******卷组管理end ****** 文件系统start #列示文件系统 smit fs #列示文件系统, /etc/filesystems文件中包含的文件系统和相关逻辑卷信息 lsfs name Nodename Mount Pt VFS Size Options Auto Accounting /dev/hd4 -- / jfs 32768 -- yes no /dev/hd1 -- /home jfs 16384 -- yes no /dev/hd2 -- /usr jfs 7503872 -- yes no /dev/hd9var -- /var jfs 32768 -- yes no /dev/hd3 -- /tmp jfs 950272 -- yes no /proc -- /proc procfs -- -- yes no /dev/hd10opt -- /opt jfs 49152 -- yes no /dev/lv00 -- /oracle jfs 65536000 rw yes no /dev/lv
informix
-- /
informix
jfs 11386880 rw yes no /dev/cd0 -- /cdrom cdrfs -- ro yes no //列示已安装的文件系统 mount node mounted mounted over vfs date options -------- --------------- --------------- ------ ------------ --------------- /dev/hd4 / jfs Jan 25 10:14 rw,log=/dev/hd8 /dev/hd2 /usr jfs Jan 25 10:14 rw,log=/dev/hd8 /dev/hd9var /var jfs Jan 25 10:14 rw,log=/dev/hd8 /dev/hd3 /tmp jfs Jan 25 10:15 rw,log=/dev/hd8 /dev/hd1 /home jfs Jan 25 10:16 rw,log=/dev/hd8 /proc /proc procfs Jan 25 10:16 rw /dev/hd10opt /opt jfs Jan 25 10:16 rw,log=/dev/hd8 /dev/lv00 /oracle jfs Jan 25 10:16 rw,log=/dev/hd8 /dev/lv
informix
/
informix
jfs Jan 25 10:16 rw,log=/dev/hd8 //文件系统参数 -g vgname //为文件系统指定卷组 -m mountpoint //文件系统挂接点的目录名 -A yes|no //系统启动时是否自动挂接 -p rw|ro //安装的文件系统以只读(ro)或读写(rw)方式安装 //使文件系统碎片连续化 defragfs //验证文件系统内容 fsck >检查日志记录 >检查inodes间接数据块空闲表 >不指定文件系统时检查/etc/filesystems文件中标记为check=true的所有文件系统 >错误记录存放在/lost+found >参数说明: -p: 验证文件系统的过程只会引起极少变动,不会影响其他用户工作 -y、-n: 选项用来指定对系统提问的回答 -y: 选项通常用来修改损坏的文件系统,允许删除一些损坏的文件 //需要控制增长的文件 /var/adm/wtmp /var/spool/*/* /smit.log /smit.script /etc/security/failedlogin /var/adm/sulog 上述文件增长很快,需要定期监看和清除,如果运行记帐系统,则可使这些文件定期清除. ******文件系统end ****** 网络管理start //主机名以及IP地址 /etc/hosts //管理域名
服务
器IP地址 /etc/resolv.con //管理多个基本网络
服务
/etc/inetd.conf //管理
服务
和端口的对应关系 /etc/services ###IBM小型机无法telnet和ftp,但可ping通,通常telnet或者ftp相关进程没有启动会出现上述故障,需要启动inetd进程(包括telnetd,ftpd子进程) startsrc -s inetd ###在IBM小型机网卡上配置别名IP AIX 5.3 通过smitty tcpip里的Further Configuration来实现配置别名IP,按照如下菜单操作: smitty tcpip -->Further Configuration-->Network Interface-->Network Interface Seletion-->Configure Aliases-->Add IPV4 Network Aliases 再选择你所要增加别名IP的网卡后,输入IP地址和掩码即可 ###看本机网卡详细信息时用 entstat -d 网卡名 ###修改网卡速率或网卡模式时用 smitty chgenet ###可以查看到网卡的速率等信息,或者entstat -d ent0 netstat -v ###查看机器的数据流量 netstat -p tcp ###查看网卡ent0的MAC地址 # lscfg -vl ent1 DEVICE LOCATION DESCRIPTION ent1 10-80 IBM 10/100 Mbps Ethernet PCI Adapter (23100020) Network Address.............006094E9322D Displayable Message.........PCI Ethernet Adapter (23100020) Device Specific.(YL)........P2/E1 ****** 网络管理end ### 查看ssa硬盘阵列硬盘状态,smit方式 start #smit ssaraid SSA RAID Arrays Move cursor to desired item and press Enter. List All Defined SSA RAID Arrays List All Supported SSA RAID Arrays List All SSA RAID Arrays Connected to a RAID Manager List Status Of All Defined SSA RAID Arrays List/Identify SSA Physical Disks List/Delete Old RAID Arrays Recorded in an SSA RAID Manager List Status of Hot Spare Pools List Status of Hot Spare Protection for an SSA RAID Array List Components in a Hot Spare Pool Add a Hot Spare Pool Add an SSA RAID Array Delete an SSA RAID Array Change/Show Attributes of an SSA RAID Array Change Member Disks in an SSA RAID Array Change/Show Use of an SSA Physical Disk Change Use of Multiple SSA Physical Disks Change/Show/Delete a Hot Spare Pool Array Copy Services 选择"List
informix
数据同步到mysql_如何对
Informix
数据库进行备份与还原?
Informix
-Online数据库因其具有高性能、高可靠性、支持数据完整性定义/检查等特性而得到广泛应用。对于使用中的数据库,数据备份的安全可靠性便成为人们关注的焦点。我们先来看一下
Informix
:数据库备份与还原:情景假设:最近在职场中遇到一个问题:移库将原来的A库的数据全部导入B库(典型的数据库备份还原)环境:
Informix
两条指令:dbexortdbimport准备:确保数据库无连接,...
Informix
1,195
社区成员
2,872
社区内容
发帖
与我相关
我的任务
Informix
其他数据库开发 Informix
复制链接
扫一扫
分享
社区描述
其他数据库开发 Informix
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章