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中要谨慎使用update交叉更新!
在oracle中使用update进行交叉更新时一直都觉得很不方便,当然这是和sql server or sybase相比较而言的。[@more@]SQL> select *from a1; ID N SFZHAO---------- - ------------------ 1 a 1 c 2 a 2 c 3 c 123SQL> select *from a2; ID N SFZHAO---------- - ------------------ 1 c 111 2 d 111--如果使用下面的sql来更新表a1的话,我们发现出现了我们不希望出现的结果,把a1中id=3所对应的sfzhao由原来的123更新成了null,这是我们不希望的。SQL> upda
flashback query!
Oracle Flashback Query lets you view and repair historical data. You can perform queries on the database as of a certain wall clock time or user-specified system change number (SCN).Flashback Query uses Oracle's multiversion read-consistency capabilities to restore data by applying undo as needed.[@more@]Overview of Oracle Flashback QueryOracle Flashback Query lets you view and repair historical data. You can perform queries on the database as of a certain wall clock time or user-specified syste
sqlldr和external table的关系!
其实external table是对sqlldr工具的一个补充和完善![@more@]--创建目录SQL> connect /as sysdba已连接。SQL> create or replace directory sqldr2 as 'F:f_temporaclesqlldrtest6'3 ;目录已创建。SQL> select * from dba_directories;OWNER DIRECTORY_NAM DIRECTORY_PATH---------- ------------- --------------------------------------------------SYS SQLDR F:f_temporaclesqlldrtest6SYS DATA_PUMP_DIR e:oracleproduct10.2.0adminorcldpdump--给使用目录的用户授权SQL> grant read , write on directory sqldr to xys
oracle的两种global temporary table!
1. on commit delete rows2.on commit preserve rows[@more@]SQL> create global temporary table gt1 (id int) ;表已创建。SQL> insert into gt1 values(1);已创建 1 行。SQL> insert into gt1 values(2);已创建 1 行。SQL> select * from gt1;ID----------12SQL> commit;提交完成。SQL> select * from gt1;未选定行SQL> create global temporary table gt2 (id int) on commit delete rows ;表已创建。SQL> create global temporary table gt3 (id int) on commit preserve rows ;表已创建。SQL> insert int
一个有意思的权限问题!
题意是这样的:有3个用户test,test1,test2test下有一表ttest1下有一个view:create view v1as select * from test.t现在test1要把v1的select权限授予test2,需要具备什么条件?[@more@]1、第一种想法test用户在授予t的select 权限给test1时需要带上grant option选项以保证test1在授予v1的select权限时能保证它可以把test.t的select权限授予test2SQL> create user test identified by test;用户已创建。SQL> create user test1 identified by test1;用户已创建。SQL> grant connect, resource to test,test1;授权成功。SQL> c
dbms_scheduler中参数repeat_interval的一些例子!
来至于管理向导上的一些例子![@more@]Using the Scheduler Calendaring SyntaxThe primary method of setting how often a job will repeat is by setting the repeat_interval attribute with a Scheduler calendaring expression. See Oracle Database PL/SQL Packages and Types Reference for a detailed description of the calendaring syntax for repeat_interval as well as the CREATE_SCHEDULE procedure.Examples of Calendaring ExpressionsThe following examples illustrate simple repeat intervals. For simplicity, it
有关role的一点总结!
没有role完全可以控制权限的使用,只是不够灵活和方便而已,那么角色的作用到底是什么呢?简单的归结为2条:1)实现批量授权2)动态控制权限[@more@]1、角色的作用a)实现批量授权b)动态控制权限2、使role生效或者失效SQL> create role rl1;角色已创建。--可以为role设置password,防止他人随意设置roleSQL> create role rl2 identified by rl2 ;角色已创建。SQL> select * from dba_role_privs where grantee='XYS';GRANTEE GRANTED_ROLE ADM DEF------------------------------ ------------------------------ --- ---XYS DB
SYS_CONTEXT小记!
SYS_CONTEXT函数非常有用,和系统触发器结合起来可以很好的实现审计功能![@more@]selectSYS_CONTEXT('USERENV','TERMINAL') terminal,SYS_CONTEXT('USERENV','LANGUAGE') language,SYS_CONTEXT('USERENV','SESSIONID') sessionid,SYS_CONTEXT('USERENV','INSTANCE') instance,SYS_CONTEXT('USERENV','ENTRYID') entryid,SYS_CONTEXT('USERENV','ISDBA') isdba,SYS_CONTEXT('USERENV','NLS_TERRITORY') nls_territory,SYS_CONTEXT('USERENV','NLS_CURRENCY') nls_currency,SYS_CONTEXT('USERENV','NLS_CALENDAR') nls_calendar,SYS_CONTEX
oracle time_zone!
http://space.itpub.net/756652/viewspace-244138转,不错的文章![@more@]http://space.itpub.net/756652/viewspace-244138
fast parse,soft parse,hard parse的区别!
http://www.itpub.net/thread-877110-1-5.html收藏记录一下![@more@]http://www.itpub.net/thread-877110-1-5.html
active session的准确定义!
什么是 active session ![@more@]An active session is defined as a session that is currently inside a transaction, a query, a fetch or a PL/SQL procedure, or a session that is currently holding any shared resources (for example, enqueues--enqueues are shared memory structures that serialize access to database resources and are associated with a session or transaction)
远程调用procedure可能会有一些缺陷!
看到pub上有人问如何远程调用过程,其实大部分人都会想到通过db link事实上也确实如此,不过我相信实际在使用的时候可能没有多少人这样用而是通常会使用另外的办法[@more@]测试过程:1.首先连上库db11查看并测试了事先创建好的proc_testC:>sqlplus xys/managerSQL*Plus: Release 11.1.0.6.0 - Production on 星期三 4月 2 14:06:59 2008Copyright (c) 1982, 2007, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Appl
sqlplus中define定义的常量和variable定义的变量的区别!
前两天看到有人在pub上问在sqlplus中通过define和variable定义的变量的区别。其实define定义的我理解不是变量而是字符常量,通过define定义之后,在通过&或者&&引用的时候不需要输入了,仅此而已。oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量。[@more@]C:>sqlplus xys/managerSQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4月 1 14:03:00 2008Copyright (c) 1982, 2007, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith
constraint=constraints?
偶然发现在为字段增加约束时使用constraint或者constraints都可以创建成功,查看oracle语法发现是constraint,不知道是否是bug?[@more@]SQL> create table t(id int primary key);表已创建。SQL> create table tt(id int);表已创建。SQL> alter table tt add constraint fk_tt foreign key (id) references t(id);表已更改。SQL> alter table tt drop constraint fk_tt;表已更改。SQL> alter table tt add constraints fk_tt foreign key (id) references t(id);表已更改。SQL>
merge用法测试随手记!
matched之后的delete语法是10g之后才有的,使用起来更加灵活方便了;而且10g中还增加了where子句可以控制条件[@more@]测试1:SQL> create table t(id int , name varchar2(10));表已创建。SQL> insert into t(id) values(1);已创建 1 行。SQL> insert into t(id) values(2);已创建 1 行。SQL> insert into t(id) values(3);已创建 1 行。SQL> insert into t values(8,'h');已创建 1 行。SQL> insert into t values(null,'m');已创建 1 行。SQL> commit;提交完成。SQL> create table tt(id int , name varchar2(10
resumable特性以及系统触发器中的SUSPEND event测试!
之前一直没有搞清楚系统触发器中的suspend事件什么时候触发,正好看到一位puber问此问题,搜索一下doc,做了一个简单的测试。[@more@]参考doc:http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/schema.htm#sthref2075session1:SQL> create tablespace users datafile 'E:ORACLEPRODUCT10.2.0ORADATAORCLUSERS.DBF' SIZE 3M;表空间已创建。SQL> grant resumable to xys;授权成功。SQL> create or replace trigger trigg_system 2 after suspend on database 3 begin 4 dbms_resumable.set_timeout(10)
user和schema的区别
这两个概念确实不太好理解说穿了其实user是控制权限的,而schema是个容器,非所有者要访问这个容器下的对象就需要在对象前面写上schema(owner)的名字,如果不想写而又没有创建synonym,此时可以通过alter session set current_schema=schema_name来改变当前session的schema从而在访问对象时省去schema(owner);最终能否访问对象还是要看是否有访问这个对象的权限而和schema无关。[@more@]user和schema的区别:说穿了其实user是控制权限的,而schema是个容器,非所有者要访问这个容器下的对象就需要在对象前面写上schema(owner)的名字
Oracle 的管道化表函数(Pipelined Table) 转
http://wxy0327.itpub.net/post/16888/195142转[@more@]http://wxy0327.itpub.net/post/16888/195142
cursor express的一点测试!
http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/expressions6a.htm#1033378[@more@]SQL> create table t(id int , name varchar2(10) , salary number(10,2));表已创建。SQL> insert into t values(1 , 'a' , 1000);已创建 1 行。SQL> insert into t values(2 , 'b' , 2000);已创建 1 行。SQL> insert into t values(3 , 'c' , 3000) 2 ;已创建 1 行。SQL> commit;提交完成。--利用sys_refcursor定义的输入ref cursor变量定义一个函数处理结果集之后才返回想要的结果SQL> create or replace functi