??xml version="1.0" encoding="utf-8" standalone="yes"?> 有下面两个表, TYPE_ID列上值的重复性很? q行下面的SQL? L很慢, 我们已经指定用HASH JOIN, q也指定了T_SMALL是驱动表, 百思不得其? W一N一思时, 发现了原因所? 因ؓOR的问? Oracle在做HASH JOIN时只依据了TYPE_IDq个效率不高的列, q时的PLAN中肯定出CFILTERq样的步? 后来这个语句手工改成UNION方式, ׃2个小时变成了15分钟. SQL语句的调? 其实很需要功? 也是一门很q学问, 如此单的SQL, 也有很深ȝ知识. 此时可以通过以下Ҏ(gu)解决Q?/p>
1。将SPFILE中的参数拯到init***.ora文g?/p>
2。删除DATABASE目录下的SPFILE***.ORA文g?/p>
3。启动数据库 Q现在应该可以成功启动) Q。SQL> create spfile from pfile 生成QIQテQL 使用startup命o启动数据库,Q?/span>Oralce会按照以下序在缺省目录中(9i,10i在oracle_home/database目录下)搜烦参数文gQ(Q)spfile***.ora文g Q2Q如果没有spfile***.ora文gqspfile.ora文gQ3Q?如果没有spfile.ora文gqinit***.oraQ4Q如果没有init***.ora文gq pfile.ora 所以上面我们采取的解决Ҏ(gu)是将破坏的SQuQLQ中的参数复制到init***.ora中,然后删除QIQテQI文gQ这样启动时׃用init***.ora文g启动Q然后用create spfile from pfile 命o生成QIQテQL 以后如果要修改SQuQLQ中的参数绝对不能在手工修改QIQテQI文g了,用下面命令:alter system set parameter=Value scope=spfile|both|memory 例如Q?span style="color: #333333; font-size: 9pt">alter system set db_cache_size=24M scope=both;来修?/span> Oracle 中要了解的文件实在太多了Q一不小心就被弄晕了_下面归类下: 版本QOracle Database 10g Enterprise Edition Release 10.2.0.1.0 oracle oem中的Lw䆾证明?0g的web database control中,q行一些操作需要进行主n份证?比如启动、关闭数据库Q进行数据备份、数据的导出导入{等一些操作。这样对于数据库的安全增Z一定的保证。如果我们有q行适当的配|,可以W一ơ会遇到一些错误:比如 RemoteOperationException 1、从开始(startQ进入设|——控刉李쀔—管理工?扑ֈ本地安全{略 2、打开本地安全{略,扑ֈ本地{略Qlocal policiesQ?/p>
3、打开其中的用h限分配(user rights assignmentQ?/p>
4、在双的列表中扑ֈ“以批量Q务登?#8221;Qlog on as a batch jobQ?/p>
5、选中Q点d键,选择属性,数据库安装的所在操作系l用Pd其中卛_
一、区别和定义
LONG: 可变长的字符串数据,最?GQLONGhVARCHAR2列的Ҏ(gu),可以存储长文本一个表中最多一个LONG?br />
LONG RAW: 可变长二q制数据Q最?G
CLOB: 字符大对象Clob 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数?br />
BFILE: 存储在文件中的二q制数据Q这个文件中的数据只能被只读ѝ但该文件不包含在数据库内?br />
bfile字段实际的文件存储在文gpȝ?字段中存储的是文件定位指?bfile对oracle来说是只ȝ,也不参与事务性控制和数据恢复.
CLOBQNCLOBQBLOB都是内部的LOB(Large Object)cdQ最?GQ没有LONG只能有一列的限制
要保存图片、文本文件、Word文g各自最好用哪种数据cd?
--BLOB最好,LONG RAW也不错,但Long是oracle要废弃的类型,因此用BLOB?br />
二、操?br />
1?get
CLOB
java 代码
//获得数据库连?nbsp;
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需?#8220;for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出ƈ需要返回的数据Q类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
BLOB
java 代码
//获得数据库连?nbsp;
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需?#8220;for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出ƈ需要返回的数据Q类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
2?put
CLOB
java 代码
//获得数据库连?nbsp;
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制{换ؓoracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符Ԍ定义QString data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
BLOB
java 代码
//获得数据库连?nbsp;
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制{换ؓoracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组Q定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
=======================================================================
厚厚发表?2006q?6?7?
|络上很多关于JAVA对Oracle中BLOB、CLOBcd字段的操作说明,有的不够全面Q有的不够准,甚至有的直就是胡说八道。最q的目正y用到了这斚w的知识,在这里做个ȝ?br />
环境Q?br />
Database: Oracle 9i
App Server: BEA Weblogic 8.14
表结构:
CREATE TABLE TESTBLOB (ID Int, NAME Varchar2(20), BLOBATTR Blob)
CREATE TABLE TESTBLOB (ID Int, NAME Varchar2(20), CLOBATTR Clob)
JAVA可以通过JDBCQ也可以通过JNDI讉Kq操作数据库Q这两种方式的具体操作存在着一些差异,׃通过App Server的数据库q接池JNDI获得的数据库q接提供的java.sql.Blob和java.sql.Clob实现cMJDBC方式提供的不同,因此在入库操作的时候需要分别对待;出库操作没有q种差异Q因此不用单独对待?br />
一、BLOB操作
1、入?br />
Q?QJDBC方式
//通过JDBC获得数据库连?br />
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:testdb", "test", "test");
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制{换ؓoracle.sql.BLOB
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组Q定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
Q?QJNDI方式
//通过JNDI获得数据库连?br />
Context context = new InitialContext();
ds = (DataSource) context.lookup("ORA_JNDI");
Connection con = ds.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_blob()
st.executeUpdate("insert into TESTBLOB (ID, NAME, BLOBATTR) values (1, "thename", empty_blob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Blob对象后强制{换ؓweblogic.jdbc.vendor.oracle.OracleThinBlobQ不同的App Server对应的可能会不同Q?br />
weblogic.jdbc.vendor.oracle.OracleThinBlob blob = (weblogic.jdbc.vendor.oracle.OracleThinBlob) rs.getBlob("BLOBATTR");
OutputStream outStream = blob.getBinaryOutputStream();
//data是传入的byte数组Q定义:byte[] data
outStream.write(data, 0, data.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
2、出?br />
//获得数据库连?br />
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需?#8220;for update”
ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");
if (rs.next())
{
java.sql.Blob blob = rs.getBlob("BLOBATTR");
InputStream inStream = blob.getBinaryStream();
//data是读出ƈ需要返回的数据Q类型是byte[]
data = new byte[input.available()];
inStream.read(data);
inStream.close();
}
inStream.close();
con.commit();
con.close();
二、CLOB操作
1、入?br />
Q?QJDBC方式
//通过JDBC获得数据库连?br />
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:testdb", "test", "test");
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制{换ؓoracle.sql.CLOB
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符Ԍ定义QString data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
Q?QJNDI方式
//通过JNDI获得数据库连?br />
Context context = new InitialContext();
ds = (DataSource) context.lookup("ORA_JNDI");
Connection con = ds.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//插入一个空对象empty_clob()
st.executeUpdate("insert into TESTCLOB (ID, NAME, CLOBATTR) values (1, "thename", empty_clob())");
//锁定数据行进行更斎ͼ注意“for update”语句
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1 for update");
if (rs.next())
{
//得到java.sql.Clob对象后强制{换ؓweblogic.jdbc.vendor.oracle.OracleThinClobQ不同的App Server对应的可能会不同Q?br />
weblogic.jdbc.vendor.oracle.OracleThinClob clob = (weblogic.jdbc.vendor.oracle.OracleThinClob) rs.getClob("CLOBATTR");
Writer outStream = clob.getCharacterOutputStream();
//data是传入的字符Ԍ定义QString data
char[] c = data.toCharArray();
outStream.write(c, 0, c.length);
}
outStream.flush();
outStream.close();
con.commit();
con.close();
2、出?br />
//获得数据库连?br />
Connection con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
Statement st = con.createStatement();
//不需?#8220;for update”
ResultSet rs = st.executeQuery("select CLOBATTR from TESTCLOB where ID=1");
if (rs.next())
{
java.sql.Clob clob = rs.getClob("CLOBATTR");
Reader inStream = clob.getCharacterStream();
char[] c = new char[(int) clob.length()];
inStream.read(c);
//data是读出ƈ需要返回的数据Q类型是String
data = new String(c);
inStream.close();
}
inStream.close();
con.commit();
con.close();
需要注意的地方Q?br />
1、java.sql.Blob、oracle.sql.BLOB、weblogic.jdbc.vendor.oracle.OracleThinBlob几种cd的区?br />
2、java.sql.Clob、oracle.sql.CLOB、weblogic.jdbc.vendor.oracle.OracleThinClob几种cd的区?
]]>CREATE TABLE T_SMALL (TYPE_ID, ID, ...);
CREATE TABLE T_MIDDLE (TYPE_ID, ID1, ID2, ...); SELECT .....
FROM T_SMALL S, T_MIDDLE M
WHERE S.TYPE_ID = M.TYPE_ID
AND (S.ID = M.ID1 OR S.ID = M.ID2) SELECT .....
FROM T_SMALL S, T_MIDDLE M
WHERE S.TYPE_ID = M.TYPE_ID
AND S.ID = M.ID1
UNION ALL
SELECT .....
FROM T_SMALL S, T_MIDDLE M
WHERE S.TYPE_ID = M.TYPE_ID
AND S.ID = M.ID2 AND M.ID1 <> M.ID2
]]>
也可以手动刷新物化视图:dbms_mview('mv_emp_pk');
]]>
]]>
一般来ԌOracle文g分以下几个类型:
数据文gQ 真实数据
重做日志文gQ 联机日志、归日?
控制文gQ 包含物理文g到数据字怸的逻辑表空间之间的映射
初始化参数文Ӟ 控制内存
警告和追t日志文Ӟ
备䆾文gQ?
C:\oracle\product\10.2.0\db_3\srvm\admin\init.ora --初始化参数文?
C:\oracle\product\10.2.0\admin\orcl\bdump\alert_orcl.LOG --警告日志文g(报警文g包括了数据库日常操作的信息,它存攑֜由BACKGROUND_DUMP_DEST参数所定义的目录下。该文g得有数据库管理员来管理。作Z合格的DBA应该每天都要查看报警文g以获取数据库的诊断或出错信息?报警文g中主要记录了QA数据库启动和关闭的时间。B所有非默认初始化参数。C LGWR正在写的日志序列?D 日志切换信息 E 所执行的ALTER语句 F 创徏表空间和q原D늭)
C:\oracle\product\10.2.0\admin\orcl\udump\orcl_ora_2828.TRC 用户q踪文g
C:\oracle\product\10.2.0\oradata\orcl\SYSTEM01.DBF --表空间数据文?
C:\oracle\product\10.2.0\oradata\orcl\SYSAUX01.DBF
C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF
C:\oracle\product\10.2.0\oradata\orcl\TEMP01.DBF
C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS01.DBF
C:\oracle\product\10.2.0\oradata\orcl\CONTROL01.CTL --控制文g
C:\oracle\product\10.2.0\oradata\orcl\CONTROL02.CTL
C:\oracle\product\10.2.0\oradata\orcl\CONTROL03.CTL
C:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG --联机日志文g
C:\oracle\product\10.2.0\oradata\orcl\REDO02.LOG
C:\oracle\product\10.2.0\oradata\orcl\REDO03.LOG
C:\oracle\ora92\ldap\odi\archive\ORADB2T001S01100.ARC --归日志文g
...
C:\oracle\ora92\ldap\odi\archive\ORADB2T001S01199.ARC
C:\oracle\product\10.2.0\db_3\database\initorcl.ora --启动参数文g
C:\oracle\product\10.2.0\db_3\database\oradim.log --SVRMGRL理器出错日?
C:\oracle\product\10.2.0\db_3\NETWORK\log\listener.log --监听器日志文?
C:\oracle\product\10.2.0\db_3\NETWORK\log\sqlnet.log --Sql*Net 日志文g
C:\oracle\product\10.2.0\db_3\NETWORK\ADMIN\tnsnames.ora --TNS q接文gQ数据库别名Q?/font>
C:\oracle\product\10.2.0\db_3\NETWORK\ADMIN\sqlnet.ora --Sql*Net 环境文g
C:\oracle\product\10.2.0\db_3\NETWORK\ADMIN\listener.ora --监听器参数文?
C:\oracle\product\10.2.0\db_3\sqlplus\admin\glogin.sql --Sql*Plusd自动执行脚本
C:\oracle\product\10.2.0\db_3\sqlplus\bin\sqlplus.ini --Sql*Plus环境初始化文?
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\standard.sql --建立数据库基本结构的?
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\catalog.sql --建立数据字典视图脚本Q以SYS、INTERNALq接
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\catexp.sql --建立EXP/IMP用数据字典视?
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\catexp7.sql --使v7版本的EXP文g可以导入到v8?
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\catdbsyn.sql --建立DBAU有数据字典视图
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\cataudit.sql --建立审计用数据字典视?
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\catsnap.sql --建立快照数据字典视图Q以SYS、INTERNALq接
C:\oracle\product\10.2.0\db_3\RDBMS\ADMIN\SCOTT.SQL --生成SCOTT用户及其用户数据
C:\oracle\ora92\sqlplus\admin\pupbld.sql --新徏一个数据库之后需要执行的脚本
]]>
6、然后应用、确定?/p>
]]>
错误状况Q?
Windowq_
以前的DBConsole是可以启动的Q但是拔掉网l启动OracleDBConsoleXXX服务Q服务启动不了?
错误排查:
先设|window环境变量 ORACLE_SID=数据库SID
打开cmd
输入 emctl start dbconsole
会有错误信息提C,如果没有讄ORACLE_SID 则提C?
Environment variable ORACLE_SID not defined. Please define it.
如果已经讄了ORACLE_SID 则错误提CZؓ
oc4j configration issue.D:\oracle\product\10.1.0\db_1\oc4j\j2ee\OC4J_DBConsole_localhost_java not found.
其中D:\oracle\product\10.1.0\db_1Z自己机器中ORacle10g的home目录
q个信息非常的重要,也是服务起不来的Ҏ(gu)原因
DBConsole是一个java的web applicationQ在建立dbconsole的时候,我们会根据机器以及Oracle的信息创建reposQ这个repos是存放 DBConsole的配|信息的仓库Q由于机器断|,会把机器的名字映ؓlocalhostQ而徏库的时候是默认用的是机器名Q所以这时候两个目录不匚w了,DBConsole找不到配|仓库的目录也就出错了?
解决Ҏ(gu)Q?
解决Ҏ(gu)有两U,一U是比较正式?
通过emca重新建立repos
命o如下
emca -config dbcontrol db -repos recreate
Ҏ(gu)二是自己实验出来的,q不是一个正式的Ҏ(gu)Q但是比上一U方法简单,易于操作?
信息提示里找不到一个目录D:\oracle\product\10.1.0\db_1\oc4j\j2ee \OC4J_DBConsole_localhost_javaQ?到这个信息提C的上一层目录里一看,可以看到有个cM的目录,形如OC4J_DBConsole_janes_javaQ这里janes是我的机器名Q把q个目录copy到当前目录下Q改成信息提C里没有扑ֈ的目录名Q比如我q里改成D:\oracle\product\10.1.0\db_1\oc4j\j2ee \OC4J_DBConsole_localhost_java
同时来到D:\oracle\product\10.1.0\db_1目录下,可以扑ֈ一个名字Ş如janes_ORCL的目录,
注意janes_ORCL q里的janes是我的机器名QORCL是我q里ORacle的SIDQ你可以Ҏ(gu)你的具体情况Q来扑ֈcM的目? 同样在当前copy到当前目录,q改名ؓlocalhost_ORCL.
q有W三Ҏ(gu)Q不q没有试q?
有出现这样问题的帮着试试 set ORACLE_HOSTNAME=localhost
然后通过emctl start dbconsole或者服务里的ORacleDBConsoleXXXX的服务就可以启动了?
本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/inthirties/archive/2009/08/20/4464583.aspx
执行环境Q可以在SQLPLUS.EXE或者DOSQ命令行Q中执行QDOS中可以执行时׃ 在oracle 8i ?nbsp; 安装目录\ora81\BIN被设|ؓ全局路径Q该目录下有EXP.EXE与IMP.EXE文g被用来执行导入导出。oracle用java~? 写,SQLPLUS.EXE、EXP.EXE、IMP.EXEq两个文件有可能是被包装后的cL件?br /> SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类Q完成导入导出功能。下面介l的是导入导出的实例?/font>
数据导出Q?br />
1 数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp?br />
exp system/manager@TEST file=d:\daochu.dmp full=y
2 数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 数据库中的表table1中的字段filed1?00"打头的数据导?br />
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\"
where filed1 like '00%'\" 上面是常用的导出Q对于压~,既用winzip把dmp文g可以很好的压~?br />
也可以在上面命o后面 加上 compress=y 来实现?/font>
数据的导入:
1 D:\daochu.dmp 中的数据导入 TEST数据库中?br />
imp system/manager@TEST file=d:\daochu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y
上面可能有点问题Q因为有的表已经存在Q然后它?yu)报错,对该表就不进行导入?br />
在后面加?ignore=y 可以了?br />
2 d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不情况要先是表d删除Q然后导入?注意Q?br />
操作者要有够的权限Q权限不够它会提C?br />
数据库时可以q上的。可以用tnsping TEST 来获得数据库TEST能否q上?/font>
附录一Q?br />
l用户增加导入数据权限的操作
W一,启动sql*puls
W二Q以system/manager登陆
W三Qcreate user 用户?IDENTIFIED BY 密码Q如果已l创用户Q这步可以省略)
W四QGRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
W五, q行-cmd-q入dmp文g所在的目录,
imp userid=system/manager full=y file=*.dmp
或?imp userid=system/manager full=y file=filename.dmp
执行CZ:
F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp
屏幕昄
Import: Release 8.1.7.0.0 - Production on 星期?2?16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.
q接? Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
l由常规路径导出由EXPORT:V08.01.07创徏的文?br />
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导?br />
导出服务器用UTF8 NCHAR 字符?(可能的ncharset转换)
. 正在AICHANNEL的对象导入到 AICHANNEL
. . 正在导入?nbsp; "INNER_NOTIFY" 4行被导入
准备启用U束条g...
成功l止导入Q但出现警告?/font>
附录二:
Oracle 不允许直接改变表的拥有? 利用Export/Import可以辑ֈq一目的.
先徏立import9.par,
然后Q用时命o如下Qimp parfile=/filepath/import9.par
?import9.par 内容如下Q?br />
FROMUSER=TGPMS
TOUSER=TGPMS2Q注Q把表的拥有者由FROMUSER改ؓTOUSERQFROMUSER和TOUSER的用户可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log
SQL Select语句完整的执行顺序:
1、from子句l装来自不同数据源的数据Q?br />
2、where子句Z指定的条件对记录行进行筛选;
3、group by子句数据划分ؓ多个分组Q?
4、用聚集函数进行计;
5、用having子句{选分l;
6、计所有的表达式;
7、用order by对结果集q行排序?/p>
----------------------------------------------------------------------------------------------
WHERE子句解析序分析Q?/p>
׃SQL优化h比较复杂,q且q会受环境限?在开发过E中,写SQL必须必须要遵循以下几点的原则Q?
1.ORACLE采用自下而上的顺序解析WHERE子句,Ҏ(gu)q个原理,表之间的q接必须写在其他WHERE条g之前, 那些可以qo掉最大数量记录的条g必须写在WHERE子句的末?
例如:
(低效)
SELECT … FROM EMP E WHERE SAL > 50000 AND JOB = ‘MANAGER’ AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);
(高效)
SELECT … FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO) AND SAL > 50000 AND JOB = ‘MANAGER’;
2.SELECT子句中避免?#8217;*’
当在SELECT子句中列出所有的COLUMN?使用动态SQL列引?‘*’ 是一个方便的Ҏ(gu).可是,q是一个非怽效的Ҏ(gu).
实际?ORACLE在解析的q程? 会将’*’ 依次转换成所有的列名, q个工作是通过查询数据字典完成? q意味着耗费更多的时?
3.使用表的别名(Alias)
当在SQL语句中连接多个表? 请用表的别名ƈ把别名前~于每个Column?q样一?可以减解析的旉q减那些由Column歧义引v的语法错?
注:Column歧义指的是由于SQL中不同的表具有相同的Column?当SQL语句中出现这个Column?SQL解析器无法判断这个Column的归属?/p>
RBO方式Q优化器在分析SQL语句?所遵@的是Oracle内部预定的一些规则。比如我们常见的Q当一个where子句中的一列有索引时去走烦引?/p>
CBO方式Q它是看语句的代?Cost),q里的代价主要指Cpu和内存。优化器在判断是否用q种方式?主要参照的是表及索引的统计信息。统计信息给的大、有行、每行的长度{信息。这些统计信息v初在库内是没有的Q是做analyze后才出现的,很多的时侯过期统计信息会令优化器做出一个错误的执行计划,因些应及时更新这些信息?/p>
注意Q走索引不一定就是优的,比如一个表只有两行数据Q一ơIO可以完成全表的?而此时走索引时则需要两ơIO,q时全表扫描(full table scan)是最?/p>
优化模式包括Rule、Choose、First rows、All rows四种方式Q?/p>
RuleQ基于规则的方式?/p>
ChoolseQ默认的情况下Oracle用的便是q种方式。指的是当一个表或或索引有统计信息,则走CBO的方式,如果表或索引没统计信息,表又不是特别的小Q而且相应的列有烦引时Q那么就走烦引,走RBO的方式?/p>
First RowsQ它与Choose方式是类似的Q所不同的是当一个表有统计信息时Q它?yu)是以最快的方式q回查询的最先的几行Q从M上减了响应旉?/p>
All Rows:也就是我们所说的Cost的方式,当一个表有统计信息时Q它?yu)以最快的方式q回表的所有的行,从M上提高查询的吞吐量。没有统计信息则走RBO的方式?/p>
讑֮选用哪种优化模式Q?/p>
A、InstanceU别我们可以通过在initSID.ora文g中设定OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS如果没设定OPTIMIZER_MODE参数则默认用的是Choose方式?br /> B、SessionsU别通过ALTER SESSION SET OPTIMIZER_MODE=RULE/CHOOSE/FIRST_ROWS/ALL_ROWS来设定?br /> C、语句别用HintQ?*+ ... */Q来讑֮
Z么表的某个字D|明有索引Q但执行计划却不走烦引?
1、优化模式是all_rows的方式?br /> 2、表作过analyzeQ有l计信息
3、表很小Q上文提到过的,Oracle的优化器认ؓ不值得走烦引?br />
1. Oracle安装完成后的初始口o?
internal/oracle
sys/change_on_install
system/manager
scott/tiger
sysman/oem_temp
2. ORACLE9IAS WEB CACHE的初始默认用户和密码Q?
administrator/administrator
3. oracle 8.0.5怎么创徏数据?
用orainst。如果有motif界面Q可以用orainst /m
4. oracle 8.1.7怎么创徏数据?
dbassist
5. oracle 9i 怎么创徏数据?
dbca
6. oracle中的裸设备指的是什?
裸设备就是绕q文件系l直接访问的储存I间
7. oracle如何区分 64-bit/32bit 版本Q?
$ sqlplus '/ AS SYSDBA'
SQL*PlusQ?Release 9.0.1.0.0 - Production on Mon Jul 14 17Q?1Q?9 2003
(c) Copyright 2001 Oracle Corporation. All rights reserved?
Connected toQ?
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production
With the Partitioning option
JServer Release 9.0.1.0.0 - Production
SQL> select * from v$versionQ?
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.0.1.0.0 - Production
PL/SQL Release 9.0.1.0.0 - Production
CORE 9.0.1.0.0 Production
TNS for SolarisQ?Version 9.0.1.0.0 - Production
NLSRTL Version 9.0.1.0.0 - Production
SQL>
8. SVRMGR什么意思?
svrmgrlQServer Manager 9i下没有,已经改ؓ用SQLPLUS?
sqlplus /nolog 变ؓ归档日志型的
9. 请问如何分L某个用户是从哪台机器登陆ORACLE?
SELECT machine Qterminal FROM V$SESSIONQ?
10. 用什么语句查询字D呢Q?
desc table_name 可以查询表的l构
select field_nameQ?.. from ... 可以查询字段的?
select * from all_tables where table_name like '%'
select * from all_tab_columns where table_name='??'
11. 怎样得到触发器、过E、函数的创徏脚本Q?
desc user_source
user_triggers
12. 怎样计算一个表占用的空间的大小Q?
select ownerQtable_nameQNUM_ROWSQBLOCKS*AAA/1024/1024 "Size M"QEMPTY_BLOCKSQLAST_ANALYZED
from dba_tables
where table_name='XXX'Q?
HereQ?AAA is the value of db_block_sizeQ?
XXX is the table name you want to check
13. 如何查看最大会话数Q?
SELECT * FROM V$PARAMETER WHERE NAME LIKE 'proc%'Q?
SQL>
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 4
log_archive_max_processes integer 1
processes integer 200
q里?00个用戗?
Select * from v$licenseQ?
其中sessions_highwaterU录曄到达的最大会话数
14. 如何查看pȝ被锁的事务时_
select * from v$locked_object Q?
15. 如何以archivelog的方式运行oracleQ?
init.ora
log_archive_start = true
RESTART DATABASE
16. 怎么获取有哪些用户在使用数据库?
select username from v$sessionQ?
17. 数据表中的字D|大数是多?
表或视图中的最大列Cؓ 1000
18. 怎样查得数据库的SID ?
select name from v$databaseQ也可以直接查看 init.ora文g
19. 如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ?
select sys_context('userenv'Q?ip_address') from dualQ?
如果是登陆本机数据库Q只能返?27.0.0.1
20. UNIX 下怎么调整数据库的旉Q?
su -root
date -u 08010000
21. 在ORACLE TABLE中如何抓取MEMOcd栏ؓI的资料记录?
select remark from oms_flowrec where trim(' ' from remark) is not null Q?
22. 如何用BBB表的资料L新AAA表的数据(有关联的字段)
UPDATE AAA SET BNS_SNM=(SELECT BNS_SNM FROM BBB WHERE AAA.DPT_NO=BBB.DPT_NO) WHERE BBB.DPT_NO IS
NOT NULLQ?
23. P4计算机安装方?
SYMCJIT.DLL改ؓSYSMCJIT.OLD
24. 如何查询SERVER是不是OPS?
SELECT * FROM V$OPTIONQ?
如果PARALLEL SERVER=TRUE则有OPS?
25. 如何查询每个用户的权?
SELECT * FROM DBA_SYS_PRIVSQ?
26. 如何表Ud表空?
ALTER TABLE TABLE_NAME MOVE TABLESPACE_NAMEQ?
27. 如何烦引移动表I间?
ALTER INDEX INDEX_NAME REBUILD TABLESPACE TABLESPACE_NAMEQ?
28. 在LINUXQUNIX下如何启动DBA STUDIO?
OEMAPP DBASTUDIO
29. 查询锁的状况的对象有?
V$LOCKQ?V$LOCKED_OBJECTQ?V$SESSIONQ?V$SQLAREAQ?V$PROCESS Q?
查询锁的表的Ҏ(gu)Q?
SELECT S.SID SESSION_IDQS.USERNAMEQDECODE(LMODEQ?Q?None'Q?Q?Null'Q?Q?Row-S (SS)'Q?Q?/p>
'Row-X (SX)'Q?Q?Share'Q?Q?S/Row-X (SSX)'Q?Q?Exclusive'QTO_CHAR(LMODE)) MODE_HELDQ?/p>
DECODE(REQUESTQ?Q?None'Q?Q?Null'Q?Q?Row-S (SS)'Q?Q?Row-X (SX)'Q?Q?Share'Q?Q?S/Row-X
(SSX)'Q?Q?Exclusive'QTO_CHAR(REQUEST)) MODE_REQUESTEDQO.OWNER||'.'||O.OBJECT_NAME||'
('||O.OBJECT_TYPE||')'QS.TYPE LOCK_TYPEQL.ID1 LOCK_ID1QL.ID2 LOCK_ID2 FROM V$LOCK LQ?/p>
SYS.DBA_OBJECTS OQV$SESSION S WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID Q?
30. 如何解锁?
ALTER SYSTEM KILL SESSION ‘SIDQSERIR#’;
31. SQLPLUS下如何修改编辑器?
DEFINE _EDITOR="<~辑器的完整路经>" -- 必须加上双引h定义新的~辑器,也可以把q个写在
$ORACLE_HOME/sqlplus/admin/glogin.sql里面使它怹有效?
32. ORACLE产生随机数的函数?
DBMS_RANDOM.RANDOM
33. LINUX下查询磁盘竞争状况命?
sar -d
33. LINUX下查询CPU竞争状况命o?
sar -r
34. 查询当前用户对象?
SELECT * FROM USER_OBJECTSQ?
SELECT * FROM DBA_SEGMENTSQ?
35. 如何获取错误信息?
SELECT * FROM USER_ERRORSQ?
36. 如何获取链接状况?
SELECT * FROM DBA_DB_LINKSQ?
37. 查看数据库字W状?
SELECT * FROM NLS_DATABASE_PARAMETERSQ?
SELECT * FROM V$NLS_PARAMETERSQ?
38. 查询表空间信?
SELECT * FROM DBA_DATA_FILESQ?
39. ORACLE的INTERAL用户要口?
修改 SQLNET.ORA
SQLNET.AUTHENTICATION_SERVICES=(NTS)
40. 出现JAVA.EXE的解军_?
一般是ORACLEORAHOMEXIHTTPSERVERҎ(gu)手工启动可以的,X??
41. 如何l表、列加注释?
SQL>comment on table ?is '表注?Q?
注释已创建?
SQL>comment on column ??is '列注?Q?
注释已创建?
SQL> select * from user_tab_comments where comments is not nullQ?
42. 如何查看各个表空间占用磁盘情况?
SQL> col tablespace format a20
SQL> select
b.file_id 文gIDP
b.tablespace_name 表空间名Q?
b.bytes 字节敎ͼ
(b.bytes-sum(nvl(a.bytesQ?))) 已用,
sum(nvl(a.bytesQ?)) 剩余I间Q?
sum(nvl(a.bytesQ?))/(b.bytes)*100 剩余癑ֈ?
from dba_free_space aQdba_data_files b
where a.file_id=b.file_id
group by b.tablespace_nameQb.file_idQb.bytes
order by b.file_id
43. 如把ORACLE讄为MTS或专用模式?
#dispatchers="(PROTOCOL=TCP) (SERVICE=SIDXD"
加上是MTSQ注释就是专用模式,SID是指你的实例名?
44. 如何才能得知pȝ当前的SCN??
select max(ktuxescnw * power(2Q?2) + ktuxescnb) from x$ktuxeQ?
45. 请问如何在ORACLE中取毫秒?
9i之前不支持,9i开始有timestamp?
9i可以用select systimestamp from dualQ?
46. 如何在字W串里加回RQ?
select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual Q?
47. 中文是如何排序的Q?
Oracle9i之前Q中文是按照二进制编码进行排序的?
在oracle9i中新增了按照拼音、部首、笔L序功能。设|NLS_SORT|
SCHINESE_RADICAL_M 按照部首Q第一序Q、笔划(W二序Q排?
SCHINESE_STROKE_M 按照W划Q第一序Q、部首(W二序Q排?
SCHINESE_PINYIN_M 按照拼音排序
48. Oracle8i中对象名可以用中文吗Q?
可以
49. 如何改变WIN中SQL*Plus启动选项Q?
SQL*PLUS自n的选项讄我们可以?ORACLE_HOME/sqlplus/admin/glogin.sql中设|?
50. 怎样修改oracel数据库的默认日期?
alter session set nls_date_format='yyyymmddhh24miss'Q?
或可以在init.ora中加上一?nls_date_format='yyyymmddhh24miss'
51. 如何小表放入keep池中?
alter table xxx storage(buffer_pool keep)Q?
52. 如何查是否安装了某个patch?
check that oraInventory
53. 如何使select语句使查询结果自动生成序?
select rownumQCOL from tableQ?
54. 如何知道数据裤中某个表所在的tablespace?
select tablespace_name from user_tables where table_name='TEST'Q?
select * from user_tables中有个字DTABLESPACE_NAMEQ(oracleQ;
select * from dba_segments where …;
55. 怎么可以快速做一个和原表一L备䆾?
create table new_table as (select * from old_table)Q?
55. 怎么在sqlplus下修改procedure?
select lineQtrim(text) t from user_source where name =’A?order by lineQ?
56. 怎样解除PROCEDURE被意外锁?
alter system kill session Q把那个sessionl杀掉,不过你要先查出她的session id
或把该过E重新改个名字就可以了?
57. SQL Reference是个什么东西?
是一本sql的用手册,包括语法、函数等{,Oracle官方|站的文档中心提供下载?
58. 如何查看数据库的状?
UNIX?
ps -ef | grep ora
Windows?
看服务是否v来;是否可以q上数据?
59. 请问如何修改一张表的主?
alter table aaa
drop constraint aaa_key Q?
alter table aaa
add constraint aaa_key primary key(a1Qb1) Q?
60. 改变数据文g的大?
?ALTER DATABASE .... DATAFILE .... Q?
手工改变数据文g的大,对于原来?数据文g有没有损実?
61. 怎样查看ORACLE中有哪些E序在运行之中?
查看v$sessions?
62. 怎么可以看到数据库有多少个tablespace?
select * from dba_tablespacesQ?
63. 如何修改oracle数据库的用户q接敎ͼ
修改initSID.oraQ将process加大Q重启数据库?
64. 如何查出一条记录的最后更新时?
可以用logminer 察看
65. 如何在PL/SQL中读写文Ӟ
UTL_FILE包允许用户通过PL/SQLd操作pȝ文g?
66. 怎样把?amp;”放入一条记录中Q?
insert into a values (translate ('at{&}t'Q?at{}'Q?at'))Q?
67. EXP 如何加QUERY参数Q?
EXP USER/PASS FILE=A.DMP TABLES(BSEMPMS)
QUERY='"WHERE EMP_NO=\'S09394\'\"H?
68. 关于oracle8i支持体和J体的字W集问题Q?
ZHS16GBK可以支持
69. Data Guard是什么YӞ
是Standby的换代?
70. 如何创徏SPFILE?
SQL> connect / as sysdba
SQL> select * from v$versionQ?
SQL> create pfile from spfileQ?
SQL> CREATE SPFILE FROM PFILE='EQ\ora9i\admin\eygle\pfile\init.ora'Q?
文g已创建?
SQL> CREATE SPFILE='EQ\ora9i\database\SPFILEEYGLE.ORA' FROM PFILE='EQ?/p>
\ora9i\admin\eygle\pfile\init.ora'Q?
文g已创建?
71. 内核参数的应?
shmmax
含义Q这个设|ƈ不决定究竟Oracle数据库或者操作系l用多物理内存,只决定了最多可以用的?/p>
存数目。这个设|也不媄响操作系l的内核资源?
讄Ҏ(gu)Q?.5*物理内存
例子QSet shmsysQshminfo_shmmax=10485760
shmmin
含义Q共享内存的最大?
讄Ҏ(gu)Q一般都讄成ؓ1?
例子QSet shmsysQshminfo_shmmin=1Q?
shmmni
含义Q系l中׃n内存D늚最大个数?
例子QSet shmsysQshminfo_shmmni=100
shmseg
含义Q每个用戯E可以用的最多的׃n内存D늚数目?
例子QSet shmsysQshminfo_shmseg=20Q?
semmni
含义Q系l中semaphore identifierer的最大个数?
讄Ҏ(gu)Q把q个变量的D|ؓq个pȝ上的所有Oracle的实例的init.ora中的最大的那个processes?/p>
那个值加10?
例子QSet semsysQseminfo_semmni=100
semmns
含义Q系l中emaphores的最大个数?
讄Ҏ(gu)Q这个值可以通过以下方式计算得到Q各个Oracle实例的initSID.ora里边的processes的值的?/p>
和(除去最大的Processes参数Q+最大的那个Processes×2Q?0×Oracle实例的个数?
例子QSet semsysQseminfo_semmns=200
semmsl
含义Q一个set中semaphore的最大个数?
讄Ҏ(gu)Q设|成?0Q所有Oracle实例的InitSID.ora中最大的Processes的倹{?
例子QSet semsysQseminfo_semmsl=-200
72. 怎样查看哪些用户拥有SYSDBA、SYSOPER权限Q?
SQL>conn sys/change_on_install
SQL>select * from V_$PWFILE_USERSQ?
73. 如何单独备䆾一个或多个表?
exp 用户/密码 tables=(?Q…,?)
74. 如何单独备䆾一个或多个用户Q?
exp system/manager owner=(用户1Q用?Q…,用户n) file=导出文g
75. 如何对CLOB字段q行全文索?
SELECT * FROM A WHERE dbms_lob.instr(a.aQ?K'Q?Q?)>0Q?
76. 如何昄当前q接用户?
SHOW USER
77. 如何查看数据文g攄的\?
col file_name format a50
SQL> select tablespace_nameQfile_idQbytes/1024/1024Qfile_name from dba_data_files order by
file_idQ?
78. 如何查看现有回滚D及其状?
SQL> col segment format a30
SQL> SELECT SEGMENT_NAMEQOWNERQTABLESPACE_NAMEQSEGMENT_IDQFILE_IDQSTATUS FROM
DBA_ROLLBACK_SEGS
79. 如何改变一个字D初始定义的Check范围Q?
SQL> alter table xxx drop constraint constraint_nameQ?
之后再创建新U束Q?
SQL> alter table xxx add constraint constraint_name check()Q?
80. Oracle常用pȝ文g有哪些?
通过以下视图昄q些文g信息Qv$databaseQv$datafileQv$logfile v$controlfile v$parameterQ?
81. 内连接INNER JOIN?
select a.* from bsempms aQbsdptms b where a.dpt_no=b.dpt_noQ?
82. 如何外连?
select a.* from bsempms aQbsdptms b where a.dpt_no=b.dpt_no(+)Q?
select a.* from bsempms aQbsdptms b wherea.dpt_no(+)=b.dpt_noQ?
83. 如何执行脚本SQL文g?
SQL>@$PATH/filename.sqlQ?
84. 如何快速清IZ个大?
SQL>truncate table table_nameQ?
85. 如何查有多少个数据库实例?
SQL>SELECT * FROM V$INSTANCEQ?
86. 如何查询数据库有多少?
SQL>select * from all_tablesQ?
87. 如何试SQL语句执行所用的旉?
SQL>set timing onQ?
SQL>select * from tablenameQ?
88. CHR()的反函数?
ASCII()
SELECT CHAR(65) FROM DUALQ?
SELECT ASCII('A') FROM DUALQ?
89. 字符串的q接
SELECT CONCAT(COL1QCOL2) FROM TABLEQ?
SELECT COL1||COL2 FROM TABLEQ?
90. 怎么把select出来的结果导C个文本文件中Q?
SQL>SPOOL CQ\ABCD.TXTQ?
SQL>select * from tableQ?
SQL >spool offQ?
91. 怎样估算SQL执行的I/O??
SQL>SET AUTOTRACE ON Q?
SQL>SELECT * FROM TABLEQ?
?
SQL>SELECT * FROM v$filestatQ可以查看IO?
92. 如何在sqlplus下改变字D大?
alter table table_name modify (field_name varchar2(100))Q?
改大行,改小不行Q除非都是空的)
93. 如何查询某天的数?
select * from table_name where trunc(日期字段)Qto_date('2003-05-02'Q?yyyy-mm-dd')Q?
94. sql 语句如何插入全年日期Q?
create table BSYEAR (d date)Q?
insert into BSYEAR
select to_date('20030101'Q?yyyymmdd')+rownum-1
from all_objects
where rownum <= to_char(to_date('20031231'Q?yyyymmdd')Q?ddd')Q?
95. 如果修改表名?
alter table old_table_name rename to new_table_nameQ?
96. 如何取得命o的返回状态|
sqlcode=0
97. 如何知道用户拥有的权?
SELECT * FROM dba_sys_privs Q?
98. 从网上下载的ORACLE9I与市Z卖的标准版有什么区别?
一、ORACLE中创增的ID字段
1、创建序?br /> create *sequence_name* increment by 1 start with 1 maxvalue 999999999;
2、创发器---(创徏一个基于该表的before insert 触发器,在触发器中用该SEQUENCE)
create or replace trigger *triger_name*
before insert on *table_name*
referencing old as old new as new for each row
begin
select *sequence_name.nextval into :new.id from dual;
end;
?
create sequence FP_FP_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 49231
increment by 1
cache 10;
create or replace trigger FP_FP_tig before insert on FP_FP for each row
begin
select FP_FP_seq.nextval into :new.id from dual;
end;
/
二、ORACLE中JOB的应?br />1、创建存储过E?br />create or replace procedure *pro_name
as
begin
insert into agri_exhibition_basecur (messid,title,type,pub_date) select id,title,sort,pub_date from agri_message where (trunc(sysdate-pub_date)=0 and rownum<6) and sort='? ;
insert into agri_exhibition_basecur (messid,title,type,pub_date) select id,title,sort,pub_date from agri_message where (trunc(sysdate-pub_date)=0 and rownum<6) and sort='? ;
end;
/
2、创建JOB
variable jobdxm number;
begin
dbms_job.submit(:jobdxm,'exhi_pro_dxm;',sysdate,'trunc(sysdate,''dd'')+32.5/24');
end;
三、收集的一个简单的JOB实列
1、创建测试表
SQL> create table a(a date);
表已创徏?/p>
2、创Z个自定义q程
SQL> create or replace procedure test as
2 begin
3 insert into a values(sysdate);
4 end;
5 /
q程已创建?/p>
3、创建JOB
SQL> variable job1 number;
SQL>
SQL> begin
2 dbms_job.submit(:job1,'test;',sysdate,'sysdate+1/1440'); --每天1440分钟Q即一分钟q行testq程一?br /> 3 end;
4 /
PL/SQL q程已成功完成?/p>
4、运行JOB
SQL> begin
2 dbms_job.run(:job1);
3 end;
4 /
PL/SQL q程已成功完成?/p>
SQL> select to_char(a,'yyyy/mm/dd hh24:mi:ss') 旉 from a;
旉
-------------------
2001/01/07 23:51:21
2001/01/07 23:52:22
2001/01/07 23:53:24
5、删除JOB
SQL> begin
2 dbms_job.remove(:job1);
3 end;
4 /
PL/SQL q程已成功完成?br />6、一些必要的参数
修改initsid.ora参数
job_queue_processes = 4
job_queue_interval = 10
job_queue_keep_connections=true
修改可执行作业个Cؓ20?br />ALTER SYSTEM SET JOB_QUEUE_PROCESSES = 20
修改取消限制模式
ALTER SYSTEM DISABLE RESTRICTED SESSION;
7、两个必要的?br /> user_jobs及dba_jobs_running
8、相关的几个JOB操作
删除job:dbms_job.remove(jobno);
修改要执行的操作:job:dbms_job.what(jobno,what);
修改下次执行旉Qdbms_job.next_date(job,next_date);
修改间隔旉Qdbms_job.interval(job,interval);
停止job:dbms.broken(job,broken,nextdate);
启动job:dbms_job.run(jobno);
1.l对?
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(?
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整Q小Q?
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整Q截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂
S:select Exp(1) value 2.7182818284590451
O:select Exp(1) value from dual 2.71828182
7.取e为底的对?br /> S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
8.?0为底Ҏ(gu)
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取^?br /> S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
10.取^Ҏ(gu)
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2
11.求Q意数为底的幂
S:select power(3,4) value 81
O:select power(3,4) value from dual 81
12.取随机数
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual;
13.取符?br /> S:select sign(-8) value -1
O:select sign(-8) value from dual -1
----------数学函数
14.圆周?br /> S:SELECT PI() value 3.1415926535897931
O:不知?/p>
15.sin,cos,tan 参数都以弧度为单?br /> 例如Qselect sin(PI()/2) value 得到1QSQLServerQ?/p>
16.Asin,Acos,Atan,Atan2 q回弧度
17.弧度角度互换(SQLServerQOracle不知?
DEGREESQ弧?〉角?br /> RADIANSQ角?〉弧?/p>
---------数值间比较
18. 求集合最大?br /> S:select max(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select greatest(1,-2,4,3) value from dual
19. 求集合最?br /> S:select min(value) value from
(select 1 value
union
select -2 value
union
select 4 value
union
select 3 value)a
O:select least(1,-2,4,3) value from dual
20.如何处理null?F2中的null?0代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
--------数值间比较
21.求字W序?br /> S:select ascii('a') value
O:select ascii('a') value from dual
22.从序h字符
S:select char(97) value
O:select chr(97) value from dual
23.q接
S:select '11'+'22'+'33' value
O:select CONCAT('11','22')||33 value from dual
23.子串位置 --q回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from dual
23.模糊子串的位|?--q回2,参数L中间%则返?
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle没发玎ͼ但是instr可以通过W四N刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual q回6
24.求子?br /> S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from dual
25.子串代替 q回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
26.子串全部替换
S:没发?br /> O:select Translate('fasdbfasegas','fa','? ) value from dual
27.长度
S:len,datalength
O:length
28.大小写{?lower,upper
29.单词首字母大?br /> S:没发?br /> O:select INITCAP('abcd dsaf df') value from dual
30.左补I格QLPAD的第一个参CؓI格则同space函数Q?br /> S:select space(10)+'abcd' value
O:select LPAD('abcd',14) value from dual
31.双I格QRPAD的第一个参CؓI格则同space函数Q?br /> S:select 'abcd'+space(10) value
O:select RPAD('abcd',14) value from dual
32.删除I格
S:ltrim,rtrim
O:ltrim,rtrim,trim
33. 重复字符?br /> S:select REPLICATE('abcd',2) value
O:没发?/p>
34.发音怼性比?q两个单词返回gP发音相同)
S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual
SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差
q回0-4Q?为同韻I1最?/p>
--------------日期函数
35.pȝ旉
S:select getdate() value
O:select sysdate value from dual
36.前后几日
直接与整数相加减
37.求日?br /> S:select convert(char(10),getdate(),20) value
O:select trunc(sysdate) value from dual
select to_char(sysdate,'yyyy-mm-dd') value from dual
38.求时?br /> S:select convert(char(8),getdate(),108) value
O:select to_char(sysdate,'hh24:mm:ss') value from dual
39.取日期时间的其他部分
S:DATEPART ?DATENAME 函数 Q第一个参数决定)
O:to_char函数 W二个参数决?/p>
参数---------------------------------下表需要补?br /> year yy, yyyy
quarter qq, q (季度)
month mm, m (m O无效)
dayofyear dy, y (O表星?
day dd, d (d O无效)
week wk, ww (wk O无效)
weekday dw (O不清?
Hour hh,hh12,hh24 (hh12,hh24 S无效)
minute mi, n (n O无效)
second ss, s (s O无效)
millisecond ms (O无效)
----------------------------------------------
40.当月最后一?br /> S:不知?br /> O:select LAST_DAY(sysdate) value from dual
41.本星期的某一天(比如星期日)
S:不知?br /> O:SELECT Next_day(sysdate,7) vaule FROM DUAL;
42.字符串{旉
S:可以直接转或者select cast('2004-09-08'as datetime) value
O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;
43.求两日期某一部分的差Q比如秒Q?br /> S:select datediff(ss,getdate(),getdate()+12.3) value
O:直接用两个日期相减(比如d1-d2=12.3Q?br /> SELECT (d1-d2)*24*60*60 vaule FROM DUAL;
44.Ҏ(gu)差值求新的日期Q比如分钟)
S:select dateadd(mi,8,getdate()) value
O:SELECT sysdate+8/60/24 vaule FROM DUAL;
45.求不同时区时?br /> S:不知?br /> O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;
-----时区参数,北京在东8区应该是Ydt-------
AST ADT 大西z标准时?br /> BST BDT 白oh准时?br /> CST CDT 中部标准旉
EST EDT 东部标准旉
GMT 格林治标准旉
HST HDT 阿拉斯加—夏威夷标准旉
MST MDT 山区标准旉
NST U芬兰标准时?br /> PST PDT 太^z标准时?br /> YST YDT YUKON标准旉