oracle全文索引之datastore_5_detail_datastore
这篇文章继续讨论全文索引的DATASTORE属性,介绍DETAIL_DATASTORE。 [@more@] 全文索引运行将被索引的数据存储在子表的多条记录中,下面看一个简单的例子: SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, AUTHER VARCHAR2(30), TITLE VARCHAR2(30));Table created.SQL> CREATE TABLE T1 (ID NUMBER PRIMARY KEY, FID NUMBER, SEQ NUMBER, DOCS VARCHAR2(1000), 2 CONSTRAINT FK_T1_FID FOREIGN KEY (FID) REFERENCES T(ID)) 3 ;Table created.SQL> INSERT INTO T VALUES (1, 'YTK', 'DETAIL DATASTORE');1 row created.SQ
oracle全文索引之datastore_4_URL_DATASTORE
全文索引可以很方便的索引存储在INTERNET上的信息。在数据库中只需要存储需要索引的文章的URL就可以了。 由于目前讨论的是DATASTORE属性,因此这个例子只索引HTML文章,对于其他需要使用FILTER属性的文章,在以后讨论。[@more@]SQL> show user;USER is "MYUSER"SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));Table created.SQL> INSERT INTO T VALUES (1, 'http://yangtingkun.itpub.net/');1 row created.SQL> INSERT INTO T VALUES (2, 'http://www.itpub.net/');1 row created.SQL> COMMIT;Commi
oracle全文索引之datastore_3_FILE_DATASTORE
DATASTORE是FILE_DATASTORE的测试[@more@][oracle@rhel140 ~]$ cat OUTPUT.TXTORACLEoracle[oracle@rhel140 LOG]$ cat EMPXT_000_2012_2680.LOGSOURCEABCSQL> conn myuser/myuserConnected.SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));Table created.SQL> INSERT INTO T VALUES (1, 'OUTPUT.TXT');1 row created.SQL> commit;Commit complete.SQL> BEGIN2 CTX_DDL.CREATE_PREFERENCE('TEST_FILE', 'FILE_DATASTORE');3 CTX_DDL.SET_ATTRIBUTE('TEST_FILE', 'PATH', '/home/oracle');4 END; 5 /PL/SQL procedur
oracle全文索引之datastore_2_MULTI_COLUMN_DATASTORE
继续讨论全文索引的DATASTORE属性,介绍MULTI_COLUMN_DATASTORE。[@more@]如果被索引的文章是保存在数据库中,但是内容分布在多个列中,那么可以通过建立一个MULTI_COLUMN_DATASTORE来索引完整的文章:SQL> CREATE TABLE T (ID NUMBER, DOC1 VARCHAR2(4000), DOC2 VARCHAR2(4000), DOC3 VARCHAR2(4000));表已创建。SQL> INSERT INTO T VALUES (1, 2 'The first paragraph of article in doc1.', 3 'The second partments is the doc2.', 4 'The last content is in the doc3.');已创建 1 行。SQL> INSERT INTO T VAL
oracle全文索引之datastore_1_DIRECT_DATASTORE
Oracle Text功能十分强大,开始学习,主要参考yangtingkun的blog和文档进行。第一步先搞清楚datastore的类型。[@more@]DATASTORE的类型如下:DIRECT_DATASTOREMULTI_COLUMN_DATASTOREDETAIL_DATASTOREFILE_DATASTORENESTED_DATASTOREURL_DATASTOREUSER_DATASTORE下面就各种类型进行测试,DIRECT_DATASTORE是最简单的,默认是就是用这种类型Oracle的全文索引不要求被索引的文章一定存储在数据库中,不过如果文章存储在数据库的一列中,那么这种情况建立索引是最简单的。SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(4000));表已创建。
oracle 10g gird control的安装
几乎花了两个星期才装成功的,主要是由于/etc/hosts文件配的不对,装好之后觉的还蛮简单的,自己真笨,有几次差点就想放弃了。 [@more@]在新的机器上安装时不需要安装oracle的任何软件,在安装gird control时会自动安装oracle软件和数据库的。装成功的配置如下:#add parameters to /etc/sysctl.confkernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128fs.file-max = 65536net.ipv4.ip_local_port_range = 1024 65000net.core.rmem_default = 262144net.core.rmem_max = 262144n
cursor_sharing为force时带来的一个执行计划的假象
有时候可能存在评估的执行计划和真实的执行计划不一样,查看执行计划的方法如下: a.explain plan ,可通过dbms_xplan.display来查看执行计划 b.set autot c.v$sql_plan d.dbms_xplan.display_cursor a,b的执行计划都是根据explain plan得到的,因此都不是真实的(基表是sql_plan),而3,4的执行计划都是真实的(基表是 V$SQL_PLAN),cursor_sharing为force+直方图的时候可能存在一个假象,就是set autot trace给你显示的执行计划很完美,而真实的执行计划是当作绑定变量处理的,第一次查询的时候可能存在bind peeking的影响,而之后的
object_id 与data_object_id 的区别
对于dba_objects,有几个值得注意的地方 1, object_id与data_object_id是有区别的,前者指dictionary object number;后者指dictionary object number of the segment2, 对普通表及索引来说,object_id与data_object_id是一致的.当object不占用存储空间时, data_object_id为null,如分区表(不是指分区),view,sequence,synonym等等3, 分区表中的分区有不同的object_id和data_object_id; 分区表无data_object_id 注意dba_objects.object_id与dba_objects.data_object_id的区别OBJECT_ID :Dictionary object number of the objectDATA_
一个shell 脚本用来同步表用的
经常要将数据从外网同步到内网,一般会先drop掉内网的所有table后import数据进来。但是这样就会导致内网的AP不能使用。为将影响减少到最少,写了个脚本,将表一个个的导入进来,即truncate掉一个表再import一个表。[@more@]1.需先将外网的数据都export出来,本例的dump文件是t_remhs.dmp,需同步的文件是t_remhs_5,t_remhs_4,t_remhs_3,t_remhs_2,t_remhs_1[oracle@qht109 remhs_dump]$ exp l5m/l5m file=t_remhs.dmp tables=t_remhs_5,t_remhs_4,t_remhs_3,t_remhs_2,t_remhs_1Export: Release 10.2.0.4.0 - Production on Wed Mar 11 15:
Automatic Storage Management (ASM)在oracle的使用
测试了一下ASM在数据库中的使用,各种文件的建立方法。1.登入ASM库建立diskgroupSession ASM:SQL> drop diskgroup dgroup1;Diskgroup dropped.SQL> create diskgroup dgroup1 normal redundancy2 failgroup fgr...
ASM的数据库迁移回到DISK上
今天将昨天迁移到ASM的数据库再迁回到DISK上,测试步骤如下:1.由于RMAN backup时数据库需在archive状态,先将数据库置于archive状态:SQL> shutdown immediate;SQL> startup mount;SQL> alter database archiv...
迁移已存在的数据库到ASM中
此次测试将数据库迁移到ASM中,本例已将ASM instance和DB instance都建立好。测试环境:vmware server1.05+rhel4 u4+oracle 10.2.0.1参考 http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10734/rc...
10G bigfile表空间的支持--VLDB
学习bigfile的记录,bigfile表空间是针对大型数据库存储时db_files和maxdiatafiles数量不够用时使用的,一个数据库最多有64000个datafile,bigfile tablespace相对small tablespace有以下特点:1.一个bigfile表空...
通过SQLLDR导入LOB数据
本例通过SQLLDR来导入CLOB和BLOB对象。建表的SQL:CREATE TABLE lob_tab (number_content NUMBER(10),varchar2_content VARCHAR2(100),date_content DATE,clob_content CLOB,blob_content BLOB);需要导入的LOB资...
10g release 2的新特性--记录DML错误日志
当一个DML运行的时候,如果遇到了错误,不管在这之前成功了多少条记录,这条语句会整个回滚。以前解决这个问题的办法只有单独的执行每条语句,或者用FORALL的SAVE EXCEPTIONS子句。不过在10g release2中可以用LOG ERRORS子句来记录INSERT,UPDATE,MERGE,DELETE语句的错误记录。[@more@]1.语法:LOG ERRORS [INTO [schema.]table] [('simple_expression')] [REJECT LIMIT integer|UNLIMITED]INTO子句是要指定一个记录error log的表,如不指定则会以ERR$开头加表名的前25位字符。simple_expression是用来方便标识错误的记录的字符串REJECT L
同步vmware时间(ZT)
vmware时间同步问题是一个难题,根据本人使用vmware经验,vmware的时间同步可以有如下几个方法:[@more@]转自:http://space6212.itpub.net/post/12157/450838一、用VMWARE TOOLS同步时间注意:如果是用复制文件的方法创建虚拟系统,最好是在复制完文件之后分别安装VMWARE TOOLS。1) 安装vmware tools在 VMware 控制台上,以 root 用户身份登录。1. 单击 VM,然后选择 Install VMware Tools。2. rac1 — 虚拟机:单击 Install。3. 双击桌面上的 VMware Tools 图标。4. cdrom:双击 VMwareTools-1.0.1-29996.i386.rpm。5. 完成系统准备:单
索引的一点认识(ZT)
转自thomas zhang的杂货铺。http://tomszrp.itpub.net/post/11835/68822[@more@]在使用Oracle的过程,我们就不能考虑性能和SQL优化,而正确的使用索引是优化SQL中的很关键的因素.如果发现Oracle在有索引的情况下而没有使用索引,这并不是Oracle的优化器出错。在有些情况下Oracle确实会选择全表扫描(Full Table Scan),而非索引扫描(Index Scan)。比如: 1、表未做分析或者分析信息太老,导致 Oracle 判断失误.2、根据表拥有的记录和数据块数,实际上全表扫描要比索引扫描更快.对第1种情况最常见的例子,是以下这样的count语句: select cou
用vmware体验Oracle10g的ASM数据库
vmware版本:vmware server console 1.0.5数据库版本:10.2.0.1OS版本:rhel4 u4参考http://www.oracle-base.com/articles/10g/AutomaticStorageManagement10g.php[@more@]数据库是之前就安装好的,准备增加几个ASM设备来体验一下ASM管理的数据文件1.先用vmware的vdiskmanager工具创建了六个磁盘C:Program FilesVMwareVMware Server>vmware-vdiskmanager.exe -c -s 100Mb -a lsilogic -t 2 D:Virtual Machinessingle RHEL4_31asmasm01.vmdkUsing log file C:DOCUME~1L5MLOCALS~1Tempvmware-L5Mvdiskmanager.logCreating monolithic prea
10g跨小版本的expdp/impdp表空间迁移(一)
由于工作关系,需要将10.2.0.4的表空间迁移到10.2.0.1的数据库上,先试了一个跨小版本表空间迁移的可行性。[@more@]1.确定自包含表空间集合。自包含表空间集合是指具有关联关系的表空间集合。当搬移表空间是,如果在两个表空间之间存在关联关系,则必须同时搬移这两个表空间。通过执行包DBMS_TTS的过程TRANSPORT_SET_CHECK可以完成表空间集合是否为自包含的检测。执行完该过程后,系统将违反子包含表空间集合规则的信息写入到临时表transport_set_violations。SQL> exec sys.dbms_tts.transport_set_check('VIP2006');PL/SQL procedure
备份与恢复--一个表空间能否被多个数据库读写?
继续上一篇文章的测试,第一个数据库采用只读方式打开USERS表空间,然后在目标数据库通过重建数据库恢复的方式加载这个表空间,加载成功后,下面尝试在源数据库中将表空间以读写方式打开。[@more@]SQL> SELECT NAME FROM V$DATABASE;NAME---------ORCLSQL> alter tablespace users read write;alter tablespace users read write*ERROR at line 1:ORA-01256: error in locking database file 4ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'再看看目标库的情况SQL> SELECT NAME FROM V$DATABASE;NAME------