??xml version="1.0" encoding="utf-8" standalone="yes"?>亚州av中文字幕在线免费观看,亚洲肉体裸体xxxx137,免费观看在线色综合http://www.aygfsteel.com/wx886104/category/34073.htmlzh-cnWed, 21 Dec 2011 21:07:02 GMTWed, 21 Dec 2011 21:07:02 GMT60win7?4位下PL/SQL Developerq接q程oracle数据??补充)http://www.aygfsteel.com/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Wed, 21 Dec 2011 02:59:00 GMThttp://www.aygfsteel.com/wx886104/archive/2011/12/21/instantclient_oracle_plsql.htmlhttp://www.aygfsteel.com/wx886104/comments/366914.htmlhttp://www.aygfsteel.com/wx886104/archive/2011/12/21/instantclient_oracle_plsql.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/366914.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/366914.html阅读全文

]]>
Oracle的rownum原理和??http://www.aygfsteel.com/wx886104/archive/2008/12/13/246109.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Sat, 13 Dec 2008 03:58:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/12/13/246109.htmlhttp://www.aygfsteel.com/wx886104/comments/246109.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/12/13/246109.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/246109.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/246109.html 关键? oracle的rownum原理和?/strong>
Oracle的rownum原理和?
在Oracle中,要按特定条g查询前N条记录,用个rownum搞定了?
select * from emp where rownum <= 5
而且书上也告诫,不能对rownum?>"Q这也就意味着Q如果你想用
select * from emp where rownum > 5
则是p|的。要知道Z么会p|Q则需要了解rownum背后的机Ӟ
1 Oracle executes your query.

2 Oracle fetches the first row and calls it row number 1.

3 Have we gotten past row number meets the criteria? If no, then Oracle discards the row, If yes, then Oracle return the row.

4 Oracle fetches the next row and advances the row number (to 2, and then to 3, and then to 4, and so forth).

5 Go to step 3.

了解了原理,q道rownum>不会成功Q因为在W三步的时候查询出的行已经被丢弃,W四步查出来的rownum仍然?,q样永远也不会成功?

同样道理Qrownum如果单独?,也只有在rownum=1时才有用?



对于rownum来说它是oraclepȝ序分配Z查询q回的行的编Pq回的第一行分配的?Q第二行?Q依此类推,q个伪字D可以用于限制查询返回的总行敎ͼ而且rownum不能以Q何表的名UC为前~?
举例说明Q?
例如表:student(学生)表,表结构ؓQ?
ID       char(6)      --学号
name    VARCHAR2(10)   --姓名
create table student (ID char(6), name VARCHAR2(100));
insert into sale values('200001',‘张一’);
insert into sale values('200002',‘王二’);
insert into sale values('200003',‘李三’);
insert into sale values('200004',‘赵四’);
commit;
(1) rownum 对于{于某值的查询条g
如果希望扑ֈ学生表中W一条学生的信息Q可以用rownum=1作ؓ条g。但是想扑ֈ学生表中W二条学生的信息Q用rownum=2l果查不到数据。因为rownum都是?开始,但是1以上的自然数在rownum做等于判断是时认为都是false条gQ所以无法查到rownum = nQn>1的自然数Q?
SQL> select rownum,id,name from student where rownum=1;Q可以用在限制返回记录条数的地方Q保证不出错Q如Q隐式游标)
SQL> select rownum,id,name from student where rownum=1;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
         1 200001 张一
SQL> select rownum,id,name from student where rownum =2;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
Q?Qrownum对于大于某值的查询条g
   如果xCW二行记录以后的记录Q当使用rownum>2是查不出记录的,原因是由于rownum是一个L?开始的伪列QOracle 认ؓrownum> n(n>1的自然数)q种条g依旧不成立,所以查不到记录
SQL> select rownum,id,name from student where rownum >2;
ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
那如何才能找到第二行以后的记录呀。可以用以下的子查询方法来解决。注意子查询中的rownum必须要有别名Q否则还是不会查录来Q这是因为rownum不是某个表的列,如果不v别名的话Q无法知道rownum是子查询的列q是L询的列?
SQL>select * from(select rownum no ,id,name from student) where no>2;
        NO ID     NAME
---------- ------ ---------------------------------------------------
         3 200003 李三
         4 200004 赵四
