建立dblink(10g与11g之间)

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:建立dblink(10g与11g之间)

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、在10g上建立dblink时,自动加上后缀域名
原因:默认添加global_name后面域名
解决方法:修改global_name 值
UPDATE GLOBAL_NAME SET GLOBAL_NAME = ‘[.db_domain]’;
commit;
重新连接oracle
2、使用pl/sql dev建立dblink(10g连接到11g)时,创建过程中,会自动的把用户名/密码变成大写,使得dblink连接失败
原因:11g用户名/密码区分大小写
解决方法:使用pl/sql图形化界面填写好参数,然后点击view sql,拷贝sql语句,然后把其中的用户名/密码加上双引号,再执行sql语句

Redhat 中裸设备(raw) 的配置和oracle中使用

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:Redhat 中裸设备(raw) 的配置和oracle中使用

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、对磁盘进行分区
fdisk -l 查看磁盘情况
fdisk /dev/sdb 进行分区操作
2、配置裸设备(修改/etc/udev/rules.d/60-raw.rules文件)
在redhat5中
1)加载裸设备
ACTION==”add”, KERNEL==”/dev/sdb1″,RUN+=”/bin/raw /dev/raw/raw1 %N”–多个一次累加
2)设置raw设备的用户和权限信息
ACTION==”add”, KERNEL==”raw[1-4]”, OWNER=”oracle”, GROUP=”dba”, MODE=”660″
3)重启服务
start_udev
4)查看raw设备
ls -lrt /dev/raw或者 raw -aq
在redhat4中
1)编辑/etc/sysconfig/rawdevices
vi /etc/sysconfig/rawdevices
/dev/raw/raw31 /dev/sdc5
/dev/raw/raw32 /dev/sdc6
/dev/raw/raw33 /dev/sdc7
/dev/raw/raw34 /dev/sdc8
2)执行绑定操作
/sbin/service rawdevices restart
3)设置权限
vi /etc/rc.local中添加
chown oracle:dba /dev/raw/raw31
chown oracle:dba /dev/raw/raw32
chown oracle:dba /dev/raw/raw33
chown oracle:dba /dev/raw/raw34
chmod 775 /dev/raw/raw31
chmod 775 /dev/raw/raw32
chmod 775 /dev/raw/raw33
chmod 775 /dev/raw/raw34
3、在oracle中使用
1)表空间
create tablespace raw1 datafile ‘/dev/raw/raw31’ size 450m;
2)联机日志
alter database add logfile group 4 (‘/dev/raw/raw32’) size 100m;
3)undo空间
create undo tablespace undo2 datafile ‘/dev/raw/raw33’ size 100m reuse;
4、注意事宜
1)一个裸设备只能放一个oracle文件
2)oracle文件大小要稍微小于裸设备大小

查询oracle被锁对象并解锁

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:查询oracle被锁对象并解锁

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、查询oracle被锁对象及其语句

SELECT a_s.owner,
  a_s.object_name,
  a_s.object_type,
  VN.SID,
  VN.SERIAL#,
  VS.SPID "OS_PID",
  VN.PROCESS "CLIENT_PID",
  VN.USERNAME,
  VN.OSUSER,
  VN.MACHINE "HOSTNAME" ,
  VN.TERMINAL,
  VN.PROGRAM,
  TO_CHAR(VN.LOGON_TIME,'YYYY-MM-DD HH24:MI:SS')"LOGIN_TIME",
  'alter system kill session '''||vn.sid||','||vn.serial#||''';' "ORACKE_KILL",
  'kill -9 '|| VS.SPID "OS_KILL"
FROM ALL_OBJECTS A_S,
  V$LOCKED_OBJECT V_T,
  V$SESSION VN,
  V$PROCESS VS
WHERE A_S.OBJECT_ID=V_T.OBJECT_ID
AND V_T.SESSION_ID =VN.SID
AND VS.ADDR=VN.PADDR
AND VN.USERNAME NOT IN('SYSMAN','SYS');

