??xml version="1.0" encoding="utf-8" standalone="yes"?> 9Q?nbsp; JSP的内|对象及Ҏ?br> request response response表示HttpServletResponse对象Qƈ提供了几个用于设|送回 out out 对象是javax.jsp.JspWriter的一个实例,q提供了几个Ҏ使你能用于向览器回送输出结果? pageContext application applicaton config page page表示从该面产生的一个servlet实例 13QEJB包括QSessionBean,EntityBeanQ说Z们的生命周期Q及如何理事务的? 14Q说出数据连接池的工作机制是什? 15同步和异步有和异同,在什么情况下分别使用他们QD例说明?/p>
16应用服务器有那些Q?/p>
17你所知道的集合类都有哪些Q主要方法? 18l你一?驱动E序A,数据源名UCؓB,用户名称为C,密码为D,数据库表为TQ请用JDBC索出表T的所有数据?/p>
19Q说出在JSP面里是怎么分页? 1. 存储q程和函数的区别 3. 游标的作用?如何知道游标已经C最后? JAVA面试题集(一) 当JAVAE序q反了JAVA的语义规则时QJAVA虚拟机就会将发生的错误表CZؓ一个异常。违反语义规则包?U情c一U是JAVAcd内置的语义检查。例如数l下标越?会引发IndexOutOfBoundsException;讉Knull的对象时会引发NullPointerException。另一U情况就是JAVA允许E序员扩展这U语义检查,E序员可以创q异常Qƈ自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子cR? 2. Java的接口和C++的虚cȝ相同和不同处? 3. 垃圾回收的优点和原理。ƈ考虑2U回收机制? Java语言中一个显著的特点是引入了垃圑֛收机Ӟ使c++E序员最头疼的内存管理的问题q刃而解Q它使得JavaE序员在~写E序的时候不再需要考虑内存理。由于有个垃圑֛收机ӞJava中的对象不再?作用?的概念,只有对象的引用才?作用?。垃圑֛收可以有效的防止内存泄露Q有效的使用可以使用的内存。垃圑֛收器通常是作Z个单独的低别的U程q行Q不可预知的情况下对内存堆中已经M的或者长旉没有使用的对象进行清楚和回收Q程序员不能实时的调用垃圑֛收器Ҏ个对象或所有对象进行垃圑֛收。回收机制有分代复制垃圾回收和标记垃圑֛Ӟ增量垃圾回收? 4. 误Z所知道的线E同步的Ҏ? sleep():使一个正在运行的U程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常? notify():唤醒一个处于等待状态的U程Q注意的是在调用此方法的时候,q不能确切的唤醒某一个等待状态的U程Q而是由JVM定唤醒哪个U程Q而且不是按优先? Allnotity():唤醒所有处入等待状态的U程Q注意ƈ不是l所有唤醒线E一个对象的锁,而是让它们竞争? 5. 误一讲析构函数和虚函数的用法和作用? 12Q谈谈final, finally, finalize的区别? finalize?Ҏ名。Java 技术允怋?finalize() 匿名的内部类是没有名字的内部cR不能extends(l承) 其它c,但一个内部类可以作ؓ一个接口,由另一个内部类实现? 14QStatic Nested Class ?Inner Class的不同,说得多好(面试题有的很W统)? Nested Class Q一般是C++的说法)QInner Class 15QHashMap和Hashtable的区别? 16QCollection ?Collections的区别? 17Q什么时候用assert?
]]>
]]>
]]>
Q五象广场,西南地标地王Q金湖\55P亚航财富中心Q中国移动GX分公司大|HW-GXBI目l,新闻大厦Q?005Q?003Q?302Q凤\Q检察院家属|29Q?4Q?Q?3路共驾R?
]]>
[转蝲]华ؓ的java面试?br> 信息来源QJR
JAVA斚w
1 面向对象的特征有哪些斚w
2 String是最基本的数据类型吗?
3 int ?Integer 有什么区?br> 4 String 和StringBuffer的区?br> 5q行时异怸一般异常有何异同?
异常表示E序q行q程中可能出现的非正常状态,q行时异常表C拟机的通常操作中可能遇到的异常Q是一U常见运行错误。java~译器要求方法必d明抛出可能发生的非运行时异常Q但是ƈ不要求必d明抛出未被捕Lq行时异常?br> 6 说出一些常用的c,?接口Q请各D5?br> 7 说出ArrayList,Vector, ArrayLlinkedListd的存储性能和特?br> ArrayList和Vector都是使用数组方式存储数据Q此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素Q但是插入元素要涉及数组元素Ud{内存操作,所以烦引数据快而插入数据慢QVector׃使用了synchronizedҎQ线E安全)Q通常性能上较ArrayList差,而LinkedList使用双向链表实现存储Q按序号索引数据需要进行前向或后向遍历Q但是插入数据时只需要记录本的前后即可,所以插入速度较快?br> 8设计4个线E,其中两个U程每次对j增加1Q另外两个线E对j每次减少1。写出程序?br> 以下E序使用内部cd现线E,对j增减的时候没有考虑序问题?br> 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();
}
}
}
}
request表示HttpServletRequest对象。它包含了有x览器h的信息,q且提供了几个用于获取cookie,
header, 和session数据的有用的Ҏ?
览器的响应的方法(如cookies,头信息等Q?
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各U范围的名字I间、servlet相关的对象的APIQƈ且包装了通用的servlet相关功能的方法?
session
session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信?
表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信?
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数?
10.用socket通讯写出客户端和服务器端的通讯Q要求客户发送数据后能够回显相同的数据?br> 参见评中socket通讯例子?br> 11说出Servlet的生命周期,q说出Servlet和CGI的区别?br> Servlet被服务器实例化后Q容器运行其initҎQ请求到达时q行其serviceҎQserviceҎ自动zNq行与请求对应的doXXXҎQdoGetQdoPostQ等Q当服务器决定将实例销毁的时候调用其destroyҎ?br> 与cgi的区别在于servlet处于服务器进E中Q它通过多线E方式运行其serviceҎQ一个实例可以服务于多个hQƈ且其实例一般不会销毁,而CGIҎ个请求都产生新的q程Q服务完成后销毁,所以效率上低于servlet?br> 12.EJB是基于哪些技术实现的?q说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别?/p>
面需要保存以下参敎ͼ
总行敎ͼҎsql语句得到总行?br> 每页昄行数Q设定?br> 当前|Q请求参?br> 面Ҏ当前|和每行数计出当前늬一行行敎ͼ定位l果集到此行Q对l果集取出每|C数的行即可?/p>
数据库方面:
存储q程是用户定义的一pdsql语句的集合,涉及特定表或其它对象的Q务,用户可以调用存储q程Q而函数通常是数据库已定义的ҎQ它接收参数q返回某U类型的值ƈ且不涉及特定用户表?br> 2. 事务是什么?
事务是作Z个逻辑单元执行的一pd操作Q一个逻辑工作单元必须有四个属性,UCؓ
ACIDQ原子性、一致性、隔L和持久性)属性,只有q样才能成ؓ一个事务:
原子?br> 事务必须是原子工作单元;对于其数据修改,要么全都执行Q要么全都不执行?br> 一致?br> 事务在完成时Q必M所有的数据都保持一致状态。在相关数据库中Q所有规则都必须应用于事务的修改Q以保持所有数据的完整性。事务结束时Q所有的内部数据l构Q如
B 树烦引或双向链表Q都必须是正的?br> 隔离?br> 由ƈ发事务所作的修改必须与Q何其它ƈ发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一q发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这UCؓ可串行性,因ؓ它能够重新装载v始数据,q且重播一pd事务Q以使数据结束时的状态与原始事务执行的状态相同?br> 持久?br> 事务完成之后Q它对于pȝ的媄响是怹性的。该修改即出现pȝ故障也将一直保持?/p>
游标用于定位l果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否C最后,通常此变量不{于0表示出错或到了最后?br> 4. 触发器分Z前触发和事后触发Q这两种触发有和区别。语句触发和行U触发有何区别?br> 事前触发器运行于触发事g发生之前Q而事后触发器q行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段倹{?br> 语句U触发器可以在语句执行前或后执行Q而行U触发在触发器所影响的每一行触发一ơ?/p>
基础知识Q?
1.C++或Java中的异常处理机制的简单原理和应用?
׃Java不支持多l承Q而有可能某个cL对象要用分别在几个cL对象里面的方法或属性,现有的单l承机制׃能满求。与l承相比Q接口有更高的灵zL,因ؓ接口中没有Q何实C码。当一个类实现了接口以后,该类要实现接口里面所有的Ҏ和属性,q且接口里面的属性在默认状态下面都是public
static,所有方法默认情况下是public.一个类可以实现多个接口?
wait():使一个线E处于等待状态,q且释放所持有的对象的lock?
6. Error与Exception有什么区别?
Error表示pȝU的错误和程序不必处理的异常Q?
Exception表示需要捕捉或者需要程序进行处理的异常?
7. 在java中一个类被声明ؓfinalcdQ表CZ什么意思?
表示该类不能被承,是顶U类?
8. 描述一下你最常用的编E风根{?
9. heap和stack有什么区别?
栈是一U线形集合,其添加和删除元素的操作应在同一D完成。栈按照后进先出的方式进行处理?
堆是栈的一个组成元?
10. 如果pȝ要用超大整敎ͼ过long长度范围Q,请你设计一个数据结构来存储q种大型数字以及设计一U算法来实现大整数加法q算Q?
public class BigInt()
{
int[] ArrOne = new ArrOne[1000];
String intString="";
public int[] Arr(String s)
{
intString = s;
for(int i=0;i<ArrOne.leght;i++)
{
11. 如果要设计一个图形系l,请你设计基本的图形元?Point,Line,Rectangle,Triangle)的简单实?
final?修饰W(关键字)如果一个类被声明ؓfinalQ意味着它不能再z出新的子c,不能作ؓ父类被ѝ因此一个类不能既被声明?
abstract的,又被声明为final的。将变量或方法声明ؓfinalQ可以保证它们在使用中不被改变。被声明为final的变量必d声明时给定初|而在以后的引用中只能dQ不可修攏V被声明为final的方法也同样只能使用Q不能重载?
finally?再异常处理时提供 finally 块来执行M清除操作。如果抛Z个异常,那么相匹配的 catch
子句׃执行Q然后控制就会进?finally 块(如果有的话)?
Ҏ在垃圾收集器对象从内存中清除出M前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对q个对象调用的。它是在
Object cM定义的,因此所有的c都l承了它。子c覆?finalize()
Ҏ以整理系l资源或者执行其他清理工作。finalize() Ҏ是在垃圾攉器删除对象之前对q个对象调用的?
13QAnonymous Inner Class (匿名内部c?
是否可以extends(l承)其它c,是否可以implements(实现)interface(接口)?
(一般是JAVA的说?。Java内部cMC++嵌套cL大的不同在于是否有指向外部的引用上。具体可见http:
//www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类QInner
ClassQ意味着1创徏一个static内部cȝ对象Q不需要一个外部类对象Q?不能从一个static内部cȝ一个对象访问一个外部类对象
W四Q?amp;?amp;&的区别?
&是位q算W?amp;&是布逻辑q算W?
都属于Map接口的类Q实C惟一键映到特定的g?
HashMap cL有分cL者排序。它允许一?null 键和多个 null 倹{?
Hashtable cM?HashMapQ但是不允许 null 键和 null 倹{它也比 HashMap 慢,因ؓ它是同步的?
Collections是个java.util下的c,它包含有各种有关集合操作的静态方法?
Collection是个java.util下的接口Q它是各U集合结构的父接口?
断言是一个包含布表辑ּ的语句,在执行这个语句时假定该表辑ּ?true。如果表辑ּ计算?falseQ那么系l会报告一?
Assertionerror。它用于调试目的Q?
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两UŞ式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 应该L产生一个布倹{?
Expression2 可以是得Z个值的L表达式。这个值用于生成显C更多调试信息的 String 消息?
断言在默认情况下是禁用的。要在编译时启用断言Q需要?source 1.4 标记Q?
javac -source 1.4 Test.java
要在q行时启用断aQ可使用 -enableassertions 或?-ea 标记?
要在q行旉择用断言Q可使用 -da 或?-disableassertions 标记?
要系l类中启用断aQ可使用 -esa 或?-dsa 标记。还可以在包的基上启用或者禁用断a?
可以在预计正常情况下不会到达的Q何位|上攄断言。断a可以用于验证传递给U有Ҏ的参数。不q,断言不应该用于验证传递给公有Ҏ的参敎ͼ因ؓ不管是否启用了断aQ公有方法都必须查其参数。不q,既可以在公有Ҏ中,也可以在非公有方法中利用断言试后置条g。另外,断言不应该以M方式改变E序的状态?
18QGC是什? Z么要有GC? (基础)?
GC是垃圾收集器。Java E序员不用担心内存管理,因ؓ垃圾攉器会自动q行理。要h垃圾攉Q可以调用下面的Ҏ之一Q?
System.gc()
Runtime.getRuntime().gc()
19QString s = new String("xyz");创徏了几个String Object?
两个对象Q一个是"xyx",一个是指向"xyx"的引用对象s?
20QMath.round(11.5){於多少? Math.round(-11.5){於多少?
Math.round(11.5)q回QlongQ?2QMath.round(-11.5)q回QlongQ?11;
21Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 +
1;有错Qs1是short型,s1+1是int?不能昑ּ转化为short型。可修改为s1 =(short)(s1 + 1)
。short s1 = 1; s1 += 1正确?
22Qsleep() ?wait() 有什么区? 搞线E的最?
sleep()Ҏ是ɾU程停止一D|间的Ҏ。在sleep
旉间隔期满后,U程不一定立x复执行。这是因为在那个时刻Q其它线E可能正在运行而且没有被调度ؓ攑ּ执行Q除?a)"醒来"的线E具有更高的优先U?
(b)正在q行的线E因为其它原因而阻塞?
wait()是线E交互时Q如果线E对一个同步对象x
发出一个wait()调用Q该U程会暂停执行,被调对象q入{待状态,直到被唤醒或{待旉到?
23QJava有没有goto?
Goto?java中的保留字,现在没有在java中用?
24Q数l有没有length()q个Ҏ? String有没有length()q个ҎQ?
数组没有length()q个ҎQ有length的属性?
String有有length()q个Ҏ?
25QOverload和Override的区别。Overloaded的方法是否可以改变返回值的cd?
Ҏ的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父cM子类之间多态性的一U表玎ͼ重蝲Overloading是一个类中多态性的一U表现。如果在子类中定义某Ҏ与其父类有相同的名称和参敎ͼ我们说该Ҏ被重?
(Overriding)。子cȝ对象使用q个ҎӞ调用子cM的定义,对它而言Q父cM的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参C数或有不同的参数cdQ则UCؓҎ的重?Overloading)。Overloaded的方法是可以改变q回值的cd?
26QSet里的元素是不能重复的Q那么用什么方法来区分重复与否? 是用==q是equals()? 它们有何区别?
Set里的元素是不能重复的Q那么用iterator()Ҏ来区分重复与否。equals()是判M个Set是否相等?
equals()?=Ҏ军_引用值是否指向同一对象equals()在类中被覆盖Qؓ的是当两个分ȝ对象的内容和cd盔R的话Q返回真倹{?br>
]]>
创徏Q?005-10-27 22:04:48
作者:Unlinux
来自: http://www.Unlinux.com
最q在做一个客户关pȝ理系l,目做的C是非常成功,可还是学C不少的知识,׃数据量很大,没有专门的oracle数据库h员支持,Ҏ据库优化理{也只有我这个约懂一点的Z了。在Ҏ据库优化上有一点点心得写出来希望能同大家一起学习和交流?/p>
数据库大表的优化Q采用蔟表(clustered tablesQ及蔟烦引(Clustered IndexQ?br>蔟表和蔟索引是oracle所提供的一U技术,其基本思想是将几张h相同数据Vƈ且经常性一起用的表通过׃n数据块(data blockQ的模式存放在一赗各表间的共同字D作键|cluster keyQ,数据库在讉K数据Ӟ首先扑ֈ蔟键|以此同时获得若干张表的相x据。蔟表所能带来的好处是可以减I/O和减存储空_其中我更看重前者。采用表分区QpartitionQ?br>表分区技术是在超大型数据?VLDB)中将大表及其索引通过分区QpatitionQ的形式分割q较、可理的小块,q且每一分区可进一步划分ؓ更小的子分区Qsub partitionQ。而这U分区对于应用来说是透明的。通过对表q行分区Q可以获得以下的好处Q?br>1Q减数据损坏的可能性?br>2Q各分区可以独立备䆾和恢复,增强了数据库的可理性?br>3Q可以控制分区在盘上的分布Q以均衡IOQ改善了数据库的性能?br>蔟表与表分区技术的侧重点各有不同,前者侧重于改进兌表间查询的效率,而表分区侧重于大表的可管理性及局部查询的性能。而这两项对于我的pȝ来说都是极ؓ重要。由于本人技术限Ӟ目前不定两者是否可以同时实玎ͼ有那位在q方面有l验的给Ҏ导将不胜感激?
在两者无法同时实现的情况下,应依照需实现的功能有所取舍。综合两U模式的优缺点,我认为采用表分区技术较为适用于我们的应用?br>Oracle的表分区有以下几U类型:
1Q范围分区:表按某一字段或若q个字段的取D围分区?br>2Qhash分区Q将表按某一字段的值均匀地分布到若干个指定的分区?br>3Q复合分区:l合了前面两U分区类型的优点Q首先通过D围将表进行分区,然后以hash模式数据进一步均匀分配至物理存储位|?br>l合考虑各项因素Q以W三U类型最Z。(本h实在技术有限仅采用了第1U范围分区,因ؓ比较单,便于理Q?br>优化的具体步骤:
1Q确定需要优化分区的表:
l过对系l数据库表结构和字段Q应用程序的分析Q现在确定那些大表需要进行分区:
如帐户交易明l表acct_detail.
2Q确定表分区的方法和分区键:
分区cdQ采用范围分区?br>??键:
按trans_dateQ交易时_字段q行范围分区.
3Q确定分区键的分_及打分多少分区Q?br>如:帐户交易明细表acct_detail.
Ҏ字段Qtrans_dateQ分成一下分区:
1Q.分区1Q?9/01/2003
2Q.分区2Q?0/01/2003
3Q.分区3Q?1/01/2003
4Q.分区4Q?2/01/2003
5Q.分区5Q?1/01/2004
6Q.分区6Q?2/01/2004
该表明显需要在以后增加分区?br>4Q徏立分I间和分区烦引空?br>1)Q徏立表的各个分区的表空_
1Q分?Qcrm_detail_200309
CREATE TABLESPACE crm_detail_200309 DATAFILE
‘/u1/oradata/orcl/crm_detail_20030901.dbf’
SIZE 2000M EXTENT MANAGEMENT LOCAL UNIFORM size 16M;
其它月䆾以后同以上(我在此采用oracle的表I间本地理的方法)?/p>
2Q? 建立分区索引表空?br>1Q分?Qindex_detail_200309
CREATE TABLESPACE index_detail_200309 DATAFILE
‘/u3/oradata/orcl/index_detail_20030901.dbf’
SIZE 2000M EXTENT MANAGEMENT LOCAL UNIFORM size 16M;
5Q徏立基于分区的表:
create table table name
(
........
enable row movment --此语句是能修改行分区键|也就是如不添加该 句不能修改记录的分区键|不能使记录分U?br>PARTITION BY RANGE (TRANS_DATE)
(
PARTITION crm_detail_200309 VALUES LESS THAN
(TO_DATE (‘09/01/2003’,’mm/dd/yyyy’
TABLESPACE crm_detail_200309,
其他分区.....
;
6Q徏立基于分区的索引Q?br>create index index_name on table_name (分区?…)
global --q里是全局分区索引Q也可以建本地烦?br>PARTITION BY RANGE (TRANS_DATE)
(
PARTITION index_detail_200309 VALUES LESS THAN
(TO_DATE ('09/01/2003','mm/dd/yyyy' )
TABLESPACE index_detail_200309,
其他索引分区...
;
对表的分区就q样完成了,W一ơ主要确定表分区的分区策U是最重要的,可我觉得对表分区隑֜以后对表分区的管理上面,因ؓ随着数据量的增加Q表分区必然存在删除Q扩容,增加{。在q些q程中还牉|到全局{烦引,因ؓ对分q行ddl操作为破坏全局索引Q故全局索引必须在ddl后要?rebuild.
以上写的很ؕ也很差,希望大家多多谅解和指炏V?/p>
对一个大表进行分区操?/p>
一Q用分的前?/p>
以systemw䆾登陆数据库,查看 v$option 视图Q如果其?Partitioning 为TRUEQ则支持分区功能Q?br>select value from v$option where parameter='Partitioning';
否则不支持?/p>
二:使用分区表的背景
目前有一个大?T_MPN_OUTDATE表,有记?8千万 条,查询速度比较慢,Z优化惛_成一个分Q按照范围分区,q个表的happen_time字段最合适,因ؓ它是按照旉来区分的Q目前的数据是从今年5月䆾到现在(9月䆾Q。不q这个字D虽然是8位的Q但是里面的记录可能有的?位的到月的记录?/p>
q个表的l构和烦引情况如?br>CREATE TABLE sms.t_mpn_outdate
(
mobile VARCHAR2 (11)
, happen_time VARCHAR2 (8)
, prov VARCHAR2 (5)
, state NUMBER
)
ORGANIZATION HEAP
NOMONITORING
PARALLEL
(
DEGREE 1
INSTANCES 1
)
NOCACHE
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE
(
INITIAL 131072
NEXT 131072
MINEXTENTS 1
MAXEXTENTS unlimited
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL default
)
LOGGING
TABLESPACE users
;
CREATE INDEX sms.idx_t_mpn_outdate ON sms.t_mpn_outdate
(
mobile
)
PARALLEL
(
DEGREE 1
INSTANCES 1
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE
(
INITIAL 131072
NEXT 131072
MINEXTENTS 1
MAXEXTENTS unlimited
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL default
)
LOGGING
TABLESPACE users
;
三:步骤
1、查看本地硬盘的I间q有多少QUSERS表空间容量是多少Q查看需要分区的表的占用I间是多?/p>
查看users表空间的定w
select
b.tablespace_name ,
(b.bytes)/(1024*1024) content ,
(b.bytes-sum(nvl(a.bytes,0)))/(1024*1024) used,
sum(nvl(a.bytes,0))/(1024*1024) remain
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id and b.tablespace_name = 'USERS'
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id;
TABLESPACE_NAME CONTENT USED REMAIN
------------------------------ ---------- ---------- ----------
USERS 22.5 21.5078125 .9921875
查看本地 t_mpn_outdate 表占用空间的大小
select segment_name,bytes/(1024*1024) as content from user_segments where segment_name='T_MPN_OUTDATE';
SEGMENT_NAME CONTENT
----------------------------------------------------
T_MPN_OUTDATE .125
查看索引占用的空间大?br>select segment_name,bytes/(1024*1024) as content from user_segments where segment_name='IDX_T_MPN_OUTDATE';
SEGMENT_NAME CONTENT
----------------------------------------------------
IDX_T_MPN_OUTDATE .125
查看本地盘下面是否_容纳表和表烦引的大小
(?
然后以system w䆾创徏独立的表I间(大小可以Ҏ数据量的多少而定Q\径根据实际情况而定)Q我做实验的例子是同一个表I间Q没有用独立的表空间。徏立表I间的相关的语法?/p>
create tablespace happen_time_200405 datafile '/home/oradata/oradata/test/happen_time_200405.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);
create tablespace happen_time_200406 datafile '/home/oradata/oradata/test/happen_time_200406.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);
create tablespace happen_time_200407 datafile '/home/oradata/oradata/test/happen_time_200407.dbf' size 50M default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);
=====================================================
Ҏ一
2、基于旧表创Z个新?q一步对原来的表可能会有影响Q最好放在晚上做)
set timing on
set time on
CREATE TABLE T_MPN_OUTDATE2
PARTITION BY RANGE (happen_time)
( PARTITION happen_time_200405
VALUES LESS THAN ('200406')
TABLESPACE users,
PARTITION happen_time_200406
VALUES LESS THAN ('200407')
TABLESPACE users ,
PARTITION happen_time_200407
VALUES LESS THAN ('200408')
TABLESPACE users ,
PARTITION happen_time_200408
VALUES LESS THAN ('200409')
TABLESPACE users ,
PARTITION happen_time_200409
VALUES LESS THAN ('200410')
TABLESPACE users
)
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE
(
INITIAL 131072
NEXT 131072
MINEXTENTS 1
MAXEXTENTS unlimited
PCTINCREASE 0
FREELISTS 3
FREELIST GROUPS 1
BUFFER_POOL default
)
LOGGING
AS SELECT * FROM T_MPN_OUTDATE;
注意Qfreelists 参数我修改ؓ3Q因个表有很多insert操作Q加大这个参数对性能有优化作用?/p>
看看插入记录是否成功
select * from T_MPN_OUTDATE2 where rownum < 90;
选择其中的一个分?br>select * from T_MPN_OUTDATE2 partition (happen_time_200409) where rownum < 90;
3、新旧两个表改名Uͼ旉需要测试一下)
先测试改一个表的名U需要多时_把这个时间加倍就是系l对前端E序没有反应的时间?br>set timing on
set time on
RENAME T_MPN_OUTDATE2 TO T_MPN_OUTDATE3;
然后再正式修改后面两个表Q这旉是pȝ对前端程序没有反应的旉?br>RENAME T_MPN_OUTDATE TO T_MPN_OUTDATE2;
RENAME T_MPN_OUTDATE3 TO T_MPN_OUTDATE;
Ҏ一l束Q下面l步?
=====================================================
Ҏ?br>2 、用EXPORT工具把旧数据备䆾?T_MPN_OUTDATE.DMP中;用户名密码和保存路径需要按照实际情况修改一?br>exp sms/sms file=c:aaT_MPN_OUTDATE.DMP tables=T_MPN_OUTDATE
原来的旧表改名,从这个时候vQ数据库对前端E序没有反应?br>alter table t_mpn_outdate rename to t_mpn_outdate_old2 nowait;
?sms w䆾创徏分区的表
CREATE TABLE sms.t_mpn_outdate
(
mobile VARCHAR2 (11)
, happen_time VARCHAR2 (8)
, prov VARCHAR2 (5)
, state NUMBER )
PARTITION BY RANGE (happen_time)
( PARTITION happen_time_200405
VALUES LESS THAN ('200406')
TABLESPACE users,
PARTITION happen_time_200406
VALUES LESS THAN ('200407')
TABLESPACE users ,
PARTITION happen_time_200407
VALUES LESS THAN ('200408')
TABLESPACE users ,
PARTITION happen_time_200408
VALUES LESS THAN ('200409')
TABLESPACE users ,
PARTITION happen_time_200409
VALUES LESS THAN ('200410')
)
PCTUSED 40
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE
(
INITIAL 131072
NEXT 131072
MINEXTENTS 1
MAXEXTENTS unlimited
PCTINCREASE 0
FREELISTS 3
FREELIST GROUPS 1
BUFFER_POOL default
)
LOGGING
TABLESPACE users
;
IMPORT导入数据Q参数ignore=y
%imp sms/sms file=c:aaT_MPN_OUTDATE.DMP tables=(t_mpn_outdate) commit=y buffer=10240000 ignore=y
Ҏ二结束,下面l箋步骤4
=====================================================
注意Q系l修改表名的时候必需没有其他的事务对表进行操作,否则修改表名U的时候如果有未提交的事务Q报?br>ERROR 位于W?1 ?
ORA-00054: 资源正忙Q要求指?NOWAIT
如果加上了nowait选项Q又会报?br>ERROR 位于W?1 ?
ORA-14048: 分区l护操作不可以与其它操作l合
最好是关闭数据库重新启动的时候进入restrictq程?br>=====================================================
4、写SQL语句把第三步中遗漏的数据补充到新表中?br>q一步的原理是重新把最q的一个月的记录插入到分区表中Q然后再删除重复的记录,所以徏议创建分的时候最好在某个月的月初做,按照本例Q最好是?月上旬做分区Q这栯录数q不是很多?/p>
先徏立一个时表?月䆾所有的记录都包?br>create table T_MPN_OUTDATE_TMP as select * from T_MPN_OUTDATE2 where happen_time like '200409%' ;
把这个表的记录插入到分区?br>insert into T_MPN_OUTDATE select * from T_MPN_OUTDATE_TMP;
删除临时?br>drop table T_MPN_OUTDATE_TMP ;
把分?月䆾相同的记录删掉?br>DELETE FROM T_MPN_OUTDATE partition (happen_time_200409) E
WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM T_MPN_OUTDATE partition (happen_time_200409) x
WHERE X.mobile = E.mobile
and X.happen_time = E.happen_time
and X.prov = E.prov
and X.state = E.state
);
5、徏立烦?br>CREATE INDEX sms.idx_t_mpn_outdate_partition2 ON sms.t_mpn_outdate
(
mobile
)
PARALLEL
(
DEGREE 1
INSTANCES 1
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE
(
INITIAL 131072
NEXT 131072
MINEXTENTS 1
MAXEXTENTS unlimited
PCTINCREASE 0
FREELISTS 3
FREELIST GROUPS 1
BUFFER_POOL default
)
LOGGING
LOCAL
TABLESPACE users
;
备注Q烦引加local选项Q否则truncate分区Q烦引将失效Q所有用到烦引的查询都无法进行?br> 另外 freelists 参数我修改ؓ3Q因个表有很多insert操作Q加大这个参数对性能有优化作用?/p>
6、分的相关维护操?br>1)分区表的扩容Q?/p>
C2004 q?0月䆾Q徏立新的表I间Q?或者仍然用原来的USER表空?q一步就不需要了)
create tablespace happen_time_200405 datafile '/home/oradata/oradata/test/happen_time_200405.dbf' size 50m default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);
d新分区和表空_
alter table T_MPN_OUTDATE add partition happen_time_200410
VALUES LESS THAN ('200411')
tablespace users
storage(initial 100k next 100k minextents 1 maxextents unlimited pctincrease 0);
2)删除不必要的分区
?004q?5月的数据备䆾Q备份方法见 3)EXPORT 分区Q,?004q?5月的分区删除?br>alter table T_MPN_OUTDATE drop PARTITION happen_time_200405;
删除物理文g
%rm /home/oradata/oradata/test/happen_time_200405.dbf
3)EXPORT 分区Q?/p>
% exp sms/sms tables=T_MPN_OUTDATE:happen_time_200405 rows=Y file=c:aahappen_time_200405.dmp
4)IMPORT分区Q?/p>
例如用户要查?004q?5月的数据Q先创徏表空?/p>
create tablespace happen_time_200405 datafile '/home/oradata/oradata/test/happen_time_200405.dbf' size 50m default storage (initial 100k next 100k minextents 1 maxextents unlimited pctincrease 1);
再导入数?br>%imp sms/sms file=c:aahappen_time_200405.dmp tables=(T_MPN_OUTDATE:happen_time_200405) ignore=y
(说明Q如果不指明导入的分区,imp会自动按分区定义的范围装载数?
5)查看分区信息Q?
DBA要查看表的分Z息,可查看数据字典USER_EXTENTS,操作如下Q?
SELECT * FROM user_extents WHERE SEGMENT_NAME='T_MPN_OUTDATE';
感谢yangtingkun版主、pingshx?ZALBB、Fenng{网友的支持
备注Q如果是9iR2版本可以?在线表格重定?技术实现这个功能。不用常规方法(8i以前的方法)了?/p>
1Qspring代理如何实现Qspring的监听如何实玎ͼspring与jms的用?/p>
2QOSCACHE、ENCACHE的配|?/p>
3QMYSQL相关技?/p>
4QHQL查询Q返回结果是什么?举例一个HQL查询语句
5Qhibernate的filter如何使用
6Q公叔R两台电脑的SVNq接不上LQ可能是什么原?/p>
7QSPRING使用q哪些技术,单谈?/p>
8Q开发思想和经验的ȝ体会
9Qsmartupload文g上传Q服务器卡死的原?/p>
10QSOCKET的XML大文仉讯性能的了?/p>
11QAJAX用过哪些技术,单实现流E?/p>
12Qjava与c++之间的socket通讯字节如何处?/p>
13Q对数据库设计流E图的理?/p>
14Q谈谈以前如何用UML设计
15Q谈谈关于权限设计及法