SQL> select * from(select rownum,id,name from student)where rownum>2;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
Q?Qrownum对于于某值的查询条g
如果x到第三条记录以前的记录,当用rownum<3是能得到两条记录的。显然rownum对于rownum<nQ?n>1的自然数Q的条g认ؓ是成立的Q所以可以找到记录?
SQL> select rownum,id,name from student where rownum <3;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
1 200001 张一
        2 200002 王二
lg几种情况Q可能有时候需要查询rownum在某区间的数据,那怎么办呀从上可以看出rownum对小于某值的查询条g是h为true的,rownum对于大于某值的查询条g直接认ؓ是false的,但是可以间接的让它{为是true的。那必M用子查询。例如要查询rownum在第二行到第三行之间的数据,包括W二行和W三行数据,那么我们只能写以下语句,先让它返回小于等于三的记录行Q然后在L询中判断新的rownum的别名列大于{于二的记录行。但是这L操作会在大数据集中媄响速度?
SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
        NO ID     NAME
---------- ------ ---------------------------------------------------
         2 200002 王二
         3 200003 李三
Q?Qrownum和排?
Oracle中的rownum的是在取数据的时候生的序号Q所以想Ҏ定排序的数据L定的rowmun行数据就必须注意了?
SQL> select rownum ,id,name from student order by name;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
         3 200003 李三
         2 200002 王二
         1 200001 张一
         4 200004 赵四
可以看出Qrownumq不是按照name列来生成的序受系l是按照记录插入时的序l记录排的号Qrowid也是序分配的。ؓ了解册个问题,必须使用子查?
SQL> select rownum ,id,name from (select * from student order by name);
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
         1 200003 李三
         2 200002 王二
         3 200001 张一
         4 200004 赵四
q样成了按name排序Qƈ且用rownum标出正确序号Q有到大)


]]>
ORACLE PL/SQL使用l验ȝ(攉)http://www.aygfsteel.com/wx886104/archive/2008/11/11/239949.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Tue, 11 Nov 2008 13:18:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/11/239949.htmlhttp://www.aygfsteel.com/wx886104/comments/239949.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/11/239949.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/239949.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/239949.html

]]>
oracle如何建立一个新Ҏhttp://www.aygfsteel.com/wx886104/archive/2008/11/08/239410.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Sat, 08 Nov 2008 07:00:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/08/239410.htmlhttp://www.aygfsteel.com/wx886104/comments/239410.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/08/239410.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/239410.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/239410.html  
2.在企业管理器-存储-表空间中创徏2个新的表I间,一个设为永久空?一个设Z时空?
 
3.双击用户test,l其讑֮怹I间和时空?对应上一步创建的2个空?
 
4.此时,在方案中q没有出现testҎ,只需在Q意方案下叛_,创徏一个新?在方案下拉列表中׃出现testҎ,创徏表成功后,h一?可以看到新的方案test?

转自  http://blog.tom.com/netmax2008/article/942.html

]]>
oracle语句攉http://www.aygfsteel.com/wx886104/archive/2008/11/07/239158.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Fri, 07 Nov 2008 01:34:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/07/239158.htmlhttp://www.aygfsteel.com/wx886104/comments/239158.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/07/239158.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/239158.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/239158.html
查看当前用户每个表占用空间的大小Q?br />     Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

查看每个表空间占用空间的大小Q?br />     Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name
-------------------------------------------------------------------------------------------------------------
查询Oralce中某个用h多少个存储过E?br /> select distinct name from user_source where type='PROCEDURE';
select distinct name from dba_source where type='PROCEDURE' and owner='XG_TEST';
-------------------------------------------------------------------------------------------------------------
oracle的用心?



1、DDL(Data Definition Language) Command
   create,alter,drop objects;
   grant,revoke privileges and roles;
   establishing auditing options;
   add comments to the data dictionary;
   Before and after each DDL statement,Oracle implicitly commit the current transactions.

2、DML(Data Manipulation Language) Command
   Query and Modify data within existing schema objects;
   DML statements consist of DELETE,INSERT,SELECT and UPDATE statements;
                        EXPLAIN PLAN statements;
                        LOCK TABLE statements;
   Unlike DDL Command , a commit is not implicit , after execute DDL Command ,must execute commit command    to commit a transaction;

3、Dynamic Performance Tables
   These tables are created at the instance startup and used to store information about the performance    of the instance. This information includes connection informatioion,I/OS, initialization parameter    values and so on..

