??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成a人片在线观看中文动漫 ,7777久久亚洲中文字幕,亚洲黄色网址大全http://www.tkk7.com/huanghuizz/articles/177000.html七匹?/dc:creator>七匹?/author>Tue, 22 Jan 2008 05:20:00 GMThttp://www.tkk7.com/huanghuizz/articles/177000.htmlhttp://www.tkk7.com/huanghuizz/comments/177000.htmlhttp://www.tkk7.com/huanghuizz/articles/177000.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/177000.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/177000.html

诊断查询
以下 SQL 查询有助于诊?ORA-01000 问题。要执行q些查询Q需要以理员n份登录数据库Q或获得数据库管理员从那?v$ 视图中进行选择的授权?/font>

1. 查数据库中的 OPEN_CURSORS 参数倹{?/strong>
Oracle 使用 init.ora 中的初始化参?OPEN_CURSORS 指定一个会话一ơ最多可以拥有的游标数。缺省gؓ 50。遗憄是,此缺省值通常?WebLogic Server q样的系l来说过。要获得数据库中 OPEN_CURSORS 参数的|可以使用以下查询Q?/font>
SQL> show parameter open_cursors;

NAME TYPE VALUE
------------------------------------ ----------- ---------------
open_cursors integer 1000


重要的是?OPEN_CURSORS 的D|得_大,以避免应用程序用所有打开的游标。应用程序不同,该g不同。即便会话打开的游标数未达 OPEN_CURSORS 指定的数量(卌|的值高于实际需要的|Q也不会增加pȝ开销?/font>

2. 获取打开的游标数?br /> 下面的查询按降序昄用户“SCOTT”为每个会话打开的游标数?/font>
SQL> select o.sid, osuser, machine, count(*) num_curs
2 from v$open_cursor o, v$session s
3 where user_name = 'SCOTT' and o.sid=s.sid
4 group by o.sid, osuser, machine
5 order by num_curs desc;
SID OSUSER MACHINE NUM_CURS
-----------------------------------------------------
217 m1 1000
96 m2 10
411 m3 10
50 test 9

?WebLogic Server 中用连接池Ӟ此查询中?user_name 应ؓ用于创徏q接池的 user_nameQ假定是从连接池得到q接Q。该查询l果q给Z计算机名U。请在查询结果中扑և打开游标数量大的 SID 和运?WebLogic Server 的计机的名U?

h意,v$open_cursor 可以跟踪会话?PARSED ?NOT CLOSED 的动态游标(使用 dbms_sql.open_cursor() 打开的游标)。它不会跟踪未经分析Q但已打开Q的动态游标。在应用E序中用动态游标ƈ不常见。本模式的前提是未用动态游标?

3. 获取为游标执行的 SQL?/strong>使用在以上查询结果中扑ֈ?SID q行下面的查询:

SQL> select q.sql_text
2 from v$open_cursor o, v$sql q
3 where q.hash_value=o.hash_value and o.sid = 217;

SQL_TEXT
------------------------------------------------------------------------------------------------------------------------
select * from empdemo where empid='212'
select * from empdemo where empid='321'
select * from empdemo where empid='947'
select * from empdemo where empid='527'
...


l果显C正在连接上执行的查询。它提供了一个入手点Q让(zhn)可以反向跟t到打开游标的来源?/font>q回首

常见成因及解军_?/strong>
下面是查N题成因及可能的解军_法的步骤?/font>

代码惯例
此问题的最常见成因是未正常关闭 JDBC 对象。?/font>诊断查询中第三个查询的结果在应用E序代码中反向跟t,保所?JDBC 对象都正常关闭。BEA ?finally 块中昑ּ关闭 Connection、Statement ?ResultSet {?JDBC 对象Q以保无论是在正常q是异常情况下都所?JDBC 对象关闭。下面是一个常规示例:

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try {
conn = getConnection(); //Method getConnection will return a JDBC Connection
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from empdemo");
// do work
} catch (Exception e) {
// handle any exceptions
} finally {
try {
if(rs != null)
rs.close();
} catch (SQLException rse) {}
try {
if(stmt != null)
stmt.close();
} catch (SQLException sse) {}
try {
if(conn != null)
conn.close();
} catch (SQLException cse) {}
}


请避免采用Q何放?JDBC 对象的代码惯例。下面的代码惯例在每个@环P代中都获得一个新?Connection、Statement ?ResultSetQ但它没有关闭每个P代的 JDBC 对象。因此,它会D JDBC 对象泄漏?/font>

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String[] queries = new String[10];
//Define queries

try {
for(int i = 0; i < 10; i++) {
conn = getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(queries[i]);
// do work
}
} catch (Exception e) {
// handle any exceptions
} finally {
try {
if(rs != null)
rs.close();
} catch (SQLException rse) {}
try {
if(stmt != null)
stmt.close();
} catch (SQLException sse) {}
try {
if(conn != null)
conn.close();
} catch (SQLException cse) {}
}


管Ҏ(gu) JDBC 规范的规定,关闭 Connection 时正常情况下也会?Statement ?ResultSet 关闭Q但好的做法是:如果在一?Connection 对象上创Z多个 StatementQ则在用完 Statement ?ResultSet 后立x式将它们关闭。如果未立即昑ּ关闭 Statement ?ResultSetQ游标可能会U聚q在关闭 Connection 前超q数据库允许的最大数量。例如,在以下代码片断中Q正常情况下通过 finally 块关?Connection Ӟ也会?ResultSet ?Statement 关闭。不q,此代码片断在一个连接上创徏了多?Statement ?ResultSet。因此在循环完成前,可能已发?#8220;出最多允许打开的游标数”问题?/font>


Connection conn = null;

try{
conn = getConnection();

for(int i = 0; i < NUM_STMT; i++) {
Statement stmt = null;
ResultSet rs = null;

stmt = conn.createStatement();
rs = stmt.executeQuery(/*some query*/);
//do work
}
} catch(SQLException e) {
// handle any exceptions
} finally {
try{
if(conn != null)
conn.close();
} catch(SQLException ignor) {}
}




q回首

语句~存
为提高性能QWebLogic Server 提供了一U功能,让?zhn)可以在用连接池时将预处理语句和可调用语句蝲入缓存。当 WebLogic Server 预处理语句或可调用语句载入~存Ӟ在许多情况下QDBMS ؓ每个打开的语句都保留游标。因此,语句~存可能?#8220;出最多允许打开的游标数”问题的成因?#8220;语句~存大小”属性决定在每个q接池实例中为每个连接缓存的预处理和可调用语句的L。如果缓存的语句q多Q可能会D过数据库服务器上打开游标数的上限?

h意,各版?WebLogic Server 的缺省语句缓存大是有差异的。示例:

要确?#8220;出最多允许打开的游标数”问题是否与语句缓存有养I可以通过语句缓存大设|ؓ 0 此功能关闭或减缓存大,再确认是否仍会出现错误。如果在减少~存大小后问题没有发生,则说明连接池原有的语句缓存过大或 DBMS 中打开游标数的上限q低。可能需要考虑调整其中的一个倹{如果发现连接上打开的游标数持箋增加Q但在将语句~存大小讄?0 后没有出现这U现象,则可能说明存在游标泄漏问题。这可能是由使用?JDBC 驱动E序所_也可能是 WebLogic Server 本n的一个错误。请试使用其它 JDBC 驱动E序。如果用其?JDBC 驱动E序后仍发生同样的问题,请将此问题报告给 BEAQ这h持工E师可以寚w题做q一步探查,以确定该问题是否?WebLogic Server 自n的一个错误?

q回首

数据库驱动程?/strong>
“出最多允许打开的游标数”问题的另一个可能成因是 JDBC 驱动E序有问题。ؓ分清问题是驱动程序问题还?WebLogic q接池问题,如果有可重现的测试案例,可以试执行以下步骤?/font>

1. 直接从驱动程序获取连接?/strong>
在测试案例中Q绕q?WebLogic q接池直接从驱动E序获取 JDBC q接。但请不要关闭连接,只需让它们以数组或某U其它结构Ş式保持打开状态,然后认游标泄漏是否仍然存在。不关闭q接是因模拟使用q接池时的行为。用连接池Ӟconnection.close() q未真正地关闭物理连接,而是连接返回到池中?/font>

2. 试使用其它 JDBC 驱动E序?/strong>
可以试使用其它供应商的 JDBC 驱动E序或升U版的驱动程序,然后认问题是否仍然存在。可以用元数据来验证所使用的驱动程序是否正。示例代码与下面的类|

Connection conn = getConnection();
DatabaseMetaData dmd = conn.getMetaData();
System.out.println("JDBC Driver Name is " + dmd.getDriverName());
System.out.println("JDBC Driver Version is " + dmd.getDriverVersion());

3. XA 驱动E序错误?br /> 如果使用的是 Oracle XA 驱动E序Qƈ且数据库中出C大量cM“SELECT count (*) FROM SYS.DBA_PENDING_TRANSACTIONS”的查询,则可能是 Oracle XA 驱动E序存在游标泄漏问题。在有关 MetaLink 的案?3151681 中有Ҏ(gu)问题的描qͼq且版本 10.1.0.2 中已修正了该问题?br /> 此外Q在使用 XA 驱动E序ӞL保按?http://e-docs.bea.com/wls/docs81/jta/thirdpartytx.html#1075181 (English) 中所qͼ?Database Server 上启?XAQ例如,grant select on dba_pending_transactions to publicQ?

如果问题?JDBC 驱动E序问题Q但又不得不使用该驱动程序,一U以变通方式解x标泄漏问题的Ҏ(gu)是不旉?WebLogic q接池,或收~连接池。有关重设或收羃q接池的Ҏ(gu)Q请参阅 WebLogic 文档Q如果是 8.1 版本Q该文档位于 http://e-docs.bea.com/wls/docs81/ConsoleHelp/domain_jdbcconnectionpool_control.html (Enlish)Q?



]]>
oracle IMP 命o详解http://www.tkk7.com/huanghuizz/articles/168991.html七匹?/dc:creator>七匹?/author>Thu, 20 Dec 2007 04:46:00 GMThttp://www.tkk7.com/huanghuizz/articles/168991.htmlhttp://www.tkk7.com/huanghuizz/comments/168991.htmlhttp://www.tkk7.com/huanghuizz/articles/168991.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/168991.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/168991.html1. 获取帮助

 imp help=y

2. 导入一个完整数据库

 imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 导入一个或一l指定用h属的全部表、烦引和其他对象

 imp system/manager file=seapark log=seapark fromuser=seapark imp 
 system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 一个用h属的数据导入另一个用?/font>

 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy
 imp system/manager file=tank log=tank fromuser=(seapark,amy)
 touser=(seapark1, amy1)

5. 导入一个表

 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

6. 从多个文件导?/font>

 imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) 
log=paycheck, filesize=1G full=y

7. 使用参数文g

 imp system/manager parfile=bible_tables.par

bible_tables.par参数文gQ?/font>

 #Import the sample tables used for the Oracle8i Database Administrator's 
Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

8. 增量导入

 imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle imp/exp

C:Documents and Settingsadministrator>exp help=y

Export: Release 9.2.0.1.0 - Production on 星期?7?28 17:04:43 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

通过输入 EXP 命o和用户名/口oQ?zhn)可?br /> 后接用户?口o的命?

例程: EXP SCOTT/TIGER

或者,(zhn)也可以通过输入跟有各种参数?EXP 命o来控?#8220;导出”
按照不同参数。要指定参数Q?zhn)可以使用关键?

格式: EXP KEYWORD=value ?KEYWORD=(value1,value2,...,valueN)
例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
?TABLES=(T1: P1,T1: P2)Q如?T1 是分

USERID 必须是命令行中的W一个参数?/font>

