我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用。而另一种方法就是写复杂的脚本来查询数据字典,但这对于一稍微复杂的对象,如IOT和嵌套表等,还是无法查到。   从数据字典中获得DDL语句是经常要用的,特别是在系统升级/重建的时候。在Oracle 9i中,我们可以直接通过执行dbms_metadata从数据字典中查处DDL语句。使用这个功能强大的工具,我们可以获得单个对象或整个SCHEMA的DDL语句。最好不过的是因为它使用起来很简单。
  1、获得单个表和索引DDL语句的方法:
  set heading off;
set echo off;
Set pages 999;
set long 90000;
spool get_single.sql
select dbms……
编辑 | 阅读全文(24) | 回复(0),峰峦猎人 发表于 2007-10-12 10:10

2007-10-12 9:26 | sqlca.sqlcode

SQLCODE 是废弃的错误代码模式,是一个简单的整数。 0 标识成功,正数标识带着额外信息的成功,负数表示一个错误。SQL 标准只定义了正数值 +100, 这个表示最后的命令返回零行或者影响了零行,并且没有特定的负数值。 因此,这个模式只能实现很有限的一致性并且并没有一个层次化的代码机制。 历史上,PostgreSQL 的嵌入的 SQL 处理器为自己使用赋予了一些 SQLCODE   的数值,这些都在下面列出,包括他们的数值和符号名。记住这些是不能移植到其它 SQL 实现中去的。 为了简化应用向 SQLSTATE 模式的移植,我们还列出了 SQLSTATE。 不过,这两个模式之间没有一对一或者一对多的映射(包括多对多),所以在任何情况下你都应该参考在 Appendix A 里列出的全局SQLSTATE。

这些是已经赋值的 SQLCODE 数值:

-12 (ECP……
编辑 | 阅读全文(228) | 回复(0),峰峦猎人 发表于 2007-10-12 9:26
rollup,cube子句在Oracle中可以用来做交叉报表,如:如总计,小计类的功能很容易实现;但是必须和group by 子句一起使用。举例如下:

Oracle的Cube,Rollup子句的用法
产生交叉报表的情况,演示一个cube的例子

  create table test(sales varchar2(10),dest varchar2(10),revenue number);
  insert into test values('smith','hangzhou',1000);
  insert into test values('smith','wenzhou',2000);
  insert into test values('allen','wenzhou',3000);
  insert into test values('allen','wenzhou',400……
编辑 | 阅读全文(250) | 回复(1),峰峦猎人 发表于 2007-9-26 22:15

2007-9-26 22:14 | SQL 的跟踪方法trace

大致分如下6步骤执行,看下文...

1:进入SQL WINDOW窗口w1
2:找到你当前的SQL WINDOW SESSION(把本机所有别的SESSION都关掉,查看w1的session id,SERIAL#)
3:找到你当前SQL WINDOW(窗口w1)的PROCESS_ID(在另外的窗口W2)spid
(方法:Select a.Status, a.Sid, a.Serial#, a.Saddr, a.Paddr, b.Spid, b.Addr, a.Machine
From V$session a, V$process b Where b.Addr = a.Paddr And a.Sid =xx)
4:在SQL WINDOW(窗口W2)执行 dbms_system.set_sql_trace_in_session (l_sid, l_serial, TRUE);
5:在SQL W……
编辑 | 阅读全文(28) | 回复(0),峰峦猎人 发表于 2007-9-26 22:14
Oracle表空间的执行状况要经常查看,一般空闲比例过低的时候就应该考虑增大表看空间了。查看方法如下SQL:
方法一:
select dbf.tablespace_name,
dbf.totalspace "总量(M)",
dbf.totalblocks as 总块数,
dfs.freespace "剩余总量(M)",
dfs.freeblocks "剩余块数",
(dfs.freespace / dbf.totalspace) * 100 "空闲比例"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t……
编辑 | 阅读全文(186) | 回复(0),峰峦猎人 发表于 2007-9-26 22:8

2007-9-24 12:52 | 学做oracle客户端精简版

按照下面的方法做出来的还可以再精简的,但那就得自己测试了,一点儿一点儿的删除看上去用不到的文件。最后要注意系统环境变量path的问题。
    1、找一台没装过Oracle客户端的电脑自定义安装10GR2的CLIENT,仅选择Oracle Net
和其它必选的组件安装。(晕啊,这样装好后居然也还要两百多MB)。
    2、通过查阅文档和利用filemon和regmon观察,rip出以下目录的文件:
         ├─BIN
         ├─NETWORK
         ……
编辑 | 阅读全文(154) | 回复(0),峰峦猎人 发表于 2007-9-24 12:52

2007-9-21 15:30 | oracle中dump函数

DUMP函数的输出格式类似:
类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20]
各位的含义如下:
1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)
2.长度:指存储的字节数
3.符号/指数位
在存储上,Oracle对正数和负数分别进行存储转换:
正数:加1存储(为了避免Null)
负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)
指数位换算:
正数:指数=符号/指数位 - 193 (最高位为1是代表正数)
负数:指数=62 - 第一字节
4.从<数字1>开始是有效的数据
从<数字1>开始是最高有效位,所存储的数值计算方法为:
将下面计算的结果加起来:
每个<数字位>乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)……
编辑 | 阅读全文(63) | 回复(0),峰峦猎人 发表于 2007-9-21 15:30
shell for Sco Unix 5.05 脚本给各位,
可在 sybase 用户下创建,将其命名为 bcpoutdata 。
然后 chmod a+x bcpoutdata
在 sybase 用户下运行 bcpoutdata 即可。
注:
1)将 database_name 改为你的数据库名。
2)将 pas 改为你的 sa 口令。
3)将 server 改为你的 SQL server 名。
4)要导入,将 out 改为 in 即可。
最后提醒你,别忘了要在 sybase 用户下创建一个目录,
把 bcpoutdata 置入其中,再运行。
什麽?你要打包、压缩。
哈,在后面加几条:
tar cvf data.tar *.bcp
compress data.tar
rm *.bcp
愿各位好运