4、Procedure and Function are identical except that Founction are always return a value(Procedure do not).

5、Schema is a collection of Objects that associated with the DataBase.

6、SGA is made up of :
   DataBase Buffers;
   Redo Log Buffers;
   The Shared Pool;

7、Transaction is a logical unit of work consisting of one or more SQL statements,ending in a commit or rollback.

8?The DataBase
The Physical Layer
Q?QOne or more datafiles;
Q?QTwo or more redo log files;
Q?QOne or more control files;
The Logical Layer
Q?QOne or more tablespaces;
Q?QThe database schema;

9、The database is devided into one or more logical pieces known as tablespace;

10、Recommend that every one need DBA roles should have a different account , thus , if auditing is enabled , there is a record who made these system changes.

11、The Instance is the logical term that refers to the components necessary to access the data in a database.

12、数据库实例Q也UCؓ服务器ServerQ,是用来访问一个数据库文g集的一个存储结构及后台q程的集合。Oralceq行服务器是指一个单独的数据库可以被多个实例讉K?br />
13、查询实例名Q?br />    select instance_name from v$instanceQ?br />
14、查询动态视图v$waitstat、v$system_event、v$session_event、v$session_wait和v$ buffer_pool_statisticsQ在Oracle8中通过catperf.sql脚本创徏Q以获取下面所的统计信息,
目的是ؓ了检查服务器q程是否正等待DBWRQ对单个会话而言Q也Ҏ个数据库而言Q?br />
15?br /> (1)SMONQ系l监控程?br /> (2)PMONQ进E监控程?br /> (3)DBWRQ数据库写入E序
(4)LGWRQ日志写入程?br /> (5)CKPTQ检查点q程
(6)ARCHQ归档日?br /> (7)RECOQ恢复进E?br /> (8)SNPnQ快照进E?br /> (9)LCKnQ锁定进E?br /> (10)DnnnQ调度程序进E?br /> (11)SnnnQ服务器q程
(12)PnnnQƈ行查询服务器q程

16、数据库备䆾之前Q若使用了shutdown abort命oQ则需要进行如下操作,然后才能q行数据库备份:
1)    执行一个shutdown abort命oQ?br /> 2)    启动数据库实例;
3)    执行shutdown命oQ?br />
17、用OPS数据库时Q如何解决两个服务器同时对同一记录的更斎ͼ
更新同一个表的数据的用户使用同一个实例来讉K数据库?br />
18、通过ORACLE数据库对非ORACLE数据库进行访问,首先需要在q行非ORACLE数据库的服务器端安装ORACLE透明|关产品Q每U被讉K的数据引擎需要一个独立的|关Q然后需要在本地ORACLE数据库中建立一个数据库q接QDATABASE LINKQ?br />
19、外部文件访问:
1)    用作脚本文g的源代码写入SQL*PLUS、SQL、PL/SQL中;
2)    用作SQL*PLUS脚本文g的输出,用SPOOL命o生成Q?br /> 3)    用作PL/SQLE序的输入或输出Q通过UTL_FILE软g包访问;
4)    用作PL/SQLE序的脚本文件的输出Q通过DBMS_OUTPUT软g包生成;
5)    用作通过BFILE数据cd在数据库中引用的外部数据QBFILE数据cd含有一个指向外部二q制数据文g的指针,用户必须通过CREATE DIRECTORY命oQ在ORACLE中创Z个目录指针,指向存储文g的目录?br /> 6)    用作通过DBMS_PIPE讉K的外部程序,该程序必MORACLE支持?GL来编写?br />
20、取消用户在SYSTEM表空间上创徏对象的定额:
ALTER USER USER_NAME QUOTA 0 ON SYSTEM;
注:
如果一个用戯授权UNLIMITED_TABLESPACEpȝ权限或RESOURCE角色(Resouce角色拥有使用数据库中所有表I间的权?Q则q个授权覆盖用LM定额讄?br /> 21、创Z个用Pq且指定~省表空_
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD DEFAULT TABLESPACE TABLESPACE_NAME;

22、重新指定用L~省表空_
ALTER USER USER_NAME DEFAULT TABLESPACE TABLESPACE_NAME;

23、从数据表中分离出已有的索引Q?br /> ALTER INDEX INDEX_NAME REBUILD
   TABLESPACE INDEX_TABLESPACE
   STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0);