关键? 说明(默认) 关键? 说明(默认)
--------------------------------------------------------------------------
USERID 用户?口o FULL 导出整个文g (N)
BUFFER 数据~冲区大? OWNER 所有者用户名列表
FILE 输出文g (EXPDAT.DMP) TABLES 表名U列?br /> COMPRESS 导入C个区 (Y) RECORDLENGTH IO 记录的长?br /> GRANTS 导出权限 (Y) INCTYPE 增量导出cd
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
DIRECT 直接路径 (N) TRIGGERS 导出触发?(Y)
LOG 屏幕输出的日志文? STATISTICS 分析对象 (ESTIMATE)
ROWS 导出数据?(Y) PARFILE 参数文g?br /> CONSISTENT 交叉表的一致?(N) CONSTRAINTS 导出的约束条?(Y)

OBJECT_CONSISTENT 只在对象导出期间讄的事务处?(N)
FEEDBACK ?x 行的昄q度 (0)
FILESIZE 每个转储文g的最大大?br /> FLASHBACK_SCN 用于会话快照设|回以前状态的 SCN
FLASHBACK_TIME 用于获取最接近指定旉?SCN 的时?br /> QUERY 用于导出表的子集?select 子句
RESUMABLE 遇到与空格相关的错误时挂?(N)
RESUMABLE_NAME 用于标识可恢复语句的文本字符?br /> RESUMABLE_TIMEOUT RESUMABLE 的等待时?br /> TTS_FULL_CHECK ?TTS 执行完整的或部分相关性检?br /> TABLESPACES 要导出的表空间列?br /> TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名

在没有警告的情况下成功终止导出?br /> ==================================================

C:Documents and Settingsadministrator>imp help=y

Import: Release 9.2.0.1.0 - Production on 星期?7?28 17:06:54 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

可以通过输入 IMP 命o和?zhn)的用户?口o
后接用户?口o的命?

例程: IMP SCOTT/TIGER

或? 可以通过输入 IMP 命o和各U参数来控制“导入”
按照不同参数。要指定参数Q?zhn)可以使用关键?

格式: IMP KEYWORD=value ?KEYWORD=(value1,value2,...,vlaueN)
例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
?TABLES=(T1: P1,T1: P2)Q如?T1 是分

USERID 必须是命令行中的W一个参数?/font>

关键? 说明Q默认) 关键? 说明Q默认)
--------------------------------------------------------------------------
USERID 用户?口o FULL 导入整个文g (N)
BUFFER 数据~冲区大? FROMUSER 所有h用户名列?br /> FILE 输入文g (EXPDAT.DMP) TOUSER 用户名列?br /> SHOW 只列出文件内?(N) TABLES 表名列表
IGNORE 忽略创徏错误 (N) RECORDLENGTH IO 记录的长?br /> GRANTS 导入权限 (Y) INCTYPE 增量导入cd
INDEXES 导入索引 (Y) COMMIT 提交数组插入 (N)
ROWS 导入数据?(Y) PARFILE 参数文g?br /> LOG 屏幕输出的日志文? CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文?(N)
INDEXFILE 表/索引信息写入指定的文?br /> SKIP_UNUSABLE_INDEXES 跌不可用烦引的l护 (N)
FEEDBACK ?x 行显C?(0)
TOID_NOVALIDATE 跌指定cd ID 的验?br /> FILESIZE 每个转储文g的最大大?br /> STATISTICS 始终导入预计的l计信息
RESUMABLE 在遇到有关空间的错误时挂?(N)
RESUMABLE_NAME 用来标识可恢复语句的文本字符?br /> RESUMABLE_TIMEOUT RESUMABLE 的等待时?br /> COMPILE ~译q程, E序包和函数 (Y)
STREAMS_CONFIGURATION 导入 Streams 的一般元数据 (Y)
STREAMS_INSTANITATION 导入 Streams 的实例化元数?(N)

下列关键字仅用于可传输的表空?br /> TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 要传输到数据库的表I间
DATAFILES 要传输到数据库的数据文?br /> TTS_OWNERS 拥有可传输表I间集中数据的用?/font>

成功l止导入Q但出现警告?/font>

oracle的imp和exp的一些用? -

Oracle8i/9i EXP/IMP使用l验
一?i EXP常用选项

1、FULLQ这个用于导出整个数据库Q在ROWS=N一起用时Q可以导出整个数据库的结构。例如:

exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2、BUFFER和FEEDBACKQ在导出比较多的数据Ӟ我会考虑讄q两个参数。例如:

exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

3、FILL和LOGQ这两个参数分别指定备䆾的DMP名称和LOG名称Q包括文件名和目录,例子见上面?

需要说明的是,EXP可以直接备䆾到磁带中Q即使用FILE=/dev/rmt0(带讑֤?Q但是一般我们都不这么做Q原因有二:一、这样做的速度会慢很多Q二、现在一般都是用磁带库的,不徏议直接对带q行操作。至于没有用磁带库的朋友可以考虑和UNIX的TARl合使用?

如果你真想用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”Q文档号Q?0428.1Q,该文中有详细解释?

4、COMPRESS参数在导出的同时合q碎块,量把数据压~到initial的EXTENT里,默认是NQ一般徏议用。DIRECT参数告诉EXP直接d数据Q而不像传l的EXP那样Q用SELECT来读取表中的数据Q这样就减少了SQL语句处理q程。一般也使用。不q有些情况下DIRECT参数是无法用的?

5、如何用SYSDBA执行EXP/IMPQ?

q是一个很现实的问题,有时候我们需要用SYSDBA来执行EXP/IMPQ如q行传输表空间的EXP/IMPQ以及在9i下用SYS用户来执行EXP/IMPӞ都需要用SYSDBA才可。我们可以用下面方式连入EXP/IMPQ?

exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n

6、QUERY参数后面跟的是where条gQ值得注意的是Q整个where子句需要?"括v来,where子句的写法和SELECT中相同,如果是UNIXq_所??都需要用u26469屏蔽它们的特D含义:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"

如果是windowsq_Q则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""

二?i IMP常用选项

1、FROMUSER和TOUSERQ用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中?

2、IGNORE、GRANTS和INDEXESQ其中IGNORE参数忽略表的存在,l箋导入Q这个对于需要调整表的存储参数时很有用,我们可以先根据实际情는合理的存储参数徏好表Q然后直接导入数据。而GRANTS和INDEXES则表C是否导入授权和索引Q如果想使用新的存储参数重徏索引Q或者ؓ了加快到入速度Q我们可以考虑INDEXES设ؓNQ而GRANTS一般都是Y?

另外一个EXP/IMP都有的参数是PARFILEQ它是用来定义EXP/IMP的参数文Ӟ也就是说Q上面的参数都可以写在一个参数文件中Q但我们一般很用?

三、Oracle9i EXP功能描述

Oracle9i EXP在原有的基础上新增了部分新的参数Q按功能主要分ؓ以下几个部分Q?

1、OBJECT_CONSISTENT - 用于讄EXP对象为只M保持对象的一致性。默认是N?

2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增?

3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLEI间分配而新增?

4、TTS_FULL_CHECK - 用于在传输表I间时用依赖性检查?

5、TEMPLATE - 用于支持iAS?

6、TABLESPACES - 讄表空间导出模式。个得对于一般用戯言Q这个才是新增参C最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基上多了一U选择Q得EXP更加灉|?

四、不同版本的EXP/IMP问题Q?

一般来_从低版本导入到高版本问题不大Q麻烦的是将高版本的数据导入C版本中,在Oracle9i之前Q不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决Q?

1、在高版本数据库上运行底版本的catexp.sqlQ?

2、用低版本的EXP来导出高版本的数据;

3、用低版本的IMP数据库导入到底版本数据库中Q?

4、在高版本数据库上重新运行高版本的catexp.sql脚本?

但在9i中,上面的方法ƈ不能解决问题。如果直接用底版本EXP/IMP会出现如下错误:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

q已l是一个公布的BUGQ需要等到Oracle10.0才能解决QBUG号ؓ2261Q你可以到METALINK上去查看有关此BUG的详l信息?

BUG归BUGQ我们的工作q是要做Q在没有Oracle的支持之前,我们pp冟뀂在Oracle9i中执行下面的SQL重徏exu81rls视图卛_?

CREATE OR REPLACE view exu81rls

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)

AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,

decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')

|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')

|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')

|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),

r.check_opt, r.enable_flag,

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)

from user$ u, obj$ o, rls$ r

where u.user# = o.owner#

and r.obj# = o.obj#

and (uid = 0 or

uid = o.owner# or

exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')

)

/

grant select on sys.exu81rls to public;

/

五、其他问?

本文只讨ZOracle8i?i中的EXP/IMP的一些情况,对于之前的版本,?.0.X中,除了QUERY参数不能用外Q其它差别不大。针Ҏ(gu)有QUERY的情况,我们可以先在数据库中使用查询条g建立临时中间表,然后使用EXP导出q个中间表即可。至于Oracle7因ؓ目前使用的h较少Qgototop不打在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档Q?#8220;Overview of Export and Import in Oracle7”Q文档号Q?1949.1Q。关于EXP/IMP的详l参C息你可以通过EXP/IMP HELP=Y来获得?

另外关于传输表空间的更多信息可以参考下面的Metelink文档Q本文不再详q?

[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.

[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.

在进行ƈ行EXP/IMP的时候,如果IMPq程建烦引的话不同时q行5个以上的IMPQ如果你惛_快速度



]]>
oracle的exp、imp使用指南http://www.tkk7.com/huanghuizz/articles/157687.html七匹?/dc:creator>七匹?/author>Fri, 02 Nov 2007 02:52:00 GMThttp://www.tkk7.com/huanghuizz/articles/157687.htmlhttp://www.tkk7.com/huanghuizz/comments/157687.htmlhttp://www.tkk7.com/huanghuizz/articles/157687.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/157687.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/157687.html  
  通过输入 EXP 命o和用户名/口oQ?zhn)可以后接用户?口o的命?
例程: EXP SCOTT/TIGER
或者,(zhn)也可以通过输入跟有各种参数?EXP 命o来控?#8220;导出”按照不同参数。要指定参数Q?zhn)可以使用关键?
格式: EXP KEYWORD=value ?KEYWORD=(value1,value2,...,valueN)例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)?TABLES=(T1: P1,T1: P2)Q如?T1 是分
USERID 必须是命令行中的W一个参数?br /> 关键?nbsp; 说明(默认)       
USERID   用户?口o          
FULL         导出整个文g (N)
BUFFER   数据~冲区大?nbsp;       
OWNER     所有者用户名列表
FILE       输出文g (EXPDAT.DMP) 
TABLES       表名U列?br /> COMPRESS   导入C个区 (Y)
RECORDLENGTH IO 记录的长?br /> GRANTS 导出权限 (Y)          
INCTYPE   增量导出cd
INDEXES    导出索引 (Y)        
RECORD       跟踪增量导出 (Y)
DIRECT     直接路径 (N)           
TRIGGERS     导出触发?(Y)LOG       
屏幕输出的日志文?nbsp; STATISTICS  
分析对象 (ESTIMATE)ROWS   
导出数据?(Y)       
PARFILE      参数文g?br /> CONSISTENT 交叉表的一致?(N)
CONSTRAINTS  导出的约束条?(Y)
OBJECT_CONSISTENT    只在对象导出期间讄的事务处?(N)
FEEDBACK             ?x 行的昄q度 (0)
FILESIZE             每个转储文g的最大大?br /> FLASHBACK_SCN        用于会话快照设|回以前状态的
SCNFLASHBACK_TIME       用于获取最接近指定旉?SCN 的时?br /> QUERY                用于导出表的子集?select 子句
RESUMABLE            遇到与空格相关的错误时挂?(N)
RESUMABLE_NAME       用于标识可恢复语句的文本字符?br /> RESUMABLE_TIMEOUT    RESUMABLE 的等待时?br /> TTS_FULL_CHECK       ?TTS 执行完整的或部分相关性检?br /> TABLESPACES          要导出的表空间列?br /> TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE             调用 iAS 模式导出的模板名

1、FULLQ这个用于导出整个数据库Q在ROWS=N一起用时Q可以导出整个数据库的结构。例如:

exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2、BUFFER和FEEDBACKQ在导出比较多的数据Ӟ考虑讄q两个参数。例如:

exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

3、FILL和LOGQ这两个参数分别指定备䆾的DMP名称和LOG名称Q包括文件名和目录,例子见上面?/p>

