9i merge的限制

今天 有网友在说9i merge用法的问题,我小测了一下,感觉区别还是蛮大的

C:\>sqlplus anbob/anbob@192.168.3.156/anbob

测一把ORACLE 11G Flashback Data Archive

SQL> create flashback archive arch_area tablespace flasharch quota 9m retention 1 year;

闪回档案已创建。

SQL> create table testfbk(id int) flashback archive arch_area;

oracle wrap 工具加密sql源代码

oracle 提供了wrap 工具加密你的sql 源代码,现在很编程都把业务逻辑写进了数据库,一些核心的代码不想被公开,比如使用传统的方法创建procedure,源代码是明文保存在oracle数据字典里面的

ORACLE 对象类型 ODCIAggregate

CREATE OR REPLACE TYPE “STRCAT_TYPE” as object(
cat_string varchar2(4000),
static function ODCIAggregateInitialize(cs_ctx in out strcat_type) return number,
member function ODCIAggregateIterate(self in out strcat_type,value in varchar2) return number,
……….

ORA-25153: Temporary Tablespace is Empty

SQL> select dbms_metadata.get_ddl(‘TABLE’,’SQLLDR_TEST’,’ANBOB’) from dual;
ERROR:
ORA-25153: Temporary Tablespace is Empty
ORA-06512: at “SYS.DBMS_LOB”, line 443
ORA-06512: at “SYS.DBMS_METADATA”, line 2729

oracle ORA_ROWSCN 行记录的更新时间

在这介绍两个oracle 10G开始提供的一个伪列ORA_ROWSCN,它又分为两种模式一种是基于block,这是默认的模式,还有一种是基于row上,这种模式只能在建里表时指定ROWDEPENDENCIES,不可以通过后期的alter table ,同时会给数据库带来性能负载

oracle 排除(exclude)字段查询表

如果一张表有30个字段,40个,100个…,反正就是不小字段时,如果你查询部分字段数据,是不是要一个个字段名都写上,有没有一种指明排除几个字段查询呢?今天看有人问这个问题,随便做一下。

SQL>CONN anbob/anbob

SQL> create table test_cols(id int);

truncate 会记录日志么?logmnr可以找到么?

如果有人truncate了你的表,你能揪出是谁么?会记录redo日志么?下现做一个实验,用事实说话

SQL> select * from v$version;

BANNER
——————————————————————————————————————————–
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Prod

linux 命令从redo日志中找sql

用linux的命令是可以读出redo日志的

[oracle@orazhang windb]$ strings redo1.log |sed -n ‘/create procedure/,/end;/p’
create procedure ptest
begin
dbms_output.put_line(‘nothing’);
end;

一个面试题

起始地 目的地 距离(公里)
A B 1000
A C 1100
A D 900
A E 400
B D 300
F G 1000
C B 600
请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。

procedure调用DDL需显示授权

存储过程中执行DDL与DML有很大的区别,比如你在存储过程中创建表,虽然你授于了建表的角色给它,即便是DBA,在调用时也是会提示ORA-01031: insufficient privileges,显然是权限问题,记住如果在存储过程中调用DDL要显示授权,通过ROLE传授的权限是被忽略的。下面做一个实验证明

SQL> conn test/test

,

sql 存储过程中得到用户名

SQL> create or replace procedure p_user
2 is
3 begin
4 insert into test_pro(id,name,insertdate) values(userenv(‘SESSIONID’),user,sysdate);
5 end;
6 /

Script: oracle 判断字符是否是日期格式

如果在原数据中表中数据是以字符串形式保存,现在要转换为date日期类型时有部分数据格式会出错,这就需要查出那些异常数据

1,可以用正则,这个比较麻烦每月天数不一样,闰年2月天数又不一样等 等

2,自己写一funcation ,捕获异常判断
….

oracle 提取时间 抽取函数

oracle抽取函数

今天朋友问个问题,如何抽取时间的”小时”

oracle的抽取函数是 extrac()

Script:oracle拆分逗号分隔字符串 实现split

如果一个字符串中有像逗号或其它符号分隔,你想把它折分成列,实现像c#和java中split函数的功能
如’first field, second field , third field’,

拆成

first field

second field

third field