2、查询该sid的sql语句

select * from v$sql vl,v$session vn
where vl.ADDRESS= decode(vn.SQL_ADDRESS,null,vn.PREV_SQL_ADDR,VN.SQL_ADDRESS)
and vn.sid=&sid;

3、解锁

alter system kill session 'sid,serial#';
--note:不能kill自身

4、查询被锁对象增强版

SELECT DDL.OWNER AS 用户,
       DDL.NAME  AS 对象,
       DDL.type  AS 类型,
       VS.OSUSER AS OS_USER,
       VS.MACHINE,
       VS.STATUS,
       VS.PROGRAM,
       VS.LOGON_TIME AS "LOGIN_TIME",
       VP.SPID,
       'kill -9 ' || VP.SPID AS OS_KILL,
       vs.sid,
       vs.SERIAL#,
       'alter system kill session ''' || vs.sid || ',' || vs.serial# ||
       ''';' "ORACKE_KILL"
  FROM DBA_DDL_LOCKS DDL, V$SESSION VS, V$PROCESS VP
 WHERE DDL.SESSION_ID = VS.SID
   AND VS.PADDR = VP.ADDR;

oracle常用hint的用法

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle常用hint的用法

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
3. /*+CHOOSE*/
表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;
4. /*+RULE*/
表明对语句块选择基于规则的优化方法.
5. /*+FULL(TABLE)*/
表明对表选择全局扫描的方法.
6. /*+ROWID(TABLE)*/
提示明确表明对指定表根据ROWID进行访问.
7. /*+CLUSTER(TABLE)*/
提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.
8. /*+INDEX(TABLE INDEX_NAME)*/
表明对表选择索引的扫描方法.
9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
表明对表选择索引升序的扫描方法.
10. /*+INDEX_COMBINE*/
为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.
11. /*+INDEX_JOIN(TABLE INDEX_NAME)*/
提示明确命令优化器使用索引作为访问路径.
12. /*+INDEX_DESC(TABLE INDEX_NAME)*/
表明对表选择索引降序的扫描方法.
13. /*+INDEX_FFS(TABLE INDEX_NAME)*/
对指定的表执行快速全索引扫描,而不是全表扫描的办法.
14. /*+ADD_EQUAL TABLE INDEX_NAM1,INDEX_NAM2,…*/
提示明确进行执行规划的选择,将几个单列索引的扫描合起来.
15. /*+USE_CONCAT*/
对查询中的WHERE后面的OR条件进行转换为UNION ALL的组合查询.
16. /*+NO_EXPAND*/
对于WHERE后面的OR 或者IN-LIST的查询语句,NO_EXPAND将阻止其基于优化器对其进行扩展.
17. /*+NOWRITE*/
禁止对查询块的查询重写操作.
18. /*+REWRITE*/
可以将视图作为参数.
19. /*+MERGE(TABLE)*/
能够对视图的各个查询进行相应的合并.
20. /*+NO_MERGE(TABLE)*/
对于有可合并的视图不再合并.
21. /*+ORDERED*/
根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接.
22. /*+USE_NL(TABLE)*/
将指定表与嵌套的连接的行源进行连接,并把指定表作为内部表.
23. /*+USE_MERGE(TABLE)*/
将指定的表与其他行源通过合并排序连接方式连接起来.
24. /*+USE_HASH(TABLE)*/
将指定的表与其他行源通过哈希连接方式连接起来.
25. /*+DRIVING_SITE(TABLE)*/
强制与ORACLE所选择的位置不同的表进行查询执行.
26. /*+LEADING(TABLE)*/
将指定的表作为连接次序中的首表.
27. /*+CACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
28. /*+NOCACHE(TABLE)*/
当进行全表扫描时,CACHE提示能够将表的检索块放置在缓冲区缓存中最近最少列表LRU的最近使用端
29. /*+APPEND*/
直接插入到表的最后,可以提高速度.
30. /*+NOAPPEND*/
通过在插入语句生存期内停止并行模式来启动常规插入.
31. /*+ NO_INDEX ( table [index [index]…] ) */
指定不使用哪些索引
32. /*+ parallel(table,num)*/
指定表访问并发度

查找oracle所有表中的特定列中的数据

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:查找oracle所有表中的特定列中的数据

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

找出数据库中所有表表中REMARK列中含有WN、wind、wlr中表名和数量

declare
i number:=0;
begin
 for c1 in
(select table_name from user_tab_columns where column_name='REMARK')
loop
 EXECUTE IMMEDIATE 'select count(*)  from  '|| c1.table_name
  ||' where UPPER(REMARK) LIKE ''%WN%'' or UPPER(remark) like ''%WIND%'' or UPPER(remark) like ''%WLR%'''
  into  i;
    if i>0 then
      dbms_output.put_line(c1.table_name||'------'||i);
      end if;
    end loop;