4. exp没有indexfileq个参数

5.使用direct=y参数限制是库里有大字D?LOBcd的数?׃能用,使用了QUERY时也不能用DIRECT


需要说明的是,EXP可以直接备䆾到磁带中Q即使用FILE=/dev/rmt0(带讑֤?Q但是一般我们都不这么做Q原因有二:一、这样做的速度会慢很多Q二、现在一般都是用磁带库的,不徏议直接对带q行操作。至于没有用磁带库的朋友可以考虑和UNIX的TARl合使用?/p>

如果你真想用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”Q文档号Q?0428.1Q,该文中有详细解释?/p>

4、COMPRESS参数在导出的同时合q碎块,量把数据压~到initial的EXTENT里,默认是NQ一般徏议用。DIRECT参数告诉EXP直接d数据Q而不像传l的EXP那样Q用SELECT来读取表中的数据Q这样就减少了SQL语句处理q程。一般也使用。不q有些情况下DIRECT参数是无法用的?/p>

?导入工具 imp

可以通过输入 IMP 命o和?zhn)的用户?口o后接用户?口o的命?
例程: IMP SCOTT/TIGER
或? 可以通过输入 IMP 命o和各U参数来控制“导入”按照不同参数。要指定参数Q?zhn)可以使用关键?
格式: IMP KEYWORD=value ?KEYWORD=(value1,value2,...,vlaueN)例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N?TABLES=(T1: P1,T1: P2)Q如?T1 是分
USERID 必须是命令行中的W一个参数?br /> 关键?nbsp; 说明Q默认)       
USERID   用户?口o          
FULL         导入整个文g (N)
BUFFER   数据~冲区大?nbsp;       
FROMUSER     所有h用户名列?br /> FILE     输入文g (EXPDAT.DMP)   
TOUSER       用户名列?br /> SHOW     只列出文件内?(N)
TABLES      表名列表
IGNORE   忽略创徏错误 (N)   
RECORDLENGTH  IO 记录的长?br /> GRANTS  导入权限 (Y)          
INCTYPE      增量导入cd
INDEXES 导入索引 (Y)         
COMMIT       提交数组插入 (N)
ROWS    导入数据?(Y)       
PARFILE      参数文g?br /> LOG      屏幕输出的日志文?nbsp; 
CONSTRAINTS  导入限制 (Y)
DESTROY                覆盖表空间数据文?(N)
INDEXFILE              表/索引信息写入指定的文?br /> SKIP_UNUSABLE_INDEXES  跌不可用烦引的l护 (N)
FEEDBACK               ?x 行显C?(0)
TOID_NOVALIDATE        跌指定cd ID 的验?br /> FILESIZE               每个转储文g的最大大?br /> STATISTICS             始终导入预计的l计信息
RESUMABLE            在遇到有关空间的错误时挂?(N)
RESUMABLE_NAME         用来标识可恢复语句的文本字符?br /> RESUMABLE_TIMEOUT      RESUMABLE 的等待时间COMPILE                ~译q程, E序包和函数 (Y)
STREAMS_CONFIGURATION  导入 Streams 的一般元数据 (Y)
STREAMS_INSTANITATION  导入 Streams 的实例化元数?(N)
下列关键字仅用于可传输的表空?br /> TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 要传输到数据库的表I间
DATAFILES 要传输到数据库的数据文?br /> TTS_OWNERS 拥有可传输表I间集中数据的用?/p>

1、FROMUSER和TOUSERQ用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中?/p>

2、IGNORE、GRANTS和INDEXESQ其中IGNORE参数忽略表的存在,l箋导入Q这个对于需要调整表的存储参数时很有用,我们可以先根据实际情는合理的存储参数徏好表Q然后直接导入数据。而GRANTS和INDEXES则表C是否导入授权和索引Q如果想使用新的存储参数重徏索引Q或者ؓ了加快到入速度Q我们可以考虑INDEXES设ؓNQ而GRANTS一般都是Y?/p>

另外一个EXP/IMP都有的参数是PARFILEQ它是用来定义EXP/IMP的参数文Ӟ也就是说Q上面的参数都可以写在一个参数文件中Q但我们一般很用?/p>

三、Oracle9i EXP功能描述

Oracle9i EXP在原有的基础上新增了部分新的参数Q按功能主要分ؓ以下几个部分Q?/p>

1、OBJECT_CONSISTENT - 用于讄EXP对象为只M保持对象的一致性。默认是N?/p>

2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增?/p>

3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLEI间分配而新增?/p>

4、TTS_FULL_CHECK - 用于在传输表I间时用依赖性检查?/p>

5、TEMPLATE - 用于支持iAS?/p>

6、TABLESPACES - 讄表空间导出模式。个得对于一般用戯言Q这个才是新增参C最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基上多了一U选择Q得EXP更加灉|?/p>

FAQ:
  如何使用SYSDBA执行EXP/IMPQ?/p>

q是一个很现实的问题,有时候我们需要用SYSDBA来执行EXP/IMPQ如q行传输表空间的EXP/IMPQ以及在9i下用SYS用户来执行EXP/IMPӞ都需要用SYSDBA才可。我们可以用下面方式连入EXP/IMPQ?/p>

exp USERID=/@10.249.2.18/<SID> file=1.dmp tables=gototop.t rows=n
然后?nbsp; Username: / as sysdba

6、QUERY参数后面跟的是where条gQ值得注意的是Q整个where子句需要?"括v来,where子句的写法和SELECT中相同,如果是UNIXq_所??都需要用\u26469屏蔽它们的特D含义:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"