24、创时指定数据表I间和烦引表I间Q?br /> CREATE TABLE TAB_NAME(
COLUMN_A TYPE,
COLUMN_B TYPEQ?br /> …
COLUM_N TYPE,
CONSTRAINT TAB_NAME_PK PRIMARY KEY (COLUMN_A)
USING INDEX TABLESPACE TABLESPACE_INDEXES
STORAGE(INITIAL 2M NEXT 2M PCTINCREASE 0))
TABLESPACE TABLESPACE_DATA
STORAGE(INITIAL 5M NEXT 5M PCTINCREASE 0);

25、TEMP表空间只有在大型排序操作时才使用Q?br />
26、STORAGE子句的意义:
StorageQinitial 盘区大小 next 盘区大小 pctincrease 每个序盘区几何增长的系敎ͼQ?br /> 使用非零pctincrease参数的结果:
storageQinitial 10M next 10M pctincrease 50Q?
盘区?nbsp;       大小        d?nbsp;       盘区定w注释
1            10            10            INITIAL
2            10            20            NEXT
3            15            35            NEXT×1.5
4            22.5            57.5            NEXT×1.5×1.5
5            33.75        91.25        NEXT×1.5×1.5×1.5
.. .. .. .. .. ..
理想的情况:
一个段只具有一个大合适的盘区Qƈ且nextD,设表的pctincreasegؓӞ
实际上:
在表I间U设|pctincrease的gؓӞ会媄响ORACLE自动合ƈ表空间中自由I间的能力,把表I间~省pctincrese讄Z个非怽的|例如1Q?br />
27、通常UCTEMP的时表I间Q由于其自n的特点会有很多碎片,临时D|L在不断的创徏、扩展和撤销Q对于时表Q将INITIAL和NEXT盘区大小设ؓ表空间大的1/20?/50Q对于这个表I间QINITIAL和NEXT~省讄应该相等QPCTINCREASE的gؓ0Q这PD将有同样大的盘区构成Q当撤消q些D|Q下一个时段能够重新利用这些已撤消的盘区?br />
28?br /> 1Q将一个表I间改ؓ临时表空_
alter tablespace tablespace_name temporary;
2Q将一个表I间转换存储怹对象Q?br /> alter tablespace tablespace_name permenent;
3Q强制表I间合ƈ其自q?只能合ƈ位置盔R的自q?Q?br /> alter tablespace talbespace_name coalesce;

29?br /> 1)手工~放数据文g(只能增大不能减小)Q?br /> alter database datafile '$path/datafile01.dat' resize nnnM;
2)创徏一个在需要时自动扩展的文Ӟ
CREATE TABLESPACE DATA
DATAFILE '$PATH/DATAFILE01.DAT' SIZE 200M
AUTOEXTEND ON
NEXT 10M
MAXSIZE 250M;
3)通过ALTER TABLESPACE增加一个新的数据文Ӟ
alter tablespace tablespace_name
add datafile '$path/datafile02.dat' size 200M
autoextend on
maxsize 300M;

40、移动数据文Ӟ
1Q?nbsp;   关闭实例Q?br /> 2Q?nbsp;   使用操作pȝ命o来移动数据文Ӟ
3Q?nbsp;   安装数据文gq用ALTER DATABASE命o改变数据库中的文件名Q?br /> 4Q?nbsp;   启动实例Q?br /> 具体步骤如下Q?br /> 1)>svrmgrl
>connect internal
>shutdown
>exit
2)mv /db01/oracle/cc1/data01.dbf /db02/oracle/cc1/
3)>svrmgrl
>connect internal
>startup mount cc1
>alter database rename file '/db01/oracle/cc1/data01.dbf' to '/db02/oracle/cc1/data01.dbf';
4)    startup

31?br /> 查看回滚D名U?v$rollname
查看表空_dba_tablespace;
查看用户表空_user_tablespaces;
查看回滚D늊态信息:dba_rollback_segs;
查看数据库回滚段的当前分配情况:dba_segments;

32?br /> 若系l中有多个表I间Q就需要在system表空间中创徏"W二回滚D?来支持多个表I间Q有?W二回滚D?Qsystem表空间就只用于管理数据库U的事务?br />
33?br /> ipcs | grep oracle
ipcrm [-m|-s] ipcid(数字)

34、连接字W串Q||   
select 'drop talbe '||table_name from user_tables;

35、视图中不能使用order byQ但可以用group by 代替来达到排序目的:
create view as select b1,b2 from table_b group by b1,b2;

