impdp中remap_datafile的测试。
remap_datafile目前我的理解是一定是用在全库导出和全库导入这个操作上,因为只有全库导出才导出create tablespace的语法,而导入时需要重新创建表空间,这样的就需要通过remap_datafile来重新map表空间的datafile的位置。我测试的是把orcl这个库全库导出然后full导入到test这个库中。之所以要记录一下,是因为好长时间自己理解不了doc上对remap_datafile的解释[@more@]导出script比较简单,就不写了,导入如下:C:>impdp 'sys/system@test as sysdba' directory=expdp_dir dumpfile=full.dmp full=y logfile=full_imp4.txt parfile='c
scn_to_timestamp以及timestamp_to_scn的相互转化!
这两个函数相互转化时有时候经常控制不好时间的格式,写个简单的例子被查。[@more@]C:>sqlplus sys/system@orcl_d as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on 星期二 3月 10 09:08:11 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select current_scn from v$database;CURRENT_SCN----------- 2608762SQL> select scn_to_timestamp(2608762) from dual
Oracle10g EM使用中的主机身份证明问题!
困扰过很久的一个问题,看到网上别人的回答解决了,记录一下。[@more@]http://www.itpub.net/thread-333740-1-1.html
undo的一点内部机理!
--其实主要介绍了undo中的2条单向链表,明白了这2条链,有助于我们更深入的研究undo...[@more@]--创建一个测试表tt,注意按照object_id事先排序了SQL> create table tt tablespace users as select * from dba_objects order by object_id;表已创建。--查询一下object_id的最大值和最小值后面分析会用到SQL> select min(object_id),max(object_id) from tt;MIN(OBJECT_ID) MAX(OBJECT_ID)-------------- -------------- 2 10327SQL> update tt set object_id=1;已更新9882行。--查看事务使用undo的情况SQL&
IBM串口线序以及串口线的做法(转)
http://os.cnfan.net/ibm_aix/1959.html临时记录一下![@more@]http://os.cnfan.net/ibm_aix/1959.html
有关介绍redo的几篇不错的文章!
http://www.ixora.com.au/notes/redo_latching.htmhttp://www.ixora.com.au/notes/log_buffer_usage.htmhttp://www.ixora.com.au/notes/log_block_size.htm碰到了随手记录一下![@more@]http://www.ixora.com.au/notes/redo_latching.htmhttp://www.ixora.com.au/notes/log_buffer_usage.htmhttp://www.ixora.com.au/notes/log_block_size.htm
external procedure调用的大致测试过程!
很多功能如果直接通过plsql实现可能会很困难,如通信方面的一些功能等,如果要通过C/C++实现的话可能会非常容易,oracle在plsql中支持调用C/C++写的函数。实现过程大致如下:(声明:本人也没有在实际应用中使用过external procedure,下面仅是一个大致的测试过程),有关external procedure的原理以及更详细的了解可以参考oracle doc。[@more@]--在listener中做如下配置[oracle@linuxrac2 admin]$ more listener.ora# LISTENER.ORA.LINUXRAC2PUB Network Configuration File: /opt/oracle/product/9.2.0/network/admin/listener.ora.linu
index desc之后数据在leaf node中是如何存储的!
困扰了很久的问题得以解决,比较兴奋,尽管对我们使用而言可能用处不大![@more@]SQL> create table t(id int ,name varchar2(10)) tablespace users;表已创建。SQL> insert into t values(1,'abc');已创建 1 行。SQL> insert into t values(2,'bcd');已创建 1 行。SQL> insert into t values(3,'cde');已创建 1 行。SQL> insert into t values(123,'test');已创建 1 行。SQL> insert into t values(321,'testabc');已创建 1 行。SQL> commit;提交完成。SQL> create index idx_t_id on t(id desc);索引已创建。SQ
基于函数index的一点简单测试!
基于函数index的一点简单测试![@more@]SQL> create table tt as select *from t;表已创建。SQL> select *from tt; ID NAME---------- ---------- 1 abc 2 bcd 3 cde 123 test 321 testabcSQL> insert into tt values(null,null);已创建 1 行。SQL> insert into tt values(null,null);已创建 1 行。SQL> commit;提交完成。SQL> create index idx_tt_id on tt(id desc);索引已创建。--================================Ascending unique indexes allow multiple NULL values
avg_space of dba_tables是如何被计算出来的!
困扰自己很久的问题终于解决了,以前有个误区,以为这个值是指hwm以下blocks的avg space![@more@]其实没啥用途,只是以前一直是我心中的疑问,突然解惑,总结一下,分享!--=================================有关这个字段先看看doc上的解释:AVG_SPACE* NUMBER Average amount of free space, in bytes, [b][color=Red]in a data block allocated to the table [/color][/b]--=================================另外我心中有一个疑问:一个block是被使用过还是从未被使用过oracle是根据block上的啥标记来判断的?itl?该疑问与本贴内容
对象前面是用户名还是schema名!
我们通常访问其他用户下的对象时如果不创建同义词通常需要在被访问的对象前面加上这个对象的所有者(owner),那么这个所有者是对象的用户名还是schema?通过下面测试自己觉得应该是schema名![@more@]SQL> connect b/b已连接。SQL> select user#,username,schema#,schemaname from v$session where sid=(select sid from v$mystat where rownum=1); USER# USERNAME SCHEMA# SCHEMANAME---------- ---------- ---------- ------------------------------ 35 B 35 B--访问a用户下的tt表,事先做过了
部分联机备份产生redo多的原因!
doc上解释的格外清楚,还是看doc吧[@more@]Detection of Fractured Blocks During Open BackupsOne danger in making online backups is the possibility of inconsistent data within a block. For example, assume that you are backing up block 100 in datafile users.dbf. Also, assume that the copy utility reads the entire block while DBWR is in the middle of updating the block. In this case, the copy utility may read the old data in the top half of the block and the new data in the bottom top half of the bloc
CX0的全称!
呵呵,X=E,0,T,I[@more@]CEO(Chief executive officer)首席执行官 类似总经理、总裁,是企业的法人代表。COO(Chief operating officer)首席运营官 类似常务总经理CTO(Chief technology officer)首席技术官 类似总工程师CIO(Chief information officer)首席信息官 主管企业信息的收集和发布
自治事务!
自治事务允许我们在"事务中创建事务"[@more@]SQL> truncate table tt7;表被截断。SQL> create or replace procedure proc_autotrans 2 is 3 pragma autonomous_transaction; 4 begin 5 insert into tt7 values(1,'autonomous'); 6 commit; 7 end; 8 /过程已创建。SQL> begin 2 insert into tt7 values(1,'niminblock'); 3 proc_autotrans; 4 rollback; 5 end; 6 /PL/SQL 过程已成功完成。SQL> select * from tt7; ID NAME---------- ---------- 1 autonomous--只插入
事务的原子性!
事务的原子性是指事务中的动作要么发生,要么不发生.不想做太多的解释,想了解可以看tom的力作,这里只是随手记录个测试过程.[@more@]SQL> alter table tt8 add constraint pk_tt8 primary key (id);表已更改。SQL> edit已写入 file afiedt.buf 1 create or replace procedure proc_tt8 2 is 3 begin 4 insert into tt8 values(1,'a'); 5 insert into tt8 values(1,'a'); 6* end;SQL> /过程已创建。SQL> begin 2 proc_tt8; 3 end; 4 /begin*第 1 行出现错误:ORA-00001: 违反唯一约束条件 (SYS.PK_TT8)ORA-06512
我渴望的insert操作!
呵呵,都不知道起个啥名字好,这个操作我渴望已久了,但遗憾的是自己才发现,其实oracle可能一直就支持,汗,以前没有细读过tom的书,doc也看的不细...[@more@]SQL> desc tt7 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(38) NAME VARCHAR2(10)SQL> select * from tt7; ID NAME---------- ---------- 1 a
在assm下有关shrink的几个有用子句!
在assm下,shrink时可以结合dbms_space.space_usage来观察空间的shrink情况[@more@] alter table tbname row movement--======================================= 保持HWM alter table tbname shrink space compact; 回缩表与HWM alter table tbname shrink space; 回缩表与相关索引 alter table tbname shrink space cascade; 回缩索引 alter index idxname shrink space;如果index space被shrink的话,index的hwm也会下降,这一点可以通过dump index segment header block 观察到,另外值得注意的是shrink之
dbms_space.space_usage的输出变量太多,使用极不方便!
简单的包装一下,使用时调用,放在这里备查! [@more@]SQL> create or replace procedure show_space_assm(2 segment_owner varchar2,3 segment_name varchar2,4 segment_type varchar2)5 is6 UNFORMATTED_BLOCKS NUMBER;7 UNFORMATTED_BYTES NUMBER;8 FS1_BLOCKS NUMBER;9 FS1_BYTES NUMBER;10 FS2_BLOCKS NUMBER;11 FS2_BYTES NUMBER;12 FS3_BLOCKS NUMBER;13 FS3_BYTES NUMBER;14 FS4_BLOCKS NUMBER;15 FS4_BYTES NUMBER;16 FULL_BLOCKS NUMBER;17 FULL_BYTES NUMBER;18 begin19 dbms_space.space_usage(20 segment_owner,21 segmen
oracle对字符类型的列上在线重建index的限制!
在线重建一个index时无意中发现了这样的问题,varchar2类型的列不能超过3201,这可能是一个内部限制。SQL> alter index idx_t rebuild online;alter index idx_t rebuild online*第 1 行出现错误:ORA-00604: 递归 SQL 级别 1 出现错误ORA-01450: 超出最大的关键字长度 (3215)[@more@]SQL> desc t名称 是否为空? 类型----------------------------------------- -------- ----------------------------ID NUMBER(38)NAME VARCHAR2(3202)SQL> alter index idx_t rebuild online;alter index idx_t rebuild online*第 1 行出现错误:
11g v$process中增加了一个有用的字段tracefile!
11g v$process中增加了一个有用的字段tracefile![@more@]11g,v$process中增加了一个tracefile字段,该字段记录的是进程产生的tracefile,一个看起来不起眼的字段却给我带来了很大的方便,以前我们要确认进程所产生的trace文件需要通过下面方法:1.首先需要知道当前的sessionidSQL> select sid from v$mystat where rownum=1; SID---------- 1442.之后需要知道该session所对应的process addressSQL> select paddr from v$session where sid=144;PADDR--------226958503.根据process address进一步需要知道os process(t