如果是windowsq_Q则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where and """

  不同版本的EXP/IMP问题Q?/p>

一般来_从低版本导入到高版本问题不大Q麻烦的是将高版本的数据导入C版本中,在Oracle9i之前Q不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决Q?/p>

1、在高版本数据库上运行底版本的catexp.sqlQ?/p>

2、用低版本的EXP来导出高版本的数据;

3、用低版本的IMP数据库导入到底版本数据库中Q?/p>

4、在高版本数据库上重新运行高版本的catexp.sql脚本?/p>

但在9i中,上面的方法ƈ不能解决问题。如果直接用底版本EXP/IMP会出现如下错误:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

q已l是一个公布的BUGQ需要等到Oracle10.0才能解决QBUG号ؓ2261Q你可以到METALINK上去查看有关此BUG的详l信息?/p>

BUG归BUGQ我们的工作q是要做Q在没有Oracle的支持之前,我们pp冟뀂在Oracle9i中执行下面的SQL重徏exu81rls视图卛_?/p>

CREATE OR REPLACE view exu81rls 

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy) 

AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname, 

decode(bitand(r.stmt_type,1), 0,'', 'SELECT,') 

|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,') 

|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,') 

|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'), 

r.check_opt, r.enable_flag, 

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1) 

from user$ u, obj$ o, rls$ r 

where u.user# = o.owner# 

and r.obj# = o.obj# 

and (uid = 0 or 

uid = o.owner# or 

exists ( select * from session_roles where role='SELECT_CATALOG_ROLE') 

grant select on sys.exu81rls to public; 

导入工具imp可能出现的问?/p>

(1) 数据库对象已l存?br />         一般情? 导入数据前应该彻底删除目标数据下的表, 序列, 函数/q程,触发器等;         
        数据库对象已l存? 按缺省的imp参数, 则会导入p|
        如果用了参数ignore=y, 会把exp文g内的数据内容导入
                如果表有唯一关键字的U束条g, 不合条g不被导?br />                 如果表没有唯一关键字的U束条g, 引赯录重?br />                
(2) 数据库对象有d键约?br />       不符合主外键U束? 数据会导入失?nbsp;      
      解决办法: 先导入主? 再导入依存表
                disable目标导入对象的主外键U束, 导入数据? 再enable它们
(3)  权限不够
        如果要把A用户的数据导入B用户? A用户需要有imp_full_database权限
       
(4)  导入大表( 大于80M ) ? 存储分配p|
      默认的EXP? compress = Y, 也就是把所有的数据压羃在一个数据块?
      导入? 如果不存在连l一个大数据? 则会导入p|.
      导出80M以上的大表时, 记得compress= N, 则不会引赯U错?
       
(5) imp和exp使用的字W集不同
      如果字符集不? 导入会失? 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
      导入完成后再改回?

(6) imp和exp版本不能往上兼?br />         imp可以成功导入低版本exp生成的文? 不能导入高版本exp生成的文?br />         Ҏ(gu)情况我们可以?br />         $ imp username/password@connect_string
        说明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
                   定义的本地或者远端数据库的名U?br />       

 


  其他问题

本文只讨ZOracle8i?i中的EXP/IMP的一些情况,对于之前的版本,?.0.X中,除了QUERY参数不能用外Q其它差别不大。针Ҏ(gu)有QUERY的情况,我们可以先在数据库中使用查询条g建立临时中间表,然后使用EXP导出q个中间表即可。至于Oracle7因ؓ目前使用的h较少Qgototop不打在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档Q?#8220;Overview of Export and Import in Oracle7”Q文档号Q?1949.1Q。关于EXP/IMP的详l参C息你可以通过EXP/IMP HELP=Y来获得?/p>

另外关于传输表空间的更多信息可以参考下面的Metelink文档Q本文不再详q?/p>

[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use. 

[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace. 

在进行ƈ行EXP/IMP的时候,如果IMPq程建烦引的话不同时q行5个以上的IMPQ如果你惛_快速度Q可以在IMP的时候不建烦引,q样只要内存允许Q可以多跑几个,然后是SQL脚本创徏需要的索引?br />



]]>
fc5 下成功安装Oracle 10ghttp://www.tkk7.com/huanghuizz/articles/89166.html七匹?/dc:creator>七匹?/author>Wed, 20 Dec 2006 15:42:00 GMThttp://www.tkk7.com/huanghuizz/articles/89166.htmlhttp://www.tkk7.com/huanghuizz/comments/89166.htmlhttp://www.tkk7.com/huanghuizz/articles/89166.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/89166.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/89166.html      groupadd oinstall
      groupadd dba

      useradd -g oinstall -G dba oracle
       passwd oracle Q在q个命o的执行过E中Q会要求用户输入两次密码Q?br />
2>解压文g
     gunzip ship.db.lnx32.cpio.gz
     cpio -idcmv < ship.db.lnx32.cpio

3> 用oracle登陆pȝ
4>Ҏ(gu)Ca
     export LANG=en_US
5>安装oracle 10g
     ./runInstaller -ignoreSysprereqs
     正常安装

6>安装q程中修?br />     oracle_home中的bin下的gennttab
      如下Q?br />      LIB=`echo ${TtoLIB}  | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}'`
       INI=`echo ${TtoINI}  | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}'`
       BAS=`echo ${TtoBAS} | sed 's/ /\n/g' | grep "^${T}:" | awk -F: '{print $2}'`
7>ok

]]>
oracle10g 数据?备䆾和恢?/title><link>http://www.tkk7.com/huanghuizz/articles/78942.html</link><dc:creator>七匹?/dc:creator><author>七匹?/author><pubDate>Fri, 03 Nov 2006 08:20:00 GMT</pubDate><guid>http://www.tkk7.com/huanghuizz/articles/78942.html</guid><wfw:comment>http://www.tkk7.com/huanghuizz/comments/78942.html</wfw:comment><comments>http://www.tkk7.com/huanghuizz/articles/78942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huanghuizz/comments/commentRss/78942.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huanghuizz/services/trackbacks/78942.html</trackback:ping><description><![CDATA[ <p> <font face="verdana, arial, helvetica" size="2"> <span id="0gq6may" class="javascript" id="text1247614" style="FONT-SIZE: 12px">一Q备?br />1。data pump包括下面几个部gQ?br />The command-line clients, expdp and impdp<br /><br />The DBMS_DATAPUMP PL/SQL package (also known as the Data Pump API)<br /><br />The DBMS_METADATA PL/SQL package (also known as the Metadata API)<br /><br />2。expdp, impdp和原先的exp,imp不兼容,也就是用exp导出的文件用impdp是无法导入的?br /><br />3。data pump不支持XML schemas<br /><br />4。用前必须要先创徏目录Q?br />SQL> CREATE DIRECTORY dpump_dir as '/oracle/oradata/ORCL10/pumpdata';<br /><br />5。给导入导出的用戯予目录的d权限Q?br />SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir TO scott;<br /><br />6。设|操作系l环境变量:<br />export DATA_PUMP_DIR=dpump_dir<br /><br />7。执行datapump export<br />[zhangleyi@as software]$ expdp scott/tiger schemas=wanyan dumpfile=wanyan_db165_200611031630.dmp DIRECTORY=dpump_dir<br /><br />Export: Release 10.1.0.2.0 - Production on Thursday, 26 February, 2004 22:08<br /><br />Copyright (c) 2003, Oracle. All rights reserved.<br /><br />Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production<br />With the Partitioning, OLAP and Data Mining options<br />Starting "SCOTT"."SYS_EXPORT_TABLE_01": scott/******** tables=emp dumpfile=emp.dmp DIRECTORY=dpump_dir <br />Estimate in progress using BLOCKS method...<br />Processing object type TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA<br />Total estimation using BLOCKS method: 64 KB<br />Processing object type TABLE_EXPORT/TABLE/TABLE<br />Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX<br />Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT<br />Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS<br />Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS<br />Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT<br />. . exported "SCOTT"."EMP" 7.820 KB 14 rows<br />Master table "SCOTT"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded<br />******************************************************************************<br />Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:<br />/oracle/oradata/ORCL10/pumpdata/emp.dmp<br />Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 22:09<br /><br />二,恢复Q?br />impdp wanyan/wanyan dumpfile=emp.dmp directory=dump_dir logfile=emp.log</span> <br /> <br />处理对象cd TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA<br />. . 导入?"WANYAN"."WY_B_USER"                        80.75 MB  376099 ?br />. . 导入?"WANYAN"."TEMP_INSIGHT"                     40.24 MB  537133 ?br />. . 导入?"WANYAN"."temp_user"                        26.20 MB  534528 ?br />. . 导入?"WANYAN"."WY_D_TEMPLATE"                    9.368 MB    2223 ?br />. . 导入?"WANYAN"."WY_B_SURVEY"                      2.568 MB     953 ?br />. . 导入?"WANYAN"."WY_B_BLOG"                        182.8 KB      22 ?br />. . 导入?"WANYAN"."WY_D_ANSWERDETAIL"                441.8 KB    6021 ?br />. . 导入?"WANYAN"."WY_D_ANSWER"                      342.1 KB    5919 ?br />. . 导入?"WANYAN"."WY_D_GROUP"                       143.2 KB      20 ?br />. . 导入?"WANYAN"."WY_B_ARTICLE"                     74.09 KB      42 ?br />. . 导入?"WANYAN"."WY_D_EXAMRESULT"                  58.05 KB     269 ?br />. . 导入?"WANYAN"."WY_D_INBOX"                       61.48 KB     424 ?br />. . 导入?"WANYAN"."WY_D_KEYWORDS"                    44.06 KB    2532 ?br />. . 导入?"WANYAN"."WY_D_SENDBOX"                     61.82 KB     442 ?br />. . 导入?"WANYAN"."WY_B_ADMINUSER"                   8.140 KB       8 ?br />. . 导入?"WANYAN"."WY_B_COLUMN"                      11.38 KB      20 ?br />. . 导入?"WANYAN"."WY_B_COMMENT"                     31.37 KB     217 ?br />. . 导入?"WANYAN"."WY_B_ROLE"                        6.031 KB       7 ?br />. . 导入?"WANYAN"."WY_D_ATTENTION"                   6.367 KB      20 ?br />. . 导入?"WANYAN"."WY_D_COMMEND"                     7.625 KB      12 ?br />. . 导入?"WANYAN"."WY_D_MAILTEMPLATES"               14.55 KB      11 ?br />. . 导入?"WANYAN"."WY_D_PREVIEW"                     7.476 KB       7 ?br />. . 导入?"WANYAN"."WY_D_SOURCE"                      9.375 KB     120 ?br />. . 导入?"WANYAN"."WY_D_USERSCORERECORD"             8.164 KB      21 ?br />. . 导入?"WANYAN"."WY_R_FRIENDBLOG"                  5.992 KB       1 ?br />. . 导入?"WANYAN"."WY_R_GROUPMEMBER"                 20.98 KB     246 ?br />. . 导入?"WANYAN"."WY_R_GROUPNOTE"                   27.80 KB     191 ?br />. . 导入?"WANYAN"."WY_R_ROLE_PERMISSION"             20.46 KB     441 ?br />. . 导入?"WANYAN"."WY_D_COMMONMESSAGE"                   0 KB       0 ?br />. . 导入?"WANYAN"."WY_D_INVITATION"                      0 KB       0 ?/font> </p> <img src ="http://www.tkk7.com/huanghuizz/aggbug/78942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huanghuizz/" target="_blank">七匹?/a> 2006-11-03 16:20 <a href="http://www.tkk7.com/huanghuizz/articles/78942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决 oracle EXP-00091: Exporting questionable statistics. 问题http://www.tkk7.com/huanghuizz/articles/78647.html七匹?/dc:creator>七匹?/author>Thu, 02 Nov 2006 04:42:00 GMThttp://www.tkk7.com/huanghuizz/articles/78647.htmlhttp://www.tkk7.com/huanghuizz/comments/78647.htmlhttp://www.tkk7.com/huanghuizz/articles/78647.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/78647.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/78647.htmlEXP-00091 Exporting questionable statistics
  
Cause: Export was able to export statistics, but the statistics may not be useable. The statistics are questionable because one or more of the following happened during export: a row error occurred, client character set or NCHARSET does not match with the server, a query clause was specified on export, only certain partitions or subpartitions were exported, or a fatal error occurred while processing a table.
  
Action: To export non-questionable statistics, change the client character set or NCHARSET to match the server, export with no query clause, or export complete tables. If desired, import parameters can be supplied so that only non-questionable statistics will be imported, and all questionable statistics will be recalculated.

解决Q?br />linux下的oracle用户的环境变量语a集和oralce数据库中的环境变量语a集不相同?br />查看oracle的环境变量语a集:
数据库服务器字符集:
select * from nls_database_parameters
客户端字W集Q?br />select * from nls_instance_parameters

oracle用户的环境变量语a集改成和数据库服务器字符集一栗?br /> export NLS_LANG=american_america.ZHS16GBK

]]>
Oracle数据库用及命名规则的详?/title><link>http://www.tkk7.com/huanghuizz/articles/71500.html</link><dc:creator>七匹?/dc:creator><author>七匹?/author><pubDate>Sat, 23 Sep 2006 15:21:00 GMT</pubDate><guid>http://www.tkk7.com/huanghuizz/articles/71500.html</guid><wfw:comment>http://www.tkk7.com/huanghuizz/comments/71500.html</wfw:comment><comments>http://www.tkk7.com/huanghuizz/articles/71500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huanghuizz/comments/commentRss/71500.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huanghuizz/services/trackbacks/71500.html</trackback:ping><description><![CDATA[ <font color="#333333">公司已徏立的或待建立的网站,如:中文站(CHINAQ,国际站(ALIBABAQ,华商站(CHINESEQ等?<br />  OLPS <br />    Online process systemQ在U处理系l,x们的会员可以览的网站所q接的数据库Q也是我们所说的前台?<br />  BOPS <br />    Back Office process systemQ后台处理系l,x们的|站的发布系l?<br />  BZO <br />    Business Object(?)Q公司网站低层JAVA对象Q主要负责与数据库打交道?<br />  <b>一?命名U定 </b><br />  Q. 是指数据库、数据库对象如TABLE、SEQUENCE、PROCEDURE、COLUMN{的命名U定Q?<br />  Q. 命名富有意义英文词汇Q除个别通用的(见列表)Q要避免使用~写Q,多个单词l成的,中间以下划线分割Q?<br />  Q. 除数据库名称长度?Q?个字W,其余?Q?0个字W,Database link名称也不要超q?0个字W; <br />  Q. 命名只能使用英文字母Q数字和下划U; <br />  Q. 避免使用Oracle的保留字如level、关键字如typeQ见列表Q; <br />  Q. 名表之间相关列名量同名Q?<br />  Q. 数据库的命名Q网上数据库命名为“OLPS”+表示站点QSITEQ以下同Q的2Q?个字W,后台数据库命名ؓ“BOPS”+表示站点?Q?个字W。测试数据库命名为“OLPS|BOPS”+“TEST”, 开发数据库命名为“OLPS|BOPS?“TEST”,用模式(SCHEMAQUSERQ的不同来区分不同的站点?<br />  Q. INDEX命名Qtable_name+column_name+index_type(1 byte)+idx,各部分以下划U(_Q分剌Ӏ多单词l成的column nameQ取前几个单词首字母Q加末单词组成column_name。如Qsample表member_id上的index: sample_mid_idx   news表title上的unique index:news_titile_uidxQ?<br />  Q. SEQUENCE命名Qseq_+table_nameQ?<br />  <b>二?注释说明 </b><br />  Q. 本注释说明主要用于PL/SQLE序及其它SQL文gQ其它可作参考; <br />  Q. SQLPLUS接受的注释有三种Q?<br />  ?? q儿是注?<br />  Q* q儿是注释 Q/ <br />  REM q儿是注?<br />  Q. 开始注释,cMJAVAK中的开始注释,主要列出文g名,~写日期Q版权说明,E序功能以及修改记录Q?<br />  REM <br />  REM $Header: filename, version, created date,auther <br />  REM <br />  REM Copyright <br />  REM <br />  REM FUNCTION <br />  REM function explanation <br />  REM <br />  REM NOTES <br />  REM <br />  REM MODIFIED Qyy/mm/ddQ?<br />  REM who when - for what, recently goes first <br />  Q. 块注释,如表注释QPROCEDURE注释{,同JAVA: <br />  /* <br />  * This table is for TrustPass <br />  * mainly store the information <br />  * of TrustPass members <br />  */ <br />  Q. 单行注释Q如列注释: <br />  login_id VARCHAR2(32) NOT NULL, -- 会员标识 <br />  <br />  <b>三?~进 </b><br />  低别语句在高别语句后的,一般羃q?个空| <br />  DECLARE <br />  v_MemberId VARCHAR2(32), <br />  BEGIN <br />  SELECT admin_member_id INTO v_MemberId <br />  FROM company <br />  WHERE id = 10; <br />  DBMS_OUTPUT.PUT_LINE(v_MemberId); <br />  END; <br />  <br />  同一语句不同部分的羃q,如果为sub statementQ则通常?个空|如果与上一句某部分有密切联pȝQ则~至与其寚wQ?<br />  BEGIN <br />  FOR v_TmpRec IN <br />  (SELECT login_id, <br />  gmt_created, -- here indented as column above <br />  satus <br />  FROM member -- sub statement <br />  WHERE site = 'china' <br />  AND country='cn' ) <br />  LOOP <br />  NULL; <br />  END LOOP; <br />  END; <br />  <b>四?断行 </b><br />  ?一行最长不能超q?0字符 <br />  ?同一语句不同字句之间 <br />  ?逗号以后I格 <br />  ?其他分割W前I格 <br />  SELECT offer_name <br />  ||',' <br />  ||offer_count as offer_category, <br />  id <br />  FROM category <br />  WHERE super_category_id_1 = 0; <br />  <b>五?大小?</b><br />  属于ORACLE的关键字大小Q表名、列名等写?<br />  <b>六?列类型的选择 </b><br />  ?用CHAR(1)代替布尔| <br />  ?应尽量用VARCHAR2代替CHARcdQ?<br />  ?VARCHAR(2)最?000字符Q?<br />  ?DATE_到微U,而非天; <br />  ?使用CLOB代替LONGQBLOB代替LONG RAWQ?<br />  ?ORACLE只有NUMBER一U数据类型,使用时请l定长度Q?<br />  <b>七?主键选择 </b><br />  选择有意义的Q不太长且能唯一标识记录行的列做主键Q没有这U列Ӟ才考虑使用SEQUENCE做主健?<br />  <b>八?列长度的选择 </b><br />  应当Ҏ(gu)实际需要选择列长度。有对应web 面的,与页面上对应列长度一致?<br />  <br />  Ҏ(gu)据的验证除数据库端实现外q要可能在表现层控制?<br />  <b>?ji)?使用SQL语句的约?</b><br />  Q. 量避免在@环中使用SQL语句?<br />  Q. 避免在WHERE字句中对列施以函? <br />  SELECT Q  <br />  FROM service_promotion <br />  WHERE TO_CHAR(gmt_modified,’yyyy-mm-dd? <br />  = ?0001-09-01? <br />    而应使用Q?<br />  SELECT * <br />  FROM service_promotion <br />  WHERE gmt_modified <br />  >= TO_DATE(?001-9-01?’yyyy-mm-dd? <br />  AND gmt_modified <br />  < TO_DATE(?001-9-02?’yyyy-mm-dd?; <br />  <br />  Q. 避免使用数据库的cd自动转换功能Q?<br />  SELECT * FROM category <br />  WHERE id = ?23? -- id’s type is number <br />  Q. 避免无效的连? <br />  SELECT count(*) <br />  FROM offer a, count_by_email b <br />  WHERE a.email(+) = b.email; <br />  Q. q接QjoinQ时要用别? <br />  SELECT a.*,b.offer_count(*) <br />  FROM offer a, count_by_email b <br />  WHERE a.email(+) = b.email; <br />  6. 取TABLE 的META信息Q?<br />  SELECT * <br />  FROM table_name <br />  WHERE rowid is null (or rownum = 1 or pk = impossible_value); <br />  可考虑使用Q?<br />  SELECT * <br />  FROM table_name <br />  WHERE 1 = 0 ; <br />  <br />  <br />  <br />  <b>十?关于ALIBABA表的U定 </b><br />  如果使用ALIBABA BZOQ设表至有如下字段Q?<br />  site VARCHAR2(32) <br />  gmt_create DATE <br />  gmt_modified DATE <br />  如果从IdBizObjectl承Q则q有一个NUMBER型的列,通常是主键,q与某一个SEQUENCECF 对应Q如果从StrIdBizObjectl承Q则q有一个VARCHAR2型的列?<br />  <b>十一?列值约?</b><br />  Q. 有固定值列表的列,如status, action, site, 其值取写Q?<br />  Q. 应尽可能选择数字来代表固定值列表中的|相应的列定义为NUMBER型; <br />  Q. 用CHARQ?Q表C布?yu)值的取大写:“Y”,“N”?<br />  <b>十二?关于表重复属性的定义 </b><br />  不能有多择一的重复属性列Q?<br />  <br />  对于能多选的重复属性列Q如果不做查询列q且重复ơ数较多Q应使用ID_VARRAY代替Q如要用作查询列Q重复次数多的,应另Z表,ơ数的且列gؓ二择一Ӟ应用NUMBERcdQ加位操作?<br />  <b>十三?数据修改U定 </b><br />  发现Production环境中数据有误,需要改正的Q应在RA TERMINAL上提交数据更新表单,由数据库操作员在当日17时前修改完毕?<br />  <br />  数据库更E序更新的结构变动及数据更新Q类似处理?<br />  <br />  提交SQTT试需要准备数据或更新l构的,暂时先写入测试请求中Q由SQTT同志MAILQ注明测试请求表单链接即可)通过数据库操作员修改数据库。待内部|TEAM增加新的表单后,试h分开提交?<br />  <b>十四?数据库设计流E?</b><br />  在新目设计阶段会议Q应有DBA参加。在SCHEMA定以后方可开始编码?<br />  <br />  ~写字列表: <br />  payment pymt <br />  my trade activity mta <br />  <br />  Ҏ(gu)字列表: <br />  ACCESS DECIMAL INITIAL ON START <br />  ADD NOT INSERT ONLINE SUCCESSFUL <br />  ALL DEFAULT INTEGER OPTION SYNONYM <br />  ALTER DELETE INTERSECT OR SYSDATE <br />  AND DESC INTO ORDER TABLE <br />  ANY DISTINCT IS PCTFREE THEN <br />  AS DROP LEVEL PRIOR TO <br />  ASC ELSE LIKE PRIVILEGES TRIGGER <br />  AUDIT EXCLUSIVE LOCK PUBLIC UID <br />  BETWEEN EXISTS LONG RAW UNION <br />  BY FILE MAXEXTENTS RENAME UNIQUE <br />  FROM FLOAT MINUS RESOURCE UPDATE <br />  CHAR FOR MLSLABEL REVOKE USER <br />  CHECK SHARE MODE ROW VALIDATE <br />  CLUSTER GRANT MODIFY ROWID VALUES <br />  COLUMN GROUP NOAUDIT ROWNUM VARCHAR <br />  COMMENT HAVING NOCOMPRESS ROWS VARCHAR2 <br />  COMPRESS IDENTIFIED NOWAIT SELECT VIEW <br />  CONNECT IMMEDIATE NULL SESSION WHENEVER <br />  CREATE IN NUMBER SET WHERE <br />  CURRENT INCREMENT OF SIZE WITH <br />  DATE INDEX OFFLINE SMALLINT <br />  <br />  CHAR VARHCAR VARCHAR2 NUMBER DATE LONG <br />  CLOB BLOB BFILE <br />  INTEGER DECIMAL <br />  SUM COUNT GROUPING AVERAGE <br />  TYPE </font> <br /> <img src ="http://www.tkk7.com/huanghuizz/aggbug/71500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huanghuizz/" target="_blank">七匹?/a> 2006-09-23 23:21 <a href="http://www.tkk7.com/huanghuizz/articles/71500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle ORA-00257: ORA-16014:和ORA-00312: 归档日志闪回恢复区写?解决http://www.tkk7.com/huanghuizz/articles/68902.html七匹?/dc:creator>七匹?/author>Mon, 11 Sep 2006 02:39:00 GMThttp://www.tkk7.com/huanghuizz/articles/68902.htmlhttp://www.tkk7.com/huanghuizz/comments/68902.htmlhttp://www.tkk7.com/huanghuizz/articles/68902.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/68902.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/68902.html      ORA-16014: log 1 sequence# 1085 not archived, no available destinations
      ORA-00312: online log 1 thread 1: '/usr/app/oracle/oradata/wanyan/redo01.log'
      
原因Q?br />      归档日志闪回恢复区的2G都被写满?

解决Q?br />     据数据库目前可用存储I间?00GB、FLASH_RECOVERY_AREAI间?GB的实际情况,把FLASH_RECOVERY_AREA的空间修改ؓ20GB?br />
   alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;

相关解决Ҏ(gu)路径Q?br />      http://edu.cnzz.cn/NewsInfo/29556.aspx

]]>
Oracle 10g RMAN的备?恢复http://www.tkk7.com/huanghuizz/articles/68363.html七匹?/dc:creator>七匹?/author>Thu, 07 Sep 2006 11:57:00 GMThttp://www.tkk7.com/huanghuizz/articles/68363.htmlhttp://www.tkk7.com/huanghuizz/comments/68363.htmlhttp://www.tkk7.com/huanghuizz/articles/68363.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/68363.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/68363.html注意事项Q?br />1 rman的保存格式前后要一?
2 archive 的格式也要和原来一栗?/p>

oracle 10g

[oracle@standby oracle]$ rman target /


启动归档
SQL>alter database archivelog;

System altered.

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Current log sequence           9
SQL>

重启数据库,归档׃自动启动?/p>

启动自动备䆾控制文g

RMAN> configure controlfile autobackup on;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored


RMAN> configure channel device type disk format 'F:\backup\%U';

new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'F:\backup\%U';
new RMAN configuration parameters are successfully stored


SQL> select name from v$datafile;

NAME
---------------------------------------------------
F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\SYSTEM01.DBF
F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\UNDOTBS01.DBF
F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\SYSAUX01.DBF
F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\USERS01.DBF


定原控制文件的路径
SQL> select name from v$controlfile;

查看log位置

SQL>select name from V$ARCHIVED_LOGQ?/p>

查看log的信?br />SQL>select * from v$log_history;

插入数据
SQL> select * from ttt;

NAME       EMAIL
---------- ----------
aa         aa@abc.com
bb         bb@abc.com
cc         cc@abc.com

RMAN备䆾Q?/p>

RMAN>backup database;

再插入数?br />SQL> select * from ttt;

NAME       EMAIL
---------- ----------
aa         aa@abc.com
bb         bb@abc.com
cc         cc@abc.com
dd         dd@abc.com

用DBCA删除 数据库和相关数据文g?br />再重新徏个相同实例名的SIDQ再开始恢复?/p>

配置RMAN
RMAN> configure channel device type disk format 'F:\backup\%U';  //注意和原来的格式一栗?/p>

new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'F:\backup\%U';
new RMAN configuration parameters are successfully stored


先需要从自动备䆾中恢复控制文?br />RMAN> startup nomount;

RMAN> restore controlfile to '/opt/oracle/oradata/control01.ctl' from autobackup;

重徏本地认证文g
C:\>orapwd file=F:\oracle\product.1.0\Db_1\DATABASE\PWDtest.ORA password=123456 entries=2;

RMAN>shutdown immediate

RMAN> startup mount

database is already started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/03/2005 20:00:30
RMAN-06189: current DBID 1863531774 does not match target mounted database (1862908416)

RMAN>

重新讄DBID

RMAN> set DBID=1862908416

executing command: SET DBID


你可能需要修改spfile文g,如果文g位置改变?/p>

SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.
SQL> create spfile from pfile;

File created.

SQL> startup mount;
ORACLE instance started.

RMAN> restore database;


转入SQLPLUSQsys登陆sqlplus
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 356534 generated at 08/02/2005 19:14:40 needed for thread 1
ORA-00289: suggestion :
F:\ORACLE\PRODUCT.1.0\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG05_08_03\O1_MF_1_
2_%U_.ARC
ORA-00280: change 356534 for thread 1 is in sequence #2


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel            //因ؓlog丢失Q此步选cancel
Media recovery cancelled.


SQL> alter database open resetlogs;

Database altered.

SQL> select * from ttt;

NAME       EMAIL
---------- ----------
aa         aa@abc.com
bb         bb@abc.com
cc         cc@abc.com

SQL>

数据回来了,但是׃归档和redo log丢了Q丢׃部分数据?/p>


情况?数据库崩溃,但是q剩下归档和redo log是好的?/p>


启动归档
SQL>alter database archivelog;

System altered.

SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     7
Current log sequence           9
SQL>

重启数据库,归档׃自动启动?/p>

启动自动备䆾控制文g

RMAN> configure controlfile autobackup on;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

配置RMAN的格式和存储位置?br />RMAN> configure channel device type disk format 'F:\backup\%U';

new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'F:\backup\%U';
new RMAN configuration parameters are successfully stored

查看数据文g的位|?br />SQL> select name from v$datafile;


定原控制文件的路径
SQL> select name from v$controlfile;

查看log位置

SQL>select name from V$ARCHIVED_LOGQ?/p>

查看log的信?br />SQL>select * from v$log_history;

插入数据
SQL> select * from sss;

AA         BB         CC
---------- ---------- ---
aa         bb         cc
aa         jj         mm
vv         ss         tt

完全备䆾数据?br />RMAN>backup data

再插入数?/p>

SQL> select * from sss;

AA         BB         CC
---------- ---------- ---
aa         bb         cc
aa         jj         mm
vv         ss         tt
mm         mm         mm


用DBCA删除数据库,删除相关的数据文Ӟ保留redo log和归档日志?/p>

再用DBCA重徏一个SID一L数据库?/p>

RMAN>startup

配置RMAN
RMAN> configure channel device type disk format 'F:\backup\%U';  //注意和原来的格式一栗?/p>

new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT   'F:\backup\%U';
new RMAN configuration parameters are successfully stored


RMAN>startup nomount
RMAN>restore controlfile to '/opt/oracle/oradata/control01.ctl' from autobackup;
再copy几䆾和原来一L路径文g名?/p>

RMAN>shutdown immediate

RMAN> startup mount

connected to target database (not started)
Oracle instance started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/03/2005 19:55:46
ORA-01991: invalid password file 'F:\oracle\product.1.0\Db_1\DATABASE\PWDtest.ORA'


重徏本地认证文g
C:\>orapwd file=F:\oracle\product.1.0\Db_1\DATABASE\PWDtest.ORA password=123456 entries=2;

RMAN>shutdown immediate

RMAN> startup mount

database is already started
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 08/03/2005 20:00:30
RMAN-06189: current DBID 1863531774 does not match target mounted database (1862908416)

RMAN>

重新讄DBID

RMAN> set DBID=1862908416

executing command: SET DBID

RMAN> startup mount

database is already started

RMAN> restore database;


RMAN> recover database;

Starting recover at 03-8?-05
using channel ORA_DISK_1

starting media recovery

archive log thread 1 sequence 1 is already on disk as file F:\ORACLE\PRODUCT.1.0\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG\
2005_08_03\O1_MF_1_1_1H2D39KL_.ARC
archive log thread 1 sequence 2 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO02.LOG
archive log thread 1 sequence 3 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO03.LOG
archive log thread 1 sequence 4 is already on disk as file F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO01.LOG
archive log filename=F:\ORACLE\PRODUCT.1.0\FLASH_RECOVERY_AREA\TEST\ARCHIVELOG05_08_03\O1_MF_1_1_1H2D39KL_.ARC thr
ead=1 sequence=1
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO02.LOG thread=1 sequence=2
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO03.LOG thread=1 sequence=3
archive log filename=F:\ORACLE\PRODUCT.1.0\ORADATA\TEST\REDO01.LOG thread=1 sequence=4
media recovery complete
Finished recover at 03-8?-05

RMAN>


׃控制文g是用备䆾q原的需要resetlogs打开?br />SQL> alter database open resetlogs;


SQL> select * from sss;

AA         BB         CC
---------- ---------- ---
aa         bb         cc
aa         jj         mm
vv         ss         tt
mm         mm         mm  //此行数据回来?说明没有丢数?



]]>
Oracle 用户授权需谨慎http://www.tkk7.com/huanghuizz/articles/68188.html七匹?/dc:creator>七匹?/author>Thu, 07 Sep 2006 02:07:00 GMThttp://www.tkk7.com/huanghuizz/articles/68188.htmlhttp://www.tkk7.com/huanghuizz/comments/68188.htmlhttp://www.tkk7.com/huanghuizz/articles/68188.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/68188.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/68188.html看到 有h提问关于授权的问?/a>. 不由得想多说几句. Oracle 9i 以及以下版本的数据库,默认的数据库角色有些不太合理的地? DBA 理的过E中,如果不太注意的话,可能会带来麻烦或者潜在的隐忧. 比如最常见?CONNECT 角色.

User => FOO has been granted the following privileges
====================================================================
        ROLE => CONNECT which contains =>
        SYS PRIV => ALTER SESSION 		grantable => NO
        SYS PRIV => CREATE CLUSTER 		grantable => NO
        SYS PRIV => CREATE DATABASE LINK 	grantable => NO
        SYS PRIV => CREATE SEQUENCE 		grantable => NO
        SYS PRIV => CREATE SESSION 		grantable => NO
        SYS PRIV => CREATE SYNONYM 		grantable => NO
        SYS PRIV => CREATE TABLE 		grantable => NO
        SYS PRIV => CREATE VIEW 		grantable => NO

q里面的 ALTER SESSION 是一个问? 恶意的用户很Ҏ(gu)利用q个权限l系l带来麻?举两个例?一个是 修改当前 Session ?cursor_sharing 参数gؓ FORCE ,然后提交可触?Oracle Bug 的查?cursor_sharing ?FORCE 模式?Bug 很多) , 很容易让数据库崩? 或者恶意用h?alter session set hash_area_size ... 的修改语? l自p定一个超大的 HASH_AREA_SIZE , 再提交一定的查询,也会l系l性能造成很糟p的影响.

q个 CONNECT 角色?Oracle 10g 中已l修改了,只有 create session 的权?

再来一个角色的问题. 比如 REOURCE 角色, 包含的权限如下所C?

User => FOO has been granted the following privileges
====================================================================
        ROLE => RESOURCE which contains =>
        SYS PRIV => CREATE CLUSTER 			grantable => NO
        SYS PRIV => CREATE INDEXTYPE 		grantable => NO
        SYS PRIV => CREATE OPERATOR 			grantable => NO
        SYS PRIV => CREATE PROCEDURE 		grantable => NO
        SYS PRIV => CREATE SEQUENCE 			grantable => NO
        SYS PRIV => CREATE TABLE 			grantable => NO
        SYS PRIV => CREATE TRIGGER 			grantable => NO
        SYS PRIV => CREATE TYPE 			grantable => NO
        SYS PRIV => UNLIMITED TABLESPACE 		grantable => NO

注意是包?UNLIMITED TABLESPACE 权限?实际上是隐含的一个权?OracleZ么这样做,没有明确的文档说??10g 中ؓ了向后兼?也是q样?), 恶意用户利用q个造成ȝ很容??SYSTEM 建立一个够大的表卛_让数据库宕机.



]]>
常用SQL语句词典http://www.tkk7.com/huanghuizz/articles/68187.html七匹?/dc:creator>七匹?/author>Thu, 07 Sep 2006 02:06:00 GMThttp://www.tkk7.com/huanghuizz/articles/68187.htmlhttp://www.tkk7.com/huanghuizz/comments/68187.htmlhttp://www.tkk7.com/huanghuizz/articles/68187.html#Feedback0http://www.tkk7.com/huanghuizz/comments/commentRss/68187.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/68187.html  Q0.创徏用户
   【前提?
   你必LCREATE USERpȝ权限。当你用CREATE USER语句创徏一个新用户后,该用L?
   限是I的Q要d到ORACLE该用户必LCREATE SESSION pȝ权限。因此在创徏用户之后
   Q你臛_应该授予用户CREATE SESSION 权限?
   
   【示例?
   
   创徏一个用L例子
   
   如果你创Z个新用户使用PASSWORD EXPIRE,在尝试登陆ORACLE之前该用L密码必须
   改变。你可以创徏该用户用以下语句:
   
   CREATE USER sidney
   IDENTIFIED BY welcome
   DEFAULT TABLESPACE cases_ts
   QUOTA 10M ON cases_ts
   TEMPORARY TABLESPACE temp_ts
   QUOTA 5M ON system
   PROFILE engineer
   PASSWORD EXPIRE;
   
   该用h以下特征Q?
   密码Qwelcome
   ~省表空_ cases_ts,?0M的用权?
   临时表空_ temp_ts
   在系l表I间SYSTEM?M的用权?
   使用数据库资源定义在配置文gengineer中?
   一个过期密码,在登陆ORACLE之前该用L密码必须改变?
   
   【关键字和参数?
   user
   标识要被创徏的用户名U?
   
   IDENTIFIED
   IDENTIFIED 让你指出ORACLE如何鉴别该用戗?
   
   BY password
   BY password 让你创Z个本地用户ƈ指出该用户必M用指定密码登录ORACLE?
   密码只包含单字节字符?
   
   DEFAULT TABLESPACE
   指出所创用L~省表空间。如果你忽略该项Q缺省值是SYSTEM表空间?
   
   TEMPORARY TABLESPACE
   指出所创用L临时表空间。如果你忽略该项Q缺省值是SYSTEM表空间?
   
   QUOTA
   使用QUOTAҎ(gu)定允许用户用的表空间大,以K或M为单位的整数倹{?
   一个用户可以拥有多个表I间的多个QUOTA倹{?
   
   UNLIMITED
   允许用户无限制的使用表空间?
   
   PROFILE
   指你想给用户分配哪个配置文g。配|文仉制用户用数据库的资源量。如果忽略该
   ,ORACLE为用h定缺省配|文件?
   
   PASSWORD EXPIRE
   指定用户密码的过期。这个设|迫使用P或DBAQ在d到ORACLE之前必须修改密码
   ?
   
   Q1.怎样创徏表?
   
   A. CREATE TABLE ROYAL_MTABLE
   
   (
   
   RM_INT_FIELD INTEGER,
   
   RM_STR_FIELD VARCHAR2(64)
   
   )
   
   CREATE TABLE ROYAL_DTABLE
   
   (
   
   RD_INT_FIELD INTEGER,
   
   RD_STR_FIELD VARCHAR2(32)
   
   )
   
   Q2.怎样删除表?
   
   A. DROP TABLE ROYAL_DTABLE;
   
   Q3.怎样创徏视图Q?
   
   A. CREATE OR REPLACE VIEW ROYAL_MDVIEW AS
   
   SELECT T1.RM_STR_FIELD AS F1, T2.RD_STR_FIELD AS F2 FROM ROYAL_MTABLE T1, ROYAL_DTABLE T2
   
   WHERE T1.RM_INT_FIELD = T2.RM_INT_FIELD
   
   Q4.怎样删除视图Q?
   
   A. DROP VIEW ROYAL_MDVIEW;
   
   Q5.怎样l表d字段Q?
   
   A. ALTER TABLE ROYAL_DTABLE ADD RM_INT_FIELD INTEGER;
   
   Q6.怎样删除表中某个字段Q?
   
   A. ALTER TABLE ROYAL_DTABLE DROP COLUMN RM_INT_FIELD;
   
   Q7.怎样l某个字D|加约束?
   
   A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NOT NULL;
   
   Q8.怎样去除某个字段上的U束Q?
   
   A. ALTER TABLE ROYAL_MTABLE MODIFY RM_STR_FIELD NULL;
   
   Q9.怎样l表加上主键Q?
   
   A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT PK_ROYAL_MTABLE PRIMARY KEY (RM_INT_FIELD);
   
   Q10.怎样删除表的主键Q?
   
   A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT PK_ROYAL_MTABLE CASCADE;
   
   Q11.怎样l表d一个外键?
   
   A. ALTER TABLE ROYAL_DTABLE ADD CONSTRAINT FK_ROYAL_DTABLE FOREIGN KEY (RM_INT_FIELD) REFERENCES ROYAL_MTABLE (RM_INT_FIELD) ON DELETE CASCADE;
   
   Q12.怎样删除表的一个外键?
   
   A. ALTER TABLE ROYAL_DTABLE DROP CONSTRAINT FK_ROYAL_DTABLE;
   
   Q13.怎样l字D加上CHECKQ?
   
   A. ALTER TABLE ROYAL_MTABLE ADD CONSTRAINT CHK_RM_STR_FIELD CHECK (RM_STR_FIELD IN ('Y','N'));
   
   Q14.怎样L字段上的CHECKQ?
   
   A. ALTER TABLE ROYAL_MTABLE DROP CONSTRAINT CHK_RM_STR_FIELD;
   
   Q15.怎样l字D设|默认|
   
   A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT 'ROYAL';
   
   Q16.怎样Ud字段的默认|
   
   A. ALTER TABLE ROYAL_DTABLE MODIFY RD_STR_FIELD DEFAULT NULL;
   
   Q17.怎样创徏索引Q?
   
   A. CREATE UNIQUE INDEX IDX_ROYAL_DTABLE ON ROYAL_DTABLE (RM_INT_FIELD);
   
   Q18.怎样删除索引Q?
   
   A. DROP INDEX IDX_ROYAL_DTABLE;
   
   Q19.怎样创徏用户Q?
   
   A. CREATE USER TESTUSER IDENTIFIED EXTERNALLY DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;
   
   Q20.怎样删除用户Q?
   
   A. DROP USER TESTUSER CASCADE;
   
   Q21.怎样对象权限(object privilegesQ授予用P
   
   A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTUSER;
   
   GRANT INSERT, UPDATE, DELETE ON ROYAL_DTABLE TO TESTUSER;
   
   GRANT SELECT, ALTER ON ROYAL_DTABLE TO TESTUSER WITH GRANT OPTION;
   
   Q22.怎样从用h回对象权限?
   
   A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_DTABLE FROM TESTUSER;
   
   Q23.怎样角色权限(role privilegesQ授予用P
   
   A. GRANT CONNECT TO TESTUSER WITH ADMIN OPTION;
   
   GRANT DBA TO TESTUSER;
   
   Q24.怎样从用h回角色权限?
   
   A. REVOKE DBA FROM TESTUSER;
   
   Q25.怎样系l权限(system privilegesQ授予用P
   
   A. GRANT ALTER ANY TABLE TO TESTUSER WITH ADMIN OPTION;
   
   Q26.怎样从用h回系l权限?
   
   A. REVOKE ALTER ANY TABLE FROM TESTUSER;
   
   Q27.怎样创徏序列Q?
   
   A. CREATE SEQUENCE RM_INT_FIELD_SEQ
   
   MINVALUE 1
   
   MAXVALUE 999999999999999999999999999
   
   START WITH 1
   
   INCREMENT BY 1
   
   CACHE 10
   
   ORDER;
   
   Q28.怎样删除序列Q?
   
   A. DROP SEQUENCE RM_INT_FIELD_SEQ;
   
   Q29.怎样获取序列|
   
   A. SELECT RM_INT_FIELD_SEQ.NEXTVAL FROM DUAL;
   
   Q30.怎样创徏角色Q?
   
   A. CREATE ROLE TESTROLE;
   
   Q31.怎样删除角色Q?
   
   A. DROP ROLE TESTROLE;
   
   Q32.怎样对象权限(object privilegesQ授予角Ԍ
   
   A. GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE TO TESTROLE;
   
   Q33.怎样从角色收回对象权限?
   
   A. REVOKE SELECT, INSERT, UPDATE, DELETE, ALTER ON ROYAL_MTABLE FROM TESTROLE;
   
   Q34.怎样角色权限(role privilegesQ授予角Ԍ
   
   A. GRANT DBA TO TESTROLE;
   
   Q35.怎样从角色收回角色权限?
   
   A. REVOKE DBA FROM TESTROLE;
   
   Q36.怎样系l权限(system privilegesQ授予角Ԍ
   
   A. GRANT CREATE TABLE TO TESTROLE;
   
   Q37.怎样从角色收回系l权限?
   
   A. REVOKE CREATE TABLE FROM TESTROLE;
   
   Q38.不等于条件有哪几U写法?Q茴香豆问题:)Q?
   
   A. SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD != 'Y';
   
   SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD ^= 'Y';
   
   SELECT * FROM ROYAL_MTABLE WHERE RM_STR_FIELD <> 'Y';
   
   Q39.like子句的用法?
   
   A. SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '%Y%';
   
   SELECT * FROM ROYAL_DTABLE WHERE RD_STR_FIELD LIKE '_Y%';
   
   Q40.请DZ个where子查询简单例子?
   
   A. SELECT * FROM ROYAL_DTABLE WHERE RM_INT_FIELD IN (SELECT RM_INT_FIELD FROM ROYAL_MTABLE WHERE RM_STR_FIELD NOT IN ('Y','B'));
   
   Q41.Oracle常用字符串处理函数有哪些Q?
   
   A. || q接两个字符Ԍ LENGTH 字符串长度; TRIM/LTRIM/RTRIM 截断串左Q右Q指定字W串Q包括空ԌQ?LOWER/UPPER 字W串转换为小/大写Q等{?
   
   例如QSELECT RM_INT_FIELD||'--'||RM_STR_FIELD||'YES' FROM ROYAL_MTABLE;
   
   Q42.Oracle支持哪些数字处理函数Q?
   
   A. Oracle支持所有常用数字函敎ͼ包括Q但不限于)+???、ABS、COS、EXP、LN、LOG、MOD、POWER、ROUND、SIN、SINH、SQRT、TAN、TRUNC、AVG、COUNT、MAX、MIN、SUM、GREATEST、LEAST{等?
   
   例如Q?
   
   SELECT GREATEST(3, 4, 5)*4 FROM DUAL;
   
   SELECT POWER(2,3) FROM DUAL;
   
   Q43.怎样取得数据库服务器当前日期、时_
   
   A. SELECT SYSDATE FROM DUAL;
   
   SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
   
   Q44.怎样字W串转换为日期、时间格式?
   
   A. SELECT TO_DATE('2002-11-27', 'YYYY-MM-DD') FROM DUAL;
   
   SELECT TO_DATE('2002-11-27 09:28:55', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
   
   Q45.常用日期函数有哪些?
   
   A. NEXT_DAY LAST_DAY ADD_MONTHS MONTHS_BETWEEN{等?
   
   例如QSELECT LAST_DAY(SYSDATE) FROM DUAL;
   
   Q46.能给Z个DECODE函数用法的例子吗Q?
   
   A. DECODE函数的格式ؓDECODE(value, if1, then1, if2, then2...,else)。假设表ROYAL_DTABLE中有如下数据Q?
   
   RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
   --------------------------------------
   1 royal 1
   2 bill 2
   3 joy 1
   
   误察如下SQL语句输出l果?
   SELECT DECODE(RD_STR_FIELD, 'royal', 'royaltest', 'bill', 'billgates', RD_STR_FIELD) AS DC FROM ROYAL_DTABLE;
   DC
   ---------
   royaltest
   billgates
   joy
   
   Q47.能给Z个group by、having和order by用法的例子吗Q?
   
   A. SQL> SELECT * FROM ROYAL_MTABLE;
   
   RM_INT_FIELD RM_STR_FIELD
   -------------------------
   1 Y
   2 N
   3 Y
   
   SQL> SELECT * FROM ROYAL_DTABLE;
   
   RD_INT_FIELD RD_STR_FIELD RM_INT_FIELD
   --------------------------------------
   1 royal 1
   2 bill 2
   3 joy 1
   
   SQL> SELECT RM_INT_FIELD, SUM(RD_INT_FIELD) FROM ROYAL_DTABLE GROUP BY RM_INT_FIELD HAVING SUM(RD_INT_FIELD) >= 2 ORDER BY SUM(RD_INT_FIELD) ASC;
   
   RM_INT_FIELD SUM(RD_INT_FIELD)
   ------------------------------
   2 2
   1 4
   
   Q48.Oracle有哪些常用数据字典?
   
   A. USER_TABLES(TABS)、USER_TAB_COLUMNS(COLS)、USER_VIEWS、USER_SEQUENCES(SEQ)、USER_CONSTRAINTS、USER_CONS_COLUMNS、USER_TAB_COMMENTS、USER_COL_COMMENTS、USER_INDEXES(IND)、USER_IND_COLUMNS、USER_USERS、DBA_USERS、ALL_USERS、USER_TABLESPACES{等?
   
   例如QSELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_ROYAL_DTABLE';
   
   Q49.怎样日期、时间插入date型字D中Q?
   
   A. INSERT INTO ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (9, 'Y', TO_DATE('2002-05-23', 'YYYY-MM-DD'));
   
   INSERT INTO ROYAL_MTABLE (RM_INT_FIELD, RM_STR_FIELD, RM_DATE_FIELD) VALUES (10, 'Y', TO_DATE('2002-10-10 8:23:33', 'YYYY-MM-DD HH:MI:SS'));
   
   Q50.能介l一下connect by的用法吗Q?
   
   A. connect by子句提供了遍历“树”的手段?
   
   假设有这样一个表QCREATE TABLE ROYAL_TREETABLE (ID INTEGER, PARENT_ID INTEGER, NAME VARCHAR2(32));
   
   表中有如下数据:
   
   ID PARENT_ID NAME
   -----------------
   2 1 AAA
   3 1 BBB
   4 2 CCC
   5 2 DDD
   6 4 EEE
   8 7 GGG
   
   假如我们现在需要从NAME = 'EEE'的记录开始,向上查找所有有父子关系的记录,可执行如下SQL语句Q?
   
   SELECT * FROM ROYAL_TREETABLE START WITH NAME = 'EEE' CONNECT BY ID = PRIOR PARENT_ID;
   
   ID PARENT_ID NAME
   -----------------
   6 4 EEE
   4 2 CCC
   2 1 AAA



]]>在Oracle数据?0g中跟tSQLhttp://www.tkk7.com/huanghuizz/articles/66034.html七匹?/dc:creator>七匹?/author>Sun, 27 Aug 2006 14:08:00 GMThttp://www.tkk7.com/huanghuizz/articles/66034.htmlhttp://www.tkk7.com/huanghuizz/comments/66034.htmlhttp://www.tkk7.com/huanghuizz/articles/66034.html#Feedback1http://www.tkk7.com/huanghuizz/comments/commentRss/66034.htmlhttp://www.tkk7.com/huanghuizz/services/trackbacks/66034.html
  利用Oracle数据?0gQOralce通过一个新的内|Y件包DBMS_MONITOR合理化了SQL的跟t,q个软g包中包含以前无书面记载的跟踪工具Q如DBMS_SUPPORT软g包)的功能。现在,(zhn)可以轻村֜从头到尾--从客hC间层再到后端--跟踪M用户的会话,q且Z特定的客户ID、模块或动作生成跟踪文g?

  此外QOracle数据?0g包含一U新的实用程序trcsessQ它可以让?zhn)Z会话ID或模块名UCcȝ条gQ有选择C大量跟踪文g中抽取出跟踪数据Qƈ它们保存到一个文件中。该实用E序在共享服务器配置中特别有用,因ؓ调度E序可能把每一个用戯求传递给不同的共享服务器q程Q从而ؓMl定的会话生多个跟t文件。与通过大量跟踪文g发掘信息不同QOracle数据?0g的trcsess可以让?zhn)获得关于单一用户会话的整合后的跟t信息?

  开?/b>

  和Oracle数据库的以前版本一P跟踪文g被输出到由服务器的初始化文Ӟ或spfileQ的user_dump_dest参数指定的目录中。默认的位置取决于操作系l;例如Q对于用DBCA的Microsoft Windowsq_Q默认位|是$ORACLE_BASE\instance_name\admin\udumpQ其中instance_ name是Oracle实例的名U。?zhn)可以通过使用以下改变会话命o来动态地更改该参敎ͼ

alter session set user_dump_dest="c:\kflosstrace";

  (zhn)还可以把?zhn)自己的标记添加到跟踪文g名中Q以便?zhn)能够更容易地扑ֈ生成的文件。ؓ此,可以在启动跟t之前设|tracefile_identifier初始化参敎ͼ

alter session set
tracefile_identifier ="kfloss_test";

  通过该命令生成的跟踪文g带有(zhn)设|的附加在文件名后的字符串倹{尽这些改变会话命令都不是必要的,但是它们都会使查找跟t会话的l果更容易?

  现在Q我们已l设|了q些参数Q那么让我们看看新的跟踪软g包和Oracle企业理器的界面。让我们使用新的DBMS_MONITOR软g包通过模块名称和客h名称来徏立一个跟t?

  用DBMS_MONITOR建立跟踪

  DBMS_MONITOR包具有多个例E,用于启用和禁用统计数据集合,以及用于Ҏ(gu)会话IDq行跟踪、或者基于服务名U、模块名U和动作名称的组合进行跟t。(它们三者从层次l构上是兌的:(zhn)不能在不指定模块和服务名称的情况下指定一个动作,但是(zhn)可以只指定服务名称Q或者只指定服务名称和模块名Uͼ?模块名称和动作名Uͼ如果有的话)都来自于应用E序代码内部。例如,Oracle?sh)子商务套g应用E序在代码中提供了模块名U和动作名称Q这h可以在MOralce企业理器页面中通过名称来识别它们?QPL/SQL开发h员可以通过使用DBMS_APPLICATION_INFO包设|模块名U和动作名称Q把一些调用嵌入到他们的应用程序中Q?

  h意,讄模块、动作及其他参数Q如client_idQ将不造成Ҏ(gu)据库的往q操?-q些例程携带来自应用E序的所有调用?

  服务名称q于连接该服务的连接字W串来确定。未与特定服务关联的用户会话由sys$users处理Qsys$background是后台进E的默认服务Q。由于我们具有一个服务和一个模块名Uͼ因而我们可以启动对该模块的跟踪Q如下所C:

SQL> exec dbms_monitor.serv_mod_act_trace_enable
(service_name=>'testenv', module_name=>'product_update');

  PL/SQLq程已成功完成?br />
  我们可以启动对客h的跟t:

SQL> exec dbms_monitor.client_id_trace_enable
(client_id=>'kimberly');

  PL/SQLq程已成功完成?br />
  h意,所有这些设|都是永久性的--所有与该服务和模块兌的会话都会被跟踪Q而不仅仅是跟t当前会话?

  ZZ会话ID跟踪SQLQ可以查看Oracle企业理器的Top Sessions面Q或者像(zhn)当前做的那h询V$SESSION视图?br />
SQL> select sid, serial#, username
from v$session;
SID SERIAL# USERNAME
------ ------- ------------
133 4152 SYS
137 2418 SYSMAN
139 53 KIMBERLY
140 561 DBSNMP
141 4 DBSNMP
. . .
168 1
169 1
170 1
28 rows selected.

  通过会话ID(SID)和序P(zhn)可以用DBMS_MONITOR只对下面的会话启用跟t:

SQL> exec dbms_monitor.session_trace_enable(139);

  PL/SQLq程已成功完成?br />
  该序号默认ؓ该SID的当前序P除非另外指定Q,因此如果那就是?zhn)惌t的会话和序P那么(zhn)就不必查看更多的内容了。还有,默认情况下,WAITS讄为true而BINDS讄为falseQ因此上面的语法实际上与下面的语法效果相同:

SQL> exec dbms_monitor.session_trace_enable
(session_id=>139, serial_num=>53, waits=>true, binds=>false);

  h意,WAITS和BINDS是相同的参数Q?zhn)在过d能已l用DBMS_SUPPORT?0046事g对它们进行了讄?

  如果(zhn)正在一个生产环境中工作Q那么此时?zhn)最好重新运行出错的SQL或应用程序,q且相应地创t文件?

  用企业管理器建立跟踪

  通过Oracle企业理器徏立跟t从Top Consumers面Q可以通过Additional Monitoring Links区域中的Performance面得到Q如?所C)开始。该面昄服务、模块、客户和动作对系l资源的当前使用情况?

点击攑֤此图? src=
?QOracle企业理器的Top Consumers面

  (zhn)可以单击Top Services、Top Modules、Top Actions、Top Clients或Top Sessions选项卡,来查看这些类别的消费者中每一U的详细信息Q随后?zhn)可以通过q些面中的每一个页面轻村֐用(或禁用)SQL跟踪。从面上的列表中简单地选择目Q然后单d用SQL跟踪QEnable SQL TraceQ开始跟t(当?zhn)完成跟踪Ӟ单击用按钮Q?

  (zhn)还可以启用Q或用Q这些页面上列出的Q何项目的l计数据集合。(DBMS_MONITORq提供了用于启用和禁用数据集合的例程Q?

  分析跟踪l果

  获取关于Kimberly Floss的图书的信息

  无论(zhn)是使用DBMS_MONITOR或者是使用Oracle企业理器徏立跟t,(zhn)都用trcsess 命o行工h整合跟踪文g。单击Oracle企业理器中的查看SQL跟踪QView SQL TraceQ按钮显CZ个页面,其中昄了?zhn)用于整合所有跟t文件的语法?

  要确保用双引h住字W串Qƈ在文件名后添加一?.trc"扩展名;否则QTKPROF不会把它作Z个文件名来接受。在执行该命令之前,扑ֈ在user_dump_destQ或者,如果(zhn)没有更改该参数名,则在\udumpQ中指定的目录?

C:\...\udump> trcsess output="kfloss.trc" service="testenv"
module="product update"
action="batch insert"

  随后Q?zhn)可以?gu)合的跟踪文gq行TKPROFQ以生成一份报告?

C:\...\udump> tkprof kfloss.trc
output=kfloss_trace_report SORT=(EXEELA, PRSELA, FCHELA)

  如果(zhn)不l止跟踪Q那么运行该服务和模块的每一个会话都会被跟踪。因此,当?zhn)完成跟踪Ӟ要确保通过使用Oralce企业理器或DBMS_MONITOR包来l止跟踪?img src ="http://www.tkk7.com/huanghuizz/aggbug/66034.html" width = "1" height = "1" />

]]>
Oracle中Decode()函数使用技?/title><link>http://www.tkk7.com/huanghuizz/articles/65497.html</link><dc:creator>七匹?/dc:creator><author>七匹?/author><pubDate>Thu, 24 Aug 2006 05:17:00 GMT</pubDate><guid>http://www.tkk7.com/huanghuizz/articles/65497.html</guid><wfw:comment>http://www.tkk7.com/huanghuizz/comments/65497.html</wfw:comment><comments>http://www.tkk7.com/huanghuizz/articles/65497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/huanghuizz/comments/commentRss/65497.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/huanghuizz/services/trackbacks/65497.html</trackback:ping><description><![CDATA[ DECODE函数是ORACLE <a class="bluekey" target="_blank">PL/S</a>QL是功能强大的函数之一Q目前还只有ORACLE公司的SQL提供了此函数Q其他数据库厂商的SQL实现q没有此功能。DECODE有什么用途呢Q?先构造一个例子,假设我们想给智星职员加工资,其标准是Q工资在8000元以下的加20Q;工资?000元以上的?5Q,通常的做法是Q先选出记录中的工资字段? select salary into var-salary from employeeQ然后对变量var-salary用if-then-else或choose case之类的流控制语句q行判断?如果用DECODE函数Q那么我们就可以把这些流控制语句省略Q通过SQL语句可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很z? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else)Q表C如果value{于if1ӞDECODE函数的结果返回then1,...,如果不等于Q何一个if|则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代valueQ是可以使DECODE函数具备大于、小于或{于功能? <p>  decode()函数使用技?/p><p>  ·软g环境:</p><p>  1、Windows NT4.0+ORACLE 8.0.4</p><p>  2、ORACLE安装路径?C:\ORANT</p><p>  ·<a class="bluekey" target="_blank">含义</a>解释:</p><p>  decode(条g,?,译?,?,译?,...值n,译值n,~省?</p><p>  该函数的含义如下:</p><p>  IF 条g=? THEN</p><p>  RETURN(译?)</p><p>  ELSIF 条g=? THEN</p><p>  RETURN(译?)</p><p>  ......</p><p>  ELSIF 条g=值n THEN</p><p>  RETURN(译值n)</p><p>  ELSE</p><p>  RETURN(~省?</p><p>  END IF</p><p>  · <a class="bluekey" target="_blank">使用Ҏ(gu)</a>:</p><p>  1、比较大?/p><p>  select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较?yu)?/p><p>  sign()函数Ҏ(gu)某个值是0、正数还是负敎ͼ分别q回0??1</p><p>  例如:</p><p>  变量1=10Q变?=20</p><p>  则sign(变量1-变量2)q回-1Qdecode解码l果为“变?”,辑ֈ了取较小值的目的?/p><p>  2、表?a class="bluekey" target="_blank">视图</a>l构转化</p><p>  现有一个商品销售表saleQ表l构?</p><p>  month    char(6)      --月䆾</p><p>  sell    number(10,2)   --月销售金?/p><p>  现有数据?</p><p>  200001  1000</p><p>  200002  <a class="bluekey" target="_blank">1100</a></p><p>  200003  1200</p><p>  200004  1300</p><p>  200005  1400</p><p>  200006  1500</p><p>  200007  1600</p><p>  200101  1100</p><p>  200202  1200</p><p>  200301  1300</p><p>  惌转化Z下结构的数据:</p><p>  year   char(4)      --q䆾</p><p>  month1  number(10,2)   --1月销售金?/p><p>  month2  number(10,2)   --2月销售金?/p><p>  month3  number(10,2)   --3月销售金?/p><p>  month4  number(10,2)   --4月销售金?/p><p>  month5  number(10,2)   --5月销售金?/p><p>  month6  number(10,2)   --6月销售金?/p><p>  month7  number(10,2)   --7月销售金?/p><p>  month8  number(10,2)   --8月销售金?/p><p>  month9  number(10,2)   --9月销售金?/p><p>  month10  number(10,2)   --10月销售金?/p><p>  month11  number(10,2)   --11月销售金?/p><p>  month12  number(10,2)   --12月销售金?/p><p>  l构转化的SQL语句?</p><p>  create or replace view</p><p>  v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)</p><p>  as</p><p>  select</p><p>  substrb(month,1,4),</p><p>  sum(decode(substrb(month,5,2),'01',sell,0)),</p><p>  sum(decode(substrb(month,5,2),'02',sell,0)),</p><p>  sum(decode(substrb(month,5,2),'03',sell,0)),</p><p>  sum(decode(substrb(month,5,2),'04',sell,0)),</p><img src ="http://www.tkk7.com/huanghuizz/aggbug/65497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/huanghuizz/" target="_blank">七匹?/a> 2006-08-24 13:17 <a href="http://www.tkk7.com/huanghuizz/articles/65497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://xxx2222.com" target="_blank">ѾƷӰվ</a>| <a href="http://www137av.com" target="_blank">ƷþþþӰԺ</a>| <a href="http://977446.com" target="_blank">һƬѿ</a>| <a href="http://773311h.com" target="_blank">ҳƷ˿</a>| <a href="http://dou18.com" target="_blank">¼ۺͼƬ</a>| <a href="http://18jko.com" target="_blank">aëƬ</a>| <a href="http://zs0451.com" target="_blank">þWWWɫѹۿ</a>| <a href="http://sdnuoyuan.com" target="_blank">޷츾</a>| <a href="http://pj9xx6.com" target="_blank">һƵվ</a>| <a href="http://0769wwt.com" target="_blank">ŮӸ߳ϱ׽</a>| <a href="http://327www.com" target="_blank">߹ۿ</a>| <a href="http://wcnmgb.com" target="_blank">AVպAV̾ </a>| <a href="http://shlamore.com" target="_blank">Ļ</a>| <a href="http://mlhcd.com" target="_blank">߹ۿվ</a>| <a href="http://32-k.com" target="_blank">ϣӰԺѹۿƵ</a>| <a href="http://newbuybay.com" target="_blank">պӰ߹ۿĻ</a>| <a href="http://97chaopeng2.com" target="_blank">ŮƵվ</a>| <a href="http://shzzhsy.com" target="_blank">91㽶վ</a>| <a href="http://wxbhnkyy39.com" target="_blank">ѹ99þþ㽶</a>| <a href="http://17soco.com" target="_blank">Ƶ</a>| <a href="http://qianmiu.com" target="_blank">޻Ƭֻѹۿ</a>| <a href="http://wwwnewhtbook.com" target="_blank">aëƬƵۿ</a>| <a href="http://8654123.com" target="_blank">պëƬһƵ</a>| <a href="http://zjpcyh.com" target="_blank">ؼëƬaaaaëƬ</a>| <a href="http://milbolg.com" target="_blank">޾Ʒ</a>| <a href="http://xamxx.com" target="_blank">ŷ޹ۺAVþ</a>| <a href="http://www99xyxy.com" target="_blank">ƷۺϾþ</a>| <a href="http://93qsgy.com" target="_blank">˳ɵӰ߹ۿ</a>| <a href="http://liuxilife.com" target="_blank">͹ƷƵƷ</a>| <a href="http://mmm19.com" target="_blank">2019Ļѿ</a>| <a href="http://saozib.com" target="_blank">߾ƷƵѹۿ</a>| <a href="http://www-c559.com" target="_blank">Ƶ69</a>| <a href="http://wcnmgb.com" target="_blank">Ļ</a>| <a href="http://muguangmi.com" target="_blank">4ѵַ</a>| <a href="http://asdfghjklzxcv.com" target="_blank">ŮëƬ߿˶ </a>| <a href="http://246210.com" target="_blank">þۺϾžһ</a>| <a href="http://yunyitai.com" target="_blank">ëƬ߿Ѱ</a>| <a href="http://shiliuvip.com" target="_blank">þۺAVѹۿ</a>| <a href="http://k67m.com" target="_blank">ձ߹ۿv</a>| <a href="http://9527paotui.com" target="_blank">ƬƵۿ</a>| <a href="http://www-175345.com" target="_blank">ִִˬƵ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>