36、用户间复制数据:
copy from user1@databasex to user2@databasey create table2 using select * from talbe1;

37、察看数据库的大,和空间用情?br /> select b.file_id FileID,b.tablespace_name TableSpace,b.file_name PhysicalFileName,b.bytes TotalBytes,(b.bytes-sum(nvl(a.bytes,0))) UsedSpace,sum(nvl(a.bytes,0)) FreeSpace,sum(nvl(a.bytes,0))/(b.bytes)*100 FreePecent from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.file_id,b.bytes order by b.tablespace_name;

38、Oracle提供了几个包Q它们可以用来完成很多Q务,从内部进E通信到文件I/OQ到在PL/SQL块中动态创建和执行SQL语句。所有这些包由SYS用户所拥有-当Oracle最初安装时两个用户中的一个,q些包中最重要的包括:
DBMS_ALERT          不用轮询允许应用命名ƈ发出警告条g信号的过E与函数
DBMS_DDL          允许获取PL/SQLE序内部一定数量的DDL语句的过E?br /> DBMS_DESCRIBE    为存储过E与函数描述API的过E?br /> DBMS_JOB           理BLOBs、CLOBs、NCLOBs与BFILEs的过E与函数
DBMS_OUTPUT        允许PL/SQLE序生成l端输出的过E与函数
DBMS_PIPE           允许数据库会话用管道通信(通信频道)的过E与函数
DBMS_SQL           在PL/SQLE序内部执行动态SQL的过E与函数
DBMS_ULTILITY        DBMS_ULTILITY
ULT_FILE    允许PL/SQLE序d服务器文件系l上的文本文件的q程与函?br />
39、如何解军_机监听不启动的问题:
你给IP固定一个|然后配置NET8时最好用机器名,把listener.ora,tnsname.ora里的IPҎ机器名?br />
40、查看日志文件的路径和数量:
select * from v$logfile;

41、oracle中的配置文gQ?br /> init.ora
tnsname.ora
listener.ora
sqlnet.ora

42、如何利用rownum 索纪录:Q在oracle中,只能通过rownum索比rownum值小的所有的列)利用如下ҎQ可以检索表中rownum{于固定值的列:
select * from ( select rownum rn,column1,column2,… from table_name) where rn=要查询的|

43、利用translateQchar,from,toQ函数判断一个字W串是否可以转换?number 型:
translate(str,'x1234567890','x') is nullQ则str为纯字符丌Ӏ?br /> 利用from to 参数Q把str字段中所有的0-9的字W替换ؓI,然后判断函数q回|q回gؓI,则str一定可以{换成number型?br />
44、如何修改internal 用户的密码?
用法Qorapwd file= password= entries=
参数解释Q?br />     file - name of password file (mand),
    password - password for SYS and INTERNAL (mand),
    entries - maximum number of distinct DBA and OPERs (opt),
    There are no spaces around the equal-to (=) character.
1)q入DOS?br /> 2)默认internal密码文g在c:\orant\database下,是隐藏属性,文g名称与数据库实例名有?br />   如默认ORACLE实例名ؓORCLQ则internal密码文g名ؓpwdorcl.ora
3)建立新的internal密码文gQv个新名字为pwdora8.ora
  orapwd80 file=pwdora8.ora password=B entries=5     
--注:password一定要用大写,q且不要用单引号
4)拯pwdora8.ora文g到c:\orant\database目录?br /> 5)q行regeditQ修改口令文件指?br /> 6)扑ֈHKEY_LOCAL_MACHINE\SOFTWARE\ORACLE?br />   定位ORA_ORCL_PWFILE子项Q改变其gؓc:\orant\database\pwdora8.ora
7)关闭ORACLE数据库,重新启动
Coolq入svrmgrl服务E序Q测试internal密码是否更改成功

45、只有对象的拥有者才有对对象的操作权。如Q把用户user1下的表tab_1赋给用户user2 查看的权限。此Ӟ必须以uer1用户登陆Q让后执行如下语句:
grant select on tab_1 to user2;

46、Oracle的本地进E?nbsp;   ps -aef | grep LOCAL=YES   的父q程ID不能?1 Q若?1 Q则该进E被掉死Q需要用命o杀Lq程Q!