isql -Usa -Ppas -Sserver -ot……
编辑 | 阅读全文(111) | 回复(0),峰峦猎人 发表于 2007-9-4 16:48

2007-8-31 17:0 | Oracle启动步骤

首先看看listener是否启动

$ lsnrctl service

LSNRCTL for Intel SVR4 UNIX: Version 8.1.6.0.0 - Production on 02-APR-2001 11:14:08

(c) Copyright 1998, 1999, Oracle Corporation. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC)))
TNS-01103: Protocol specific component of the address is incorrectly specified
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter……
编辑 | 阅读全文(31) | 回复(0),峰峦猎人 发表于 2007-8-31 17:0

2007-8-31 11:55 | SQL&PL/SQL问答

[Q]怎么样查询特殊字符,如通配符%与_
[A]select * from table where name like 'A_%' escape ''
[Q]如何插入单引号到数据库表中
[A]可以用ASCII码处理,其它特殊字符如&也一样,如
insert into t values('i'||chr(39)||'m'); -- chr(39)代表字符'
或者用两个单引号表示一个
or insert into t values('I''m'); -- 两个''可以表示一个'
[Q]怎样设置事务一致性
[A]set transaction [isolation level] read committed; 默认语句级一致性
set transaction [isolation level] serializable;
read only; 事务级一致性
[Q]怎么样利用游标更新数据……
编辑 | 阅读全文(29) | 回复(0),峰峦猎人 发表于 2007-8-31 11:55

1.系统表

Oracle数据库的系统参数都存储在数据库中,可以通过SQLPLUS,以用户SYSYTEM进行查询。几个重要的表或者视图如下:
v$controlfile:控制文件的信息;
v$datafile:数据文件的信息;
v$log:
日志文件的信息;
v$process:处理器的信息;
v$session:会话信息;
v$transaction:事务信息;
v$resource:资源信息;
v$sga:系统全局区的信息。

上面的视图名中的‘v$’,只是视图名字中的字符。类似于上面的视图或表还有很多,位于:
$ORACLE_HOME/RDBMS/ADMIN/CATALOG.SQL文件中。

这些视图或表可以在SQLPLUS中用SELECT语句进行查询。

2.数据字典视图

表和列

DBA_TABLES、ALL_TABLES和USER_TABLES显示了有关数据……

编辑 | 阅读全文(150) | 回复(0),峰峦猎人 发表于 2007-8-31 11:46
1 语法 在Oracle中,可以创建以下两种临时表:
1) 会话特有的临时表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT PRESERVE ROWS;
2) 事务特有的临时表
CREATE GLOBAL TEMPORARY ( )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
所建的临时表虽然是存在的,但是如果insert 一条记录然后用别的连接登上去select,记录是空的。


--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。

2 动态创建
create or replace ……
编辑 | 阅读全文(41) | 回复(0),峰峦猎人 发表于 2007-8-31 11:36
如果在事务中执行了一条不满足条件的update语句,则执行全表扫描,把行级锁上升为表级锁,多个这样的事务执行后,就很容易产生死锁。 预备知识:
DDL(DATABASE DEFINITION LANGUAGE):数据库定义语言,如create table、drop table.....
DML(DATABASE MODIFICATION LANGUAGE):数据库修改语言,如insert、delete、update......
参考资料:Oracle8 Administrator's Guide, Release 8.0
Oracle8 Tuning, Release 8.0
ORACLE锁具体分为以下几类:
1.按用户与系统划分,可以分为自动锁与显示锁
自动锁:当进行一项数据库操作时,缺省情况下,系统自动为此数据库操作获得所有有必要的锁。
显示锁:某些情况下,需要用户显示的锁定数据库操作……
编辑 | 阅读全文(40) | 回复(0),峰峦猎人 发表于 2007-8-20 8:40

正版Oracle 8i Standard Edition (64-bit) Release 3(8.1.7) for Intel UNIX(DG/UX,SCO Unixware).其中光盘(Oracle 8i Client Release 3(8.1.7) for Windows95/98/2000/NT)在客户端安装时点击"开始安装"后就没有了反应,也没有任何错误信息.多种操作系统下都试过了,现象都一样,用8.1.6版就可以顺利安装,那位高手知道是什么原因? 

  • 处理器是P4否。
    如果是,那就应该删除sym×.dll的文件
  • 我的也出现了同样的问题,望高手再详细指点一下,
    好急啊,先谢谢了
  • 关于在奔腾4处理器的服务器上安装SAP R/3 wit……
编辑 | 阅读全文(84) | 回复(0),峰峦猎人 发表于 2007-7-1 13:54

2007-6-23 10:47 | 什么是ODBC?

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
      一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
  ……
编辑 | 阅读全文(42) | 回复(0),峰峦猎人 发表于 2007-6-23 10:47
(共 89 条) 1 2 3 4 5 6

仅列出标题

致力于企业信息化推广事业(开发、实施、管理)
  • 创建:2008-2-22
  • 文章:701
  • 评论:205
  • 访问:65100
  •