sql9

[Q]怎样建立基于函数索引 
[A]8i以上版本,确保 
Query_rewrite_enabled=true 
Query_rewrite_integrity=trusted 
Compatible=8.1.0以上 
Create index indexname on table (function(field));
[Q]怎么样移动表或表分区 
[A]移动表的语法 
Alter table tablename move 
[Tablespace new_name 
Storage(initial 50M next 50M  
pctincrease 0 pctfree 10 pctused 50 initrans 2) nologging] 
移动分区的语法 
alter table tablename move (partition partname) 
   [update global indexes] 
之后之后必须重建索引 
Alter index indexname rebuild 
如果表有Lob段,那么正常的Alter不能移动Lob段到别的表空间,而仅仅是移动了表段,可以采用如下的方法移动Lob段 
alter table tablename move  
lob(lobsegname) store as (tablespace newts); 
  
[Q]怎么获得当前的SCN 
[A]9i以下版本 
select max(ktuxescnw*power(2,32)+ktuxescnb) from x$ktuxe; 
如果是9i以上版本,还可以通过以下语句获取 
select dbms_flashback.get_system_change_number from dual; 
  
[Q]ROWID的结构与组成 
[A]8以上版本的ROWID组成 
OOOOOOFFFBBBBBBRRR 
8以下ROWID组成(也叫受限Rowid) 
BBBBBBBB.RRRR.FFFF 
其中,O是对象ID,F是文件ID,B是块ID,R是行ID 
如果我们查询一个表的ROWID,根据其中块的信息,可以知道该表确切占用了多少个块,进而知道占用了多少数据空间(此数据空间不等于表的分配空间) 
  
[Q]怎么样获取对象的DDL语句 
[A]第三方工具就不说了主要说一下9i以上版本的dbms_metadata 
1、获得单个对象的DDL语句 
set heading off 
set echo off 
set feedback off 
set pages off 
set long 90000 
select dbms_metadata.get_ddl('TABLE','TABLENAME','SCAME') from dual; 
如果获取整个用户的脚本,可以用如下语句 
select dbms_metadata.get_ddl('TABLE',u.table_name) from user_tables u; 
当然,如果是索引,则需要修改相关table到index 
  
[Q]如何创建约束的索引在别的表空间上 
[A]1、先创建索引,再创建约束 
2、利用如下语句创建 
create table test 
(c1 number constraint pk_c1_id primary key 
using index tablespace useridex, 
c2 varchar2(10) 
) tablespace userdate; 
  

你可能感兴趣的:(数据结构,脚本,F#)