47、在Windows 2000 server 操作pȝ下,?net start 命o启动oracle的服?如下Q?br /> net start OracleServiceORCL
net start OracleStartORCL
net start OracleTNSListener80
net start OracleWWWListener80
或者,利用 net stop 命o来终止服务:
net stop oraclestartorcl
net stop oracleserviceorcl
net stop oracletnslistener80

启动数据库的另外一个方法:
oradim -startup -sid SID
关闭数据库的另外一个方法:
oradim -shutdown -sid SID

48、多表操作在被实际执行前Q查询优化器会根据连接条Ӟ列出几组可能的连接方案ƈ从中扑ևpȝ开销最的最x案。连接条件要充䆾考虑带有索引的表、行数多的表Q内外表的选择可由公式Q外层表中的匚w行数*内层表中每一ơ查扄ơ数定Q乘U最ؓ最x案?br />
49、保持Oracle数据库优良性能的若q诀H:
1Q?nbsp;   分区Q?br /> Ҏ实际l验所得,在一个大数据库中Q数据库I间的绝大多数是被少量的表所占有。如何简化大数据库和理Q如何改善应用的查询性能Q一般可以用分U手Dc所谓分区就是动态地表中记录分d若干不同的表I间上,使数据在物理上被分割开来,便于l护、备份、恢复、事务及查询性能。当使用的时候可建立一个连接所有分区的视图Q其在逻辑上仍以一个整体出现?
(1)建立分区?
Create table Employee (
EmpNo varchar2(10) primary key,
Name varchar2(30),
DeptNo Number(2)
)
Partition by range(DeptNo)
(
partition PART1 values less than (11)
tablespace PART1_TS,
partition PART2 values less than (21)
tablespace PART2_TS,
partition PART3 values less than (31)
tablespace PART3_TS
partition PART4 values less than (MAXVALUE)
tablespace PART4_TS
);
表Employee依据DeptNo列进行分区?
(2)分区索引
Create index Employee_DeptNo on Employee(DeptNo)
local (
partition PART1 tablespace PART1_NDX_TS,
partition PART2 tablespace PART2_NDX_TS,
partition PART3 tablespace PART3_NDX_TS,
partition PART4 tablespace PART4_NDX_TS,
);
当分Z出现许多事务q且要保证所有分Z的数据记录的唯一性时采用全局索引Q如Q?
Create index Employee_DeptNo on Employee(DeptNo)
global partition by range (DeptNo)
(
partition PART1 values less than (11)
tablespace PART1_NDX_TS,
partition PART2 values less than (21)
tablespace PART2_NDX_TS,
partition PART3 values less than (31)
tablespace PART3_NDX_TS
partition PART4 values less than (MAXVALUE)
tablespace PART4_NDX_TS
);
在徏立全局索引Ӟglobal子句允许指定索引的范围|q个范围值可以不同于表分区的范围倹{只有徏立局部烦引才会索引索引分区与表分区间徏立v一一对应关系。因此,在大多数情况下,应该使用局部烦引分区。若使用了此索引Q分区就能够很容易地烦引分Z表分区徏立关联,局部烦引比全局索引更易于管理?
(3)分区理
Ҏ实际需要,q可以?alter table 命o来增加、丢弃、交换、移动、修攏V重命名、划分、截短一个已存在分区的结构?

2)Rebuild IndexesQ重建烦引不会媄响存储过E)
如果表中记录频繁的被删除或插入,管表中的记录总量保持不变Q烦引空间的使用量会不断增加。虽然记录从索引中被删除Q但是该记录索引的使用I间不能被重C用。因此,如果表变化不定,索引I间量会不断增加Q不表中记录数量是否增?-只仅仅是因ؓ索引中无效空间量的增加?
要回攉些曾被删除记录用的I间Q需要用alter index rebuild 命o。可以做一个定期运行的批处理程序,来重建最zd表的索引。这个批处理E序可以在空闲时q行Q以避免E序与用户冲H。若能坚持烦引的q一E序规划Q便可以及时回收那些未用空_提高I间利用率?

