随笔分类 - Oracle
摘要:在尝试配置oracle streams replication的时候,看到文档上说源数据和目标数据库(source database & destination database)都要把参数GLOBAL_NAMES设置成TRUE (默认值为FALSE), 如果这个参数设置为TRUE, 那么Oracle就会要求创建的database link的名字的跟目标数据库的global name保持一致,否则会有问题。下面来测试看看...假设source database为orcl, destination database 为orcl2. 这两个数据库是位于同一台机器上的,tnsnames.or
阅读全文
摘要:偶然看到有人提到用copy命令来进行数据的拷贝,于是乎试试是个啥东东...COPY是SQL*PLUS提供的一个命令,用来在不同数据库间(oracle之间, oracle和其他数据库)进行表数据的拷贝。不过从9i的文档中看到,说这个command以后有可能会被deprecated, 看了这个命令的简单介绍,我觉得这个命令是个“鸡肋”。在Oracle之间进行表数据的拷贝完全可以不用这个命令,对于oracle和其他数据库进行数据的拷贝,我有点疑问,这个命令是sql*plus提供的,我不太清楚怎么通过sql*plus连接oracle以外的数据库。文档中给出的例子也都是oracle数据库间的数据拷贝。除
阅读全文
摘要:Row Flag Structure在看一个数据块的dump文件的时候,经常会发现类似如下的信息...tl: 12 fb: --H-FL-- lb: 0x1 cc: 2其中fb, lb, cc就是每一行数据头的信息,分别表示Row Flag, Lock Byte (ITL entry), Column Count. (tl, 应该表示每一行数据实际占用的空间大小,包括row header, 每一个column实际占用的字节数,和用来存储每个column长度的overhead。 tl的信息并没有实际存储。)那么ROW Flag中的8个bit分别表示什么意思呢 (例如这里的H, F, L)?--
阅读全文
摘要:BBED(Block Browser and EDitor) 是Oracle提供的一个功能非常强大的工具,用来直接对oracle block进行操作。因此这个工具使用起来很危险,而且Oracle不对用这个工具带来的任何后果负责任,这个工具仅供内部使用。虽然如此,这个工具为我们研究block的存储结构带来了极大的便利,因此了解下也是很有好处的 :-) 本文主要介绍如果安装BBED, 因为在linux下面,bbed默认没有“安装”,不能直接使用,需要先进行一些操作...[代码]进行这个link操作之后,在目录$ORACLE_HOME/rdbms/lib目录下生成了bbed这
阅读全文
摘要:之前在Data Block Structure (Try to Understand)中通过dump文件来尝试去分析一个block的结构,结果费了半天劲,也没有得到一个很清晰的概念。发现BBED的map命令很好很强大,可以用来得到一个block的结构组织情况,通过设置dba来得到一个block的结构,如下所示...[代码]这里面的一系列的struct,可以参见如下介绍...[代码]
阅读全文
摘要:BBED功能相当强大,因为可以用来修改block上的内容,因此很显然可以通过BBED来修改表上的数据,直接绕过通过SQL语句对表的操作。本文尝试通过BBED来修改表中的一条记录。建立实验环境首先建立实验环境,建立一张表test, 插入一条记录 (1, 'Frank'), 如下...[代码]通过上面的操作,确定了我们刚才在表test中插入的一条记录位于4号数据文件上第404个block上面。设置BBED现在把BBED 的dba 设置成 4, 404[代码]可以通过BBED来查看我们刚才在表TEST中插入的记录,如下,(kbdr中这个数组大小为1,表示只有一条记录)[代码]注意这里面用到的e(x)
阅读全文
摘要:最近做了个PPT,关于PLSQL的编码风格规范。以前没用过SlideShare, 现在试试咋样,就顺便贴出来~PL/SQL Coding Conventions
阅读全文
摘要:A Simple Fact:可以通过 ALTER DATABASE BACKUP CONTROLFILE TO TRACE来备份控制文件,产生的trace 文件中包含了用来创建控制文件的文本内容,不是二进制形式的,产生的trace文件默认是放在udump目录下的。但是很不幸的是,我尝试了很多次这个命令,但是在udump下愣是没有找到任何trace文件! 如下....[代码]Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--[oracle@ora10g
阅读全文
摘要:虽然知道可以通过alter system dump datafile xxx block xxx来转储block的内容,但是遗憾的是对生成的trace文件内容却是无从下手,真的跟看天书一般。偶然看到有些牛人做了些研究,而且分享了出来,参见这里, 于是欣欣然尝试去读读这些”神秘代码“,可是费了半天劲还是只是搞懂了些皮毛而已。先记录下来,以后有机会接着看看...[代码]-- dump the blockSQL alter system dump datafile 6 block 13;好吧,生成的block dump文件内容如下...[代码]看了之前提到的别人的研究分享,尝试把上面这个dump文
阅读全文
摘要:之前在Collect Function and String Aggregation Utility中提到过通过1) collect 2) 自定义聚集函数 3)sys_connect_by_path来实现字符串聚集拼接,并对这三种方法的性能进行了简单的对比。今天偶然发现Tim Hall在的个人网站给出了更为详尽的string aggregation techniques的介绍,参见这里。加个链接进来,方便参考, O(∩_∩)O~Tim Hall主要总结了以下几种方法:- LISTAGG 分析函数 (11.2引入)- COLLECT 聚集函数 (10 引入)- SYS_CONNECT_BY_PA
阅读全文
摘要:问题描述在尝试通过show parameter来查看一个参数的时候,遇到了ora-00942: table or view does not exist的错误提示,如下,[代码]问题分析乍看到这个错误,很是惊愕了一下,因为平时几乎没碰到这个问题。但是错误提示给出的信息意思很明显,show parameter的时候访问了某个不存在或者没权限访问的表或者视图。那么是哪个表或者视图呢? 因为还记得访问参数的值,可以直接访问动态新能视图v$parameter, 因此尝试访问了一下,结果也报出了同样的错误提示,[代码]其实至此,上面的问题已经显而易见了,show parameter命令应该就是访问v$p
阅读全文
摘要:闲来无事就把电脑上的Oracle升级到最新版本11.2.0.1, 截了点图记录下... 主要步骤如下:1) 首先安装11.2的数据库软件2) 用11.2版本的DBUA把现有的数据库(物理数据库文件)升级到11.23) 配置listener, tnsname, em等等图1:数据库软件安装完之后,会自动弹出net ca的配置界面,可以生成新的listener图2: 可以发现安装目录下多了个文件夹11.2.0图3: 接下来进行数据库的升级(DBUA)图4: 选择现有的数据库进行升级图5:出现一些warning, 需要解决下图6:升级完毕图7: EM configuration 有问题,需要手动来完
阅读全文
摘要:公司进行domain的migration,给我的生活工作带来诸多不便,相当杯具:( 先不说email用不了,收不到任何邮件,搞得心慌慌,而且今天尝试访问下EM,居然发现搞不定了!因为用的是windows操作系统,首先想到去启动“OracleDBConsoleorcl"服务,但是发现根本启动不起来。后来发现因为进行域迁移,电脑的名字也给改了,因此首先就导致listener不work了,这个好办,直接打开listener.ora文件将Host名字给改过来,这样listner就可以正常work了。因为em dbconsole依赖一个oc4j的repository,一般名字也是跟host名字相关的,所
阅读全文
摘要:在尝试把一个树形查询的SQL中引用的一张表换成视图的时候,居然出现了Oracle internal error (ORA-00600)! 如下,原来的SQL...[代码]这个SQL运行的很正常,现在打算将表XX_ENTITY换成视图V_XX_ENTITY_LINKS,如下...[代码]居然碰到了如下错误信息...[代码]视图V_XX_ENTITY_LINKS其实还蛮简单的,如下,[代码]网上看到有人提到通过可以设置隐含参数_optimizer_connect_by_cost_based来避免这个问题(需要用引号将隐含参数包含起来),如下所示...[代码]不过既然是隐含参数,自然是不推荐来更改的
阅读全文
摘要:工作之余总结了下写条“好”的SQL语句需要注意的一些地方,肯定不是很全面也不是很深刻,以后有想到的继续补足吧....1.OverviewYes, wring a SQL statement is a no-brainer. But writing anefficient SQL statement is not that easy as you might think of. A badly-written SQL statement will consume alot of resources and get you waiting for a long time before receiv
阅读全文
[PLSQL]Two small function utilities that could be used in dynamic SQL (sqlchar and correct_sql_name)
摘要:有时候会遇到这样的问题,在设计一个表用来存储不固定数目属性的数据时候,为了使得表能够保持足够的灵活性,经常会采取key/value这样的表结构方式。比如说有如下一个问题,我要设计一个程序使得用户可以自由设置一个对象可以有多少种属性,那么这种情况下我在设计表的时候是不知道有多少种属性要存储,也就是说这个表的列数是不好确定下来的。因此很常见的一种方式就是把这种不确定的表的列数转换成行来存储,列就变成了...
阅读全文
摘要:在前一篇IOT, Secondary Index and Mapping Table中提到IOT的secondary index中应该包含了IOT的primary key, 但是不知道怎么去证明一下。网上看到可以通过如下方式dump数据文件中block的内容,To dump single block use following command:alter system dump datafile ...
阅读全文
摘要:本文尝试介绍下IOT(Index Organization Table)相关的secondary index 和 mapping table的基本知识,这个也是我以前一直没有搞明白的东西。1. IOT (Index Organization Table)关于IOT本身来说没有什么好说的,IOT是跟常见的Heap table相对的,可以简单理解成“表即是索引,索引就是表”。 ...
阅读全文
摘要:貌似DBMS_ALERT也可以用来作为session间信息的传递,所以干脆一不做二不休,多来一篇水文把DBMS_ALERT也搞了。DBMS_ALERT相关接口DBMS_ALERT提供如下一些procedures,- REGISTER procedure (当前session注册到某个alert, 然后从这个alert接收信息)- REMOVE procedure (不再接收某个alert发送的通...
阅读全文
摘要:扯在前面之前提到过Advanced Queue可以用来多个session之间的信息传递,AQ本质上还是依赖于queue table。DBMS_PIPE也可以用来做inter-session的信息传递,但是比较AQ来说,个人感觉还是相当轻量级的。DBMS_PIPE顾名思义,提供像pipe的功能,跟AQ比较起来,数据都是存在内存里面的,因此持久性不强,另外也不提供callback方式来读取信息。通过D...
阅读全文

浙公网安备 33010602011771号