end;

触发器实现指定用户登录oracle

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:触发器实现指定用户登录oracle

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、创建允许登录用户表

CREATE TABLE "CHF"."LOG$LOGIN_OS"
  (
    "OS_USER" VARCHAR2(60 BYTE)
  )

2、创建触发器实现限制用户登录

create or replace
TRIGGER TR_LOGIN_RECORD_TEST
AFTER logon ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(iiQuerySid IN NUMBER) IS
   SELECT * FROM v$session where USERNAME is not null
    and nvl(osuser,'x') <> 'SYSTEM'   and type <> 'BACKGROUND' and audsid = iiQuerySid;
  USER_NUM NUMBER(5);
  V_SQL VARCHAR2(100);
BEGIN
OPEN cSession(userenv('SESSIONID'));
  FETCH cSession INTO mtSession;
  IF cSession%FOUND THEN
  select count(*) into USER_NUM FROM CHF.LOG$LOGIN_OS WHERE OS_USER=mtSession.Osuser;
  IF USER_NUM!=0 THEN
  V_SQL:=' alter system kill session '||''''||mtSession.Sid||','||mtSession.Serial#||'''';
  EXECUTE IMMEDIATE V_SQL;
  END IF;
  END IF;
  CLOSE cSession;
EXCEPTION
  WHEN OTHERS THEN
   -- dbms_output.put_line('登记登录信息错误:'||SQLERRM);
    RAISE;
END;

注:使用sysdba帐号创建触发器,因为在oracle中user不能kill掉自己的session,如果是用sysdba那么就可以kill掉其他的任何非自身的session

触发器记录用户登录信息

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:触发器记录用户登录信息

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

1、先需要建立一张表,用于存放登陆信息

create table LOG$INFORMATION
(
  USERNAME VARCHAR2(30),
  TERMINAL VARCHAR2(50),
  IPADRESS VARCHAR2(20),
  OSUSER VARCHAR2(30),
  MACHINE VARCHAR2(64),
  PROGRAM VARCHAR2(64),
  SID NUMBER,
  SERIAL# NUMBER,
  AUSID NUMBER,
  LOGINTIME DATE default sysdate,
  LOGout_TIME date
)

2、创建触发器,记载登录信息

CREATE OR REPLACE TRIGGER TR_LOGIN_RECORD
AFTER logon ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(iiQuerySid IN NUMBER) IS
   SELECT * FROM v$session
      WHERE nvl(osuser,'x') <> 'SYSTEM'   and type <> 'BACKGROUND' and audsid = iiQuerySid;
BEGIN
OPEN cSession(userenv('SESSIONID'));
  FETCH cSession INTO mtSession;
  IF cSession%FOUND THEN