3)D늚片整理
当生成一个数据库对象Ӟ一个表或一个烦引)Q通过用户~省值或指定值来为它指定表空间。一个在表空间中所生成的段Q用于存储对象的相关数据。在D被关闭、收~、截断之前,D|分配的空间将不被释放?br /> 一个段是由范围l成Q而范围是qȝOracle块组成。一旦存在的范围不能再存储新的数据,那这个段׃去获得新的范_且ƈ不要求这些范围是彼此盔R的。这L扩展会一直l下去,直到表空间中的数据文件不能提供更多的自由I间Q或者范围数量已辑ֈ极限?br /> 因此Q一个碎片太多的数据D,不仅会媄响运行,也会引发表空间中的空间管理问题。所以,每个数据D只含有一个范围是十分有益的。借助监控pȝQ可以通过查DBA_SEGMENTS数据字典视图来了解哪些数据库对象含有10个或更多范围的段Q确定其数据D늢片?
若一个段的碎片过多,可用两种Ҏ解决q个问题Q?
(1)用正的存储参数建立一个新表,旧表中的数据插入到新表中,再删除旧表;
(2)利用Export/Import工具?br /> 如:exp system/manager file=exp.dmp compress=Y grants=Y indexes=Y tables=(T1,T2)
若输出成功,q入OracleQ删除上q表?
注:compress=Y军_在输出q程中修改它们的存储参数?
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y
注:在输入时重新配置新的存储参数?

自由范围的碎片整?
表空间中的一个自p围是表空间中相连自由Q空_块的集合。当一个段关闭Ӟ它的范围被释放Qƈ被标Cؓ自由范围。然而,q些自由范围再也不能与相ȝ自由范围合ƈQ它们之间的界线始终存在。但是当表空间的~省值pctincrease讄不ؓ0ӞSMON后台q会定期的将q些盔R的自p围合q。若pctincrease讄?Q那盔R自由范围不会被数据库自动合ƈ。但可以使用 alter tablespace 命ocoalesce选项Q来q行盔R自由范围的合q?
不进行自p围合qӞ在日后的I间h中,会媄响到表空间中的空间分配。当需要一个够大的范围时Q数据库q不会合q相ȝ自由范围Q除非没有其他选择。这P当表I间中前面较自p围已被相关用时Q将使用表空间中后面部分最大的一个自p围。结果,会因为它们没有够多的用空_从而导致表I间中速度上的矛盾。由于这Lq程出现Q数据库的I间分配距理惌来越q。自q间碎片常会出现在那些l常关闭又重新生成的数据库表和烦引中?br /> 在理想的ORACLE表空间中Q每一个数据库对象存储在一个单独的范围中,q且所有有效自q间集中在一个巨大而连l的范围中。这P在一个对象需要附加存储空间时Q可以在增加获取_大自q间的可能性同Ӟ最化I间中的循环调用Q提高自q间用率

50、查看和修改Oracle服务器端字符集:
Ҏ一Q?br /> 1)    查看服务器端字符集:
select * from v$nls_parameters;
select * from nls_database_parameters;
select * from sys.props$;
2)    修改服务器端字符?用sys用户)Q?br /> 首先执行Qupdate props$ set value$ = 'WE8ISO8859P1' where name ='NLS_CHARACTERSET';
update props$ set value$ = 'china' where name ='NLS_LANGUAGE';
提交QcommitQ,然后Q重新启动数据库Q?br /> 3Q用客户端工PPL/SQL DEVELOP or PB etc.Q查询数据库Q若昄qQ先查询出数据库端的字符集,然后Q从注册表中修改NLS_LANG字段的|可能为AMERICAN_AMERICA.WE8ISO8859P1或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK或者NA{?br /> Ҏ二:
alter system enable restricted session;
alter database ORCL character set ZHS16GBK;
alter database ORCL national character set ZHS16GBK;

51、查看系l中的角Ԍ
select * from dba_roles;
-------------------------------------------------------------------------------------------------------------
Oracle中查看所有的?br /> select   table_name   from   user_tables;     //当前用户的表  
   
  select   table_name   from   all_tables;     //所有用L? 
   
  select   table_name   from   dba_tables;       //包括pȝ?br /> -------------------------------------------------------------------------------------------------------------


]]>
oracle11g修改密码心得http://www.aygfsteel.com/wx886104/archive/2008/11/05/238848.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Wed, 05 Nov 2008 08:57:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/05/238848.htmlhttp://www.aygfsteel.com/wx886104/comments/238848.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/05/238848.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/238848.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/238848.html

]]>
Oracle 密码丢失解决Ҏ述http://www.aygfsteel.com/wx886104/archive/2008/11/05/238845.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Wed, 05 Nov 2008 08:43:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/05/238845.htmlhttp://www.aygfsteel.com/wx886104/comments/238845.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/05/238845.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/238845.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/238845.html在用Oracleq各中经怼遇到密码丢失的时候,本文用两U试来解册个问题?

