解决RAW在SQLPLUS上无法显示的问题
解决RAW在SQLPLUS上无法显示的问题[@more@]解决RAW在SQLPLUS上无法显示的问题SQL> drop table t purge;表已删除。SQL> create table t ( 2 a varchar2(5), 3 b long raw 4 );表已创建。SQL> insert into t values('1111','123456789abcdef');已创建 1 行。SQL> commit;提交完成。SQL> select * from t;A B----- -1111 0这时候B是显示不出来的。这样就显示出来了。SQL> set serveroutput onSQL> begin 2 for x in (select * from t) 3 loop 4 dbms_output.put_line('a= '||x.a); 5
为什么建议使用命令行工具?
为什么建议使用命令行工具?[@more@]问:为什么建议使用命令行工具?答:不管你是使用SQL SERVER数据库,还是使用Oracle,DB2数据库也罢,都建议使用命令行工具来管理数据库,因为命令行工具具备图形界面无法比拟的优点:1、速度快,命令行工具都是基于字符模式的输入输出。在系统的运行上省去了图形界面的操作时间。同时很多图形界面管理系统,例如Oracle的OEM,为了跨平台的使用是建立在java平台下,这样系统的运行需要java虚拟机。系统命令的交互也是通过虚拟机实现。而命令行工具则是不存在这些问题。2、操作相对安全。在图形界面下很
使用SQL实现特殊查询(1)
使用SQL实现特殊查询(1)[@more@]使用SQL实现特殊查询(1)对于一个表如下:SQL> select * from t;A B----------- ---------------------------------------2006-2-1 12006-2-2 12006-2-3 12006-2-4 12006-2-5 12006-2-6
函数索引的存储
函数索引的存储[@more@]函数索引做一个很有意思的试验:SQL> create table t as select rownum a from all_objects where rownum < 11; Table createdSQL> select table_name,column_name from user_tab_cols;TABLE_NAME COLUMN_NAME------------------------------ ------------------------------T ASQL> create index t_ind on t(a+100);Index createdSQL> select table_name,column_name from user_tab_cols;TABLE_NAME COLUMN_NAME-----------
关于一个数据库列设计的问题
关于一个数据库列设计的问题(from askTom)[@more@]关于一个数据库列设计的问题From askTom在ASKTOM上有一个问题是:Hi Tom,I am in a situation to define a primary key values.My primary value contains data in the following format..100020051225000001Here the first 4 digits represent site id (1000)Second set of 8 digits represent Date in YYYYMMDD (20051225)the last 6 digits represent transaction # (0000001)This is my requirement. Now I have a question 1.Which data type is best suitable ?Varchar2 or Number
临时表在收集统计的时候会出现的问题
临时表在收集统计的时候会出现的问题[@more@]临时表在收集统计的时候会出现的问题添加一个临时表:SQL> create global temporary table gtt(x int) on commit preserve rows;表已创建。SQL> insert into gtt select rownum from all_objects where rownum <= 1000;已创建1000行。SQL> set autotrace on expSQL> select count(*) from gtt; COUNT(*)---------- 1000执行计划----------------------------------------------------------Plan hash value: 3344941513------------------------------------------------
数据库DDL操作审计
数据库DDL操作审计(from askTom)[@more@]数据库DDL操作审计可以使用以下触发器来实现:from askTomcreate or replace trigger ddl_trigger after create or alter or drop on SCHEMA declare l_sysevent varchar2(25); l_extra varchar2(4000); begin select ora_sysevent into l_sysevent from dual; if ( l_sysevent in ('DROP','CREATE') ) then if l_sysevent = 'CREATE' then begin select 'storage ( initial ' || initial_extent || ' next ' ||
为什么需要对约束添加名称?
为什么需要对约束添加名称?[@more@]为什么需要对约束添加名称?在设计Oracle数据表的时候,时常需要对表的列添加一定的约束,添加表的时候,约束可以是命名的,也可以是匿名的,而在匿名的时候,系统会对这个约束自动添加上系统命名的约束名,但是如果不对约束命名的时候,有可能在未来的操作中产生性能影响。下面就这个问题做一个试验:添加一个表:SQL> create table t ( 2 a int check (a>10), 3 b int constraint b_rule check (b>10), 4 c int not null, 5 d int unique, 6 e int primary key 7 );Table crea
DB2傻瓜1000问(一)
DB2傻瓜1000问(一)[@more@]DB2傻瓜1000问康标整理DB2简介1、 DB2的历史是怎样的?1983年IBM发行第一版是针对MVS系统的。1996年的V5。1999年支持LINUX系统。2004年出版V8.2。06年出现V9。2、 DB2的信息管理产品(DB2 Information Management Products)都有什么?Database ServersDB2 Business IntelligenceDB2 Content ManagementDB2 Information IntegrationDB2 and IMS Tools3、 DB2 UDB都有那些版本?V8有以下5个版本:Everyplace EditionPersonal EditionWorkgroup Server EditionExpress EditionEnterprise Server EditionV9有以下
DB2傻瓜1000问(二)
DB2傻瓜1000问(二)[@more@]101、 什么是数据库分区组?数据库分区组是一个或者多个数据库分区的集合。通过数据库分区的分组,能够在一个分区组的级别进行数据库操作,而不是在单一的分区进行。这样能够使得操作更为简便。102、 如何建立数据库分区组?CREATE DATABASE PARTITION GROUP103、 默认添加的分区组都是那些?在建立数据库的时候,有三个分区组被默认添加:IBMCATGROUPIBMTEMPGROUP IBMDEFAULTGROUP104、 IBMCATGROUP分区组是什么?这个分区组只是DB2的目录表空间SYSCATSPACE在里面。只是含有一个分区,这个分区就是执行CREATE
在Oracle 10g和9i上对于开发者一些新的特性的总结
在Oracle 10g和9i上对于开发者一些新的特性的总结[@more@]在Oracle 10g和9i上对于开发者一些新的特性的总结1、 内部PL/SQL的增强一体化SQL和PL/SQL解析器在Oracle 9i之前,SQL引擎和PL/SQL引擎是分开的,但是在Oracle9i之后是合在一起的。内部PL/SQL性能的增强SQL和PL/SQL运行引擎的一体化。减少从SQL中调用PL/SQL。在10g中使用新的编译器。10g要比9i快50%到75%。在10g中使用新的Debugging Capabilities 。使用PL/SQL初始化参数PLSQL_WARNINGS。初始化参数PLSQL_WARNINGS有三种类型的选项:ENABLE允许使用警告,能够基于所有类型的警告和
限制访问Oracle客户端IP方法总结
限制访问Oracle客户端IP方法总结[@more@]限制访问Oracle客户端IP方法总结在itpub上有一个帖子讨论了一个话题,就是关于限定访问Oracle客户端IP的方法问题的讨论,我印象中似乎这样的问题在论坛上已经讨论了比较多了,今天就总结一下。http://www.itpub.net/743725,1.html这里讨论的在Oracle数据库层面上限制IP的方法,当然还有可以在网络层面上限制IP,例如防火墙软件等方式。应用层,例如:WebLogic设置访问数据库的IP。在Oracle数据库中由于版本的差异,可以通过不同的方式来解决这些问题。有几种方式来实现这样的功能:1、 修改SQLNET.
SQL/Plus中的一些容易混淆的问题
SQL/Plus中的一些容易混淆的问题[@more@]SQL/Plus中的一些容易混淆的问题@和@@的区别@命令用于运行SQL脚本文件。而@@是在脚本文件中嵌套调用其他的脚本文件,当使用该命令嵌套脚本文件时候,可在调用文件所在的目录下查找相应文件名。&和&&的区别&所定义的替代变量只是在当前语句中起作用。&&所所定义的变量会在当前SQL*Plus环境中一直有效。和DEFINE类似。
PGA和UGA的探究
PGA和UGA的探究[@more@]PGA和UGA的探究PGA和UGA一直是我很迷惑的两个概念,今天就好好学习一下这两个概念。在Oracle的官方定义中:PGA的定义是:A program global area (PGA) is a memory region which contains data and control information for a server process.意思就是说PGA就是服务器进程的内存区域。详细来说应该是对于每一个进程或者现成线程的私有内存区域,并不能被其他进程或者线程访问。是由调用c函数malloc()或者memmap()分配的一片内存区域,在生命周期中可以增长或者缩小。UGA事实上是会话的状态,是会话能够获得的内存区
STATSPACK报告解读
STATSPACK报告解读[@more@]STATSPACK报告解读STATSPACK report forDB Name DB Id Instance Inst Num Release Cluster Host------------ ----------- ------------ -------- ----------- ------- ------------his 1834191151 his 1 9.2.0.4.0 NO server这部分主要是数据库环境的一些信息,例如实例名、数据库名、数据库版本等信息。http://spaces.msn.com/kang-biao Snap Id Snap Time Sessions Curs/Sess Comment ------- ------------------ ------
SHARED_POOL解析
SHARED_POOL解析[@more@]SHARED_POOL解析共享池是SGA中的一部分,主要由以下几部分组成:n 库缓存n 数据字典缓存n 用户全局区(共享服务器模式)在这里需要注意的是,共享池的大小定义是由参数SHARED_POOL_SIZE来控制,要合理调整这个参数的大小,以为共享池的内容要比数据库数据缓存更消耗系统的资源。而调整共享池的重点是调整库缓存的命中率上来,因为,在解析时使用的算法中需要把持内存中的数据字典地时间要比库缓存数据的时间要长。优化SHARED_POOL有以下的好处:1、 避免过渡的SQL文的解析,这样可以节约服
关于BUFFER POOL的一些总结
关于BUFFER POOL的一些总结[@more@]关于BUFFER POOL的一些总结BUFFER POOL有三个池组成:BUFFER POOL 、KEEP、RECYCLE组成。这三个池各有自己的算法来更新存放池中的数据。BUFFER POOL使用的是LRU算法来存放数据块,数据块会根据访问的频率的多少来决定在这个池中存放的时间。KEEP使用的一直存放的算法,将数据一直存放在这个池中,数据不会被清除出池,但是需要说的是所要存放的数据块应该少于池本身的大小。而且存放的数据块的内容一般是需要重复访问的数据块。RECYCLE是存放不经常使用的数据块,也就是说,这个池的算法是不保留数据块,
外连接的一些总结
外连接的一些总结[@more@]外连接的一些总结外连接扩展简单连接的结果,一个外连接返回的值不仅是所有满足连接条件的行,同时还有为NULL值的行。建立试验表A、BSQL> select * from a; A1 A2---------- -- 1 1 2 3 3SQL> select * from b; B1 B2---------- -- 1 1 2 2SQL> select * from a,b where a2=b2; A1 A2 B1 B2---------- -- ---------- -- 1 1 1 1SQL> select * from c; C1 C2---------- -- 1 1 2 4
自动设置SPOOL文件名为当前日期
自动设置SPOOL文件名为当前日期[@more@]自动设置SPOOL文件名为当前日期column spool_name new_value Sset termout offselect to_char( sysdate, 'ddmonyyyyhh24mi' ) spool_name from dual;set termout onspool &S
Checkpoint总结
Checkpoint总结[@more@]Checkpoint总结Checkpoint就是一个重做流中的一个点,是一个SCN。所有的在这个点之前的所有发生的脏数据块将在检测点发生之后写入到磁盘中。检测点能够多个事件触发,例如数据库的关闭,线程的关闭,热备份等。由于触发方式的不同使得检测点有不同的分类:n 数据库、全局检测点n 线程、本地检测点(RAC)n 数据文件检测点n 增量检测点n 最小检测点(DDL基础)数据库、全局检测点产生的原因:1) 日志切换2) 初始化参数触发3) Alter system checkpoint触发执