INSERT INTO log$information(username,logintime,terminal,ipadress,osuser,machine,
program,sid,serial#,ausid)
       VALUES(USER,SYSDATE,mtSession.Terminal,
              SYS_CONTEXT ('USERENV','IP_ADDRESS'),mtSession.Osuser,
          mtSession.Machine,mtSession.Program,mtSession.Sid,mtSession.Serial#,userenv('SESSIONID'));
  END IF;
  CLOSE cSession;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
END;

3、用户登出触发器,记录登出时间

create or replace trigger TR_LOGOFF_RECORD
before LOGOFF ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(iiQuerySid IN NUMBER) IS
   SELECT * FROM v$session where
       nvl(osuser,'x') <> 'SYSTEM'   and type <> 'BACKGROUND' and audsid = iiQuerySid;
BEGIN
OPEN cSession(userenv('SESSIONID'));
  FETCH cSession INTO mtSession;
  IF cSession%FOUND THEN
            UPDATE LOG$INFORMATION SET LOGOUT_TIME=SYSDATE WHERE sid=mtSession.Sid AND serial#=mtSession.Serial#;
  END IF;
  CLOSE cSession;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;
END;

使用sqlplus生产批量plsql

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:使用sqlplus生产批量plsql

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

要点
chr(10)–表示换行
set heading off–不显示表格头部
set pagesize 0–不分页
set linesize 800–行宽
spool filename–写入到文件中
sql语句

select 'declare'||chr(10)||' i   integer:=0;'||chr(10)||'cursor cur is select rowid as rid from '||t1 ||' WHERE DATASOURCE=''WN'' OR MODIFYSOURCE=''WN'';'||chr(10)||'begin for c in cur loop '||chr(10)||'i:=i+1;'||chr(10)|| 'update '||t1||chr(10)||'SET DATASOURCE=F_BYF_UPDATE_WN(datasource),MODIFYSOURCE=F_BYF_UPDATE_WN(MODIFYSOURCE),REMARK=F_BYF_UPDATE_WN(REMARK) WHERE rowid=c.rid;'||chr(10)|| ' if mod(i,200)=0 then'||chr(10)|| '  commit;'||chr(10)||'end if;'||chr(10)||' if mod(i,20000)=0 then'||chr(10)||'  dbms_lock.sleep(40);'||chr(10)||' if i>30000 then'||chr(10)|| ' dbms_lock.sleep(40);'||chr(10)||' end if;'||chr(10)||' end if;'||chr(10)|| ' if i>500000 then'||chr(10)||'  exit;'||chr(10)||' end if;'||chr(10)||' end loop;'||chr(10)||'  commit;'||chr(10)||'end;'||chr(10)||'/'||chr(10)||'--------'||t1||'-------------' from t1;

效果

declare
 i      integer:=0;
cursor cur is select rowid as rid from FUND294
 WHERE DATASOURCE='WN' OR MODIFYSOURCE='WN';
begin for c in cur loop
i:=i+1;
update FUND294
SET DATASOURCE=F_BYF_UPDATE_WN(datasource),MODIFYSOURCE=F_BYF_UPDATE_WN(MODIFYSOURCE),REMARK=F_BYF_UPDATE_WN(REMARK) WHERE rowid=c.rid;
 if mod(i,200)=0 then
  commit;
end if;
 if mod(i,20000)=0 then
  dbms_lock.sleep(40);
 if i>30000 then
 dbms_lock.sleep(40);
 end if;
 end if;
 if i>500000 then
  exit;
 end if;
 end loop;
  commit;
end;
/
--------FUND294-------------

oracle 开机自动启动

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle 开机自动启动

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

一、使用root用户修改/etc/oratab 文件:
$ vi /etc/oratab
orcl:/u01/oracle:N (ORACLE_SID:ORACLE_HOME:N)
改为:
orcl:/u01/oracle:Y 也就是将最后的N改为Y
二、使用Oracle用户修改$ORACLE_HOME/bin/dbstart和dbstop文件:
ORACLE_HOME_LISTNER=$1
改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME
三、创建服务
$su – root
# cd /etc/rc.d/init.d/
# vi oradb
在oradb中添加文本

#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
export ORACLE_BASE=/u01
export ORACLE_HOME=/u01/oracle
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup and oem
echo -n "Starting Oracle: "
# 启动listener and instance
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/Oracle
# 启动oem
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown and oem
echo -n "Shutdown Oracle: "
# 关闭oem
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
# 关闭数据库和listener
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/Oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0

修改所属组和用户
#chown oracle.oinstall /etc/rc.d/init.d/oradb
修改访问权限
#chmod 775 /etc/rc.d/init.d/oradb
添加服务到自动启动中
#chkconfig –add oradb
查看数据库服务开机启动状态
#chkconfig –list oradb
四、# chkconfig: 345 99 10说明
指出3,4,5级别启动这个服务,99是在相应的/etc/rc.d/rcN.d(N为前面指定的级别,这里是345)目录下生成的链接文件的序号(启动优先级别)S99oradbstart,10为在除前面指出的级别对应的/etc/rc.d/rcN.d(N为除345之外的级别)目录生成的链接文件的序号(服务停止的优先级别)

oracle物化视图

联系:手机/微信(+86 17813235971) QQ(107644445)

标题:oracle物化视图

作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

一、创建物化视图主要语法

 create materialized view [view_name]
     {TABLESPACE (表空间名)}--保存表空间
     {BUILD [DEFERRED|IMMEDIATE(默认值)]} --延迟刷新还是立即刷新
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}

二、相关参数说明
创建物化视图主要选项说明
创建物化视图时可以指定多种选项,下面对几种主要的选项进行简单说明:

名称 ON PREBUILD TABLE
描述 将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。
名称 Build Clause 创建方式
描述 包括BUILD IMMEDIATE和BUILD DEFERRED两种
取值 BUILD IMMEDIATE 在创建实体化视图的时候就生成数据
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据
默认 BUILD IMMEDIATE
名称 Refresh 刷新子句
描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步
语法
[refresh [fast | complete | force]
         [on demand | commit]
         [start with date]
         [next date]
         [with {primary key | rowid}]
]
取值 FAST 采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE 对整个物化视图进行完全的刷新
FORCE(默认) Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项
ON DEMAND(默认) 物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新
ON COMMIT 实体化视图在对基表的DML操作提交的同时进行刷新
START WITH 第一次刷新时间
NEXT 刷新时间间隔
WITH PRIMARY KEY(默认) 生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性
WITH ROWID 只有一个单一的主表,不能包括下面任何一项:
●Distinct
●聚合函数
●Group by
●子查询
●连接
●SET操作
名称 Query Rewrite 查询重写
描述 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据
取值 ENABLE QUERY REWRITE 支持查询重写
DISABLE QUERY REWRITE 不支持查询重写
默认 DISABLE QUERY REWRITE

创建实体化试图日志主要选项说明
如果需要进行快速刷新,则需要建立实体化视图日志。实体化视图日志根据不同实体化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

名称 WITH Clause
描述
取值 OBJECT ID 如果是对象实体化视图(object materialized view),则只能采用该方式
PRIMARY KEY
ROWID
SEQUENCE
默认 PRIMARY KEY

三、举例说明
1、简单示例

 create materialized view MV_except_pattern_orders
refresh Complete on demand
      start with to_date('2010-11-06 13:20:51','YYYY-MM-DD HH24:MI:SS') next sysdate+1/(24*60)
as
    select * from v_except_pattern_orders

2、带日志物化视图

--创建物化视图日志
create materialized view log on table1
tablespace ts_data --日志保存在特定的表空间
with rowid;
--创建物化视图主体
create materialized view MV_LVY_LEVYDETAILDATA
TABLESPACE ZGMV_DATA --保存表空间
BUILD DEFERRED --延迟刷新不立即刷新
refresh force --如果可以快速刷新则进行快速刷新,否则完全刷新
on demand --按照指定方式刷新
start with to_date('24-11-2005 18:00:10', 'dd-mm-yyyy hh24:mi:ss') --第一次刷新时间
next TRUNC(SYSDATE+1)+18/24 --刷新时间间隔
as
as select * from table1;