一U方?

sqlplus "/ as sysdba"
            SQL>startup
            SQL>alter user system identified by root123;

如果sqlplus "/ as sysdba"不能q入,让输入密?我输入原始密码和修改的密码后都不行的?修改unix环境?

1. $ORACLE_HOME\network\admin\SQLNET.ORA中ؓQ?

SQLNET.AUTHENTICATION_SERVICES=(NTS)

重v数据?监听服务Q就可以用操作系l认证sqlplus "/ as sysdba"?来进入你的数据库Q从而轻而易丄搞定你的数据库了?

2.

sqlplus /nolog
            sql>connect /as sysdba

W二U方?

详细步骤如下Q?

一Q查询视图V$PWFILE_USERSQselect * from V$PWFILE_USERSQ记录下拥有 SYSOPERQSYSDBApȝ权限的用户信息?

二:关闭数据?shutdown immediate?

三:删除密码文gQ文件\径一般ؓQORACLE_HOMEQDATABASEQ文件名为PWD.ORA?

四:创徏密码文gQ?

ORAPWD FILE=Q?FILENAME Q PASSWORD =Q?PASSWORD Q?

五:向密码文件中增加用户Q?

CONNECT SYSQinternal_user_passsword AS SYSDBAQ?

启动数据库实例ƈ打开数据库; 创徏相应用户帐号Q对其授权授?权限QGRANT SYSDBA TO user_nameQ如果先前数据库只有syshsysdba权限Q可不做q步Q?

六:修改密码文g状态,默认密码文g的状态sharedQ要初始化参数里的REMOTE_LOGIN_PASSWORDFILE 讄成EXCLUSIVE。(T006Q?



]]>
oracle的to_date()Ҏ的小妙用Q原创)http://www.aygfsteel.com/wx886104/archive/2008/11/01/238048.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Sat, 01 Nov 2008 06:11:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/11/01/238048.htmlhttp://www.aygfsteel.com/wx886104/comments/238048.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/11/01/238048.html#Feedback2http://www.aygfsteel.com/wx886104/comments/commentRss/238048.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/238048.html 在某些时候需要通过日期中的q_月,日等来统计数据,通常我们会将日期取出Q再在程序中获取当前日期。进行比较,q样会加大开销?br /> 现在可以通过to_date来截取日期中的年Q月Q日的来获取数据?br /> 如: to_char(to_date(b_time,'yyyy-mm-dd'),'yyyy')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'yyyy')
q样获取的就是年的字W串Q就可得到指定年的数据?br /> 月:to_char(to_date(b_time,'yyyy-mm-dd'),'mm')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'mm')
日:to_char(to_date(b_time,'yyyy-mm-dd'),'dd')=to_char(to_date(?,'yyyy-mm-dd hh24:mi:ss'),'dd')



]]>
oracle 导出导入 结http://www.aygfsteel.com/wx886104/archive/2008/10/11/233721.html勒紧皮带向前?/dc:creator>勒紧皮带向前?/author>Sat, 11 Oct 2008 03:52:00 GMThttp://www.aygfsteel.com/wx886104/archive/2008/10/11/233721.htmlhttp://www.aygfsteel.com/wx886104/comments/233721.htmlhttp://www.aygfsteel.com/wx886104/archive/2008/10/11/233721.html#Feedback0http://www.aygfsteel.com/wx886104/comments/commentRss/233721.htmlhttp://www.aygfsteel.com/wx886104/services/trackbacks/233721.html ?exp导出
    exp username/password@database file=xxx/xxx/xx.dmp
 
    imp导入
    imp username/password@database file=xxx/xxx/xxx.dmp FULL=y

以上的例子是Ҏ个数据库q行的导出导入,除了以数据库外,q可以导Q表I间?br /> 注意在导入是如果遇到imp-00015提示following statement failed because the objiect already exitsӞ只需对该信息后面的所存在的对象删除,再次导入卛_?br />

]]>
վ֩ģ壺 ߴ| | | | | | | °| פ| | | ϳ| ƶ| | | | Ԫ| ʲ| | | Ӱ| ƽ| | ֱ| | | | Ӣɳ| | | ˮ| | | ƫ| ˳| Դ| | | | | ʼ|