摘要:很多时候我们需要把一个字符串分割成多个元素,存放在Collection里面处理。比如Web传送一个逗号分隔的字符串,PL/SQL需要对里面的每个元素进行处理。这实际上是行列转换的一个具体应用。我们习惯使用的两个办法分别是 1. 使用PL/SQL循环分割 2. 使用单条SQL进行分割。 下面测试这两种方式的限制和性能 首先分别使用两种方式构造两个函数 -- use conve...
阅读全文
摘要:有 时候我们需要找出在一组连续的号码中,有哪些是缺失的部分。具体的需求又分为两种情况查找 连续部分的最大和最小值查找缺少的部分经过构造的数据如下-- preparationdrop table test1 purge;create table test1(id int,dt date);insert into test1 (id, dt) select rownum as id, trunc(add_months(sysdate, rownum), 'mm') as dt from dual connect by rownum <= 20;delete test1 whe
阅读全文
摘要:Install Software首先检查package rpm -q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils 修改内核参数 修改系 统内核参数,设置共享内存: 1.修改 /proc/sys/kernel/shmmaxecho 1073741824 > /proc/sys/kernel/shmmax 对 于 shmmax 文件的修改,系统重新启动后会复位。 2.修改 /etc/sysctl.conf 使更改永久化 在该文件内添加以下一行 这个更改在系统重新启动后生效 kernel.shmmax = 10
阅读全文
摘要:What kind of NLS env is used when a scheduler job is running? And what if this job creates some more children jobs?The answer is that this job and its children will inherit NLS env from the creator's. That means, if you create a scheduler job in an English session, all relative jobs run in Engli
阅读全文
摘要:前面的例子中,可以使用plsql语法指定repeat_intervalrepeat_interval => 'sysdate + interval ''10'' second'=================================================================在 指定时间,前一个instance还在运行的情况下,会发生什么?=================================================================被 执行的sp随机停止8-12秒( p_2使
阅读全文
摘要:drop table scheduler_test;create table scheduler_test(x varchar2(200), y int);truncate table scheduler_test;select * from scheduler_test order by 1;begin dbms_scheduler.drop_job('ttt'); dbms_scheduler.purge_log(job_name => 'ttt');end;/create or replace procedure p_1(p_x varchar2)i
阅读全文
摘要:OS: Linux AS4DB: Oracle 10gR2案例:在2007-01 -19的13点左右,对TEST下的一些表进行了删除(delete,drop,truncate)Last login: Fri Jan 19 15:00:31 2007 from 192.168.10.100[oracle@testsrv1 ~]$ sqlplus /nolog[uniread] Loaded history (3548 lines)SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jan 19 15:53:54 2007Copyright (c) 1
阅读全文
摘要:1。使用一个很小的undo tablespace,并且固定大小 create undo tablespace undo_small datafile 'xxx' size 1m autoextend off; alter system set undo_tablespace=undo_small scope=memory;2。建立表,确保数据object_id随机分布 create table t as select * from all_objects order by dbms_random.random; create index idx_t on t(object_id
阅读全文
摘要:在一个高可用系统中,如果需要改变一个表 的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基 本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是, Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作在线重定义表具有以下功能:修改表的存储参数;可以将表转移到其他表空间;增加并行查询选项;增加或删除分区;重建表以减少碎片;将堆表改为索引组织表或相反的操作;增加或删除一个列。调用DBMS_RED
阅读全文
摘要:初始化文件首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则。这两个参数集可以在数据库实例、单个数据库、表、列等四个级别指定。对于使用者来说,一般推荐使用utf8编码来存储数据。而要解决乱码问题,不单单是MySQL数据的存储问题,还和用户的程序文件的编码方式、用户程序和MySQL数据库的连接方式都有关系。在MySQL5.5版本下,在my.cnf (my.ini)中指定数据库端字符集为UTF8,其中init_connect参数的作用是给每个普通用户的连接自动设置字符集(但是要注意的是
阅读全文
摘要:MySQL Proxy二进制方式安装,版本0.8.1,安装地址192.168.40.129# 为了方便测试,暂时停止MySQL的主从复制 ,然后分别插入一条数据mysql> stop slave;# Master库上的数据mysql> select * from test.t;+------+------+| x | y |+------+------+| 1 | 130 |+------+------+1 row in set (0.00 sec)# Slave库上的数据mysql> select * from test.t;+------+------+| x | y |
阅读全文
摘要:Master: 192.186.40.130Slave : 192.186.40.131以下是在Master库进行的操作# 在Master上启用bin log,设置唯一Server IDshell> vi /etc/my.cnf[mysqld]log-bin=mysql-binserver-id = 1# 建立复制用的usermysql>CREATE USER 'repl'@'%' IDENTIFIED BY 'repl';mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'
阅读全文
摘要:Install on Linux采用二进制方式安装# 建立用户和组 (Ubuntu等系统下使用-m参数建立home dir)shell> groupadd mysqlshell> useradd -r -g mysql -d /home/mysql -m -s /bin/bash mysql# 解压安装shell> cd /usr/localshell> tar zxvf /path/to/mysql-VERSION-OS.tar.gzshell> ln -s full-path-to-mysql-VERSION-OS mysqlshell> cd mysq
阅读全文
摘要:前几天和朋友讨论数据库建模的时候,说起PK使用的数据类型这个话题。我个人是支持使用int,尤其是sequence生成的无意义数字。不过朋友坚持认为GUID更具有唯一性,并且经过测试,两者性能差异不大。我就做了这个测试用数字来说话。测试环境VMWare ESXi 5.0RHEL 5.1 64bitOracle 11gR2 64bit测试数据方案1采用int类型,方案2采用sys_guid()产生的RAW(16)。两种方案中除了字段类型不同之外,其他字段都是随机长度,随机内容的字符串,其中一个字段有索引。保证两种方案具有可比性。-- 测试的语句,索引查询之后进行join和group。select
阅读全文
摘要:原来的笔记,操作分区表的一个例子(增加,删除,切换分区之类)呵呵,里面还有RPS表的名字Add & SplitAdd & Split---------------------------------------------------------------------------- list partitioned table---------------------------------------------------------------------------- truncate table acct_spct_inst_x_acct_amt;drop tabl
阅读全文
摘要:使用pipeline和并行的存储过程,记录一下。Parallel Query应该满足两个条件 1。大的,运行时间很长的查询 2。有足够的系统资源parallel query is essentially nonscalable.如果有很多用户执行pq,那么实际效果会很差,因为很多用户会造成系统资源的竞争。比如在OLTP里面,qc就不合适。Parallel DML必须显式指定 alter session enable parallel dml;否则不会发生 Parallel DDL可以并行的DDL(9i) create index create table as select alter in.
阅读全文
摘要:================================================================================================== 当改变Listener的默认端口1521的时候,需要在tnsnames.ora里面进行修改,并且指定Oracle的local_listener参数,才能实现监听的动态注册 P.S 注册过程是通过后台进程PMON实现的=============================================================================================
阅读全文
摘要:今天整理以前的笔记,发现还有一些用E文写的笔记。在外企混了几年,E文还是这个德行。这里做个留念 SP的调用者权限What is invoker's right subprogram? According to Oracle document, the answer is 'use the AUTHID clause, which makes stored procedures and SQL methods execute with the privileges and schema context of the calling user. 'That is to sa
阅读全文
摘要:ORA_ROWSCNFlashback Query Timestamp or SCN VersionSQL> create table t as select rownum as x,rownum as y from dual connect by rownum<=3;通过rowid解析block number和row number,看出这三条数据的block number相同,说明都在同一个data block里面SQL> select dbms_rowid.rowid_block_number(rowid) blk, dbms_rowid.rowid_row_number
阅读全文
摘要:格式化SYS_GUID() Oracle里面用RAW(16)保存SYS_GUID()的结果,不过字节顺序(byte order)和标准的GUID不同。如下 标准GUID: 265B113F-0E9D-F44D-A9D4-18BC4D3E836C RAW(16) : ...
阅读全文