基于Oracle闪回详解(必看篇)

Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法。

本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不做介绍

一、Oracle闪回概述

闪回级别 闪回场景 闪回技术 对象依赖   影响数据
数据库 表截断、逻辑错误、其他多表意外事件 闪回DATABASE 闪回日志、undo
DROP 删除表 闪回DROP 回收站(recyclebin)
更新、删除、插入记录 闪回TABLE 还原数据,undo
查询 当前数据和历史数据对比 闪回QUERY 还原数据,undo
版本查询 比较行版本 闪回Version Query 还原数据,undo
事务查询 比较 闪回Transaction Query 还原数据,undo
归档 DDL、DML 闪回Archive 归档日志

二、Oracle闪回使用详解

1、闪回开启

(1)开启闪回必要条件

a.开启归档日志

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/U01/app/oracle/oradata/testdb/arch
Oldest online log sequence 844
Next log sequence to archive 846
Current log sequence 846

##如未开启,在mount状态执行alter database archivelog;

b.设置合理的闪回区

db_recovery_file_dest:指定闪回恢复区的位置

db_recovery_file_dest_size:指定闪回恢复区的可用空间大小

db_flashback_retention_target:指定数据库可以回退的时间,单位为分钟,默认1440分钟(1天),实际取决于闪回区大小

(2)检查是否开启闪回

SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO

(3)开启闪回

a.开启归档

mount状态:alter database archivelog;

b.设置闪回区

SQL> alter system set db_recovery_file_dest='/home/U01/app/oracle/fast_recovery_area' scope=both;
System altered.
SQL> alter system set db_recovery_file_dest_size=60G scope=both;
System altered.
SQL> alter system set db_flashback_retention_target=4320 scope=both;
System altered. 

c.开启flashback (10g在mount开启)

SQL> alter database flashback on;
Database altered.

(4)确定闪回开启

SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES 

(5)关闭闪回

SQL> alter database flashback off;
Database altered.

2、闪回使用

(1)闪回查询

闪回查询主要是根据Undo表空间数据进行多版本查询,针对v$和x$动态性能视图无效,但对DBA_、ALL_、USER_是有效的

a.闪回查询

允许用户查询过去某个时间点的数据,用以重构由于意外删除或更改的数据,数据不会变化。

SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
SQL> delete from scott.dept where deptno=40;
row deleted.
SQL> commit;
Commit complete.
SQL> select * from scott.dept as of timestamp sysdate-10/1440;

DEPTNO DNAME LOC
---------- -------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
SQL> select * from scott.dept as of timestamp to_timestamp('2017-12-14 16:20:00','yyyy-mm-dd hh24:mi:ss');

DEPTNO DNAME LOC
---------- -------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON

SQL> select * from scott.dept as of scn 16801523;

DEPTNO DNAME LOC
---------- -------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON

b.闪回版本查询

用于查询行级数据库随时间变化的方法

c.闪回事务查询

用于提供查看事务级别数据库变化的方法

(2)闪回表(update/insert/delete)

闪回表就是对表的数据做回退,回退到之前的某个时间点,其利用的是undo的历史数据,与undo_retention设置有关,默认是14400分钟(1天)

同样,sys用户表空间不支持闪回表,要想表闪回,需要允许表启动行迁移(row movement)

闪回表示例:

SQL> flashback table scott.dept to timestamp to_timestamp('2017-12-14 16:20:00','yyyy-mm-dd hh24:mi:ss');
flashback table scott.dept to timestamp to_timestamp('2017-12-14 16:20:00','yyyy-mm-dd hh24:mi:ss')
ERROR at line 1:
ORA-08189: cannot flashback the table because row movement is not enabled

SQL> select row_movement from dba_tables where table_name='DEPT' and owner='SCOTT';
ROW_MOVE
--------
DISABLED
SQL> alter table scott.dept enable row movement;
Table altered.

SQL> flashback table scott.dept to timestamp to_timestamp('2017-12-14 16:20:00','yyyy-mm-dd hh24:mi:ss');
Flashback complete.
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
ACCOUNTING NEW YORK
RESEARCH DALLAS
SALES CHICAGO
OPERATIONS BOSTON
SQL> alter table scott.dept disable row movement;
Table altered.

(3)闪回DROP(drop table)

当一个表被drop掉,表会被放入recyclebin回收站,可通过回收站做表的闪回。表上的索引、约束等同样会被恢复

不支持sys/system用户表空间对象,可通过alter system set recyclebin=off;关闭回收站功能

闪回DROP示例:

SQL> select * from t ;

ID NAME
---------- ---------------------------------------
2
4

SQL> drop table t;

Table dropped.

SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$YEh2QcvZdJLgUxyAgQpnVQ==$0 TABLE 2017-12-14:15:02:06
SQL> flashback table t to before drop;

Flashback complete.

SQL> select * from t;

ID NAME
---------- -------------------------------------
2
4

备注:即使不开始flashback,只要开启了recyclebin,那么就可以闪回DROP表。

但如果连续覆盖,就需要指定恢复的表名,如果已经存在表,则需要恢复重命名。

SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$YEh2QcvddJLgUxyAgQpnVQ==$0 TABLE 2017-12-14:15:07:54
T BIN$YEh2QcvcdJLgUxyAgQpnVQ==$0 TABLE 2017-12-14:15:07:27
SQL> flashback table "BIN$YEh2QcvcdJLgUxyAgQpnVQ==$0" to before drop ;
Flashback complete.
SQL> show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
T BIN$YEh2QcvddJLgUxyAgQpnVQ==$0 TABLE 2017-12-14:15:07:54
SQL> flashback table t to before drop rename to tt;
Flashback complete.

(4)闪回数据库(truncate/多表数据变更)

数据库闪回必须在mounted状态下进行,基于快照的可以再open下进行闪回库

闪回数据库主要是将数据库还原值过去的某个时间点或SCN,用于数据库出现逻辑错误时,需要open database resetlogs

a.全库闪回

数据库闪回示例

SQL> select * from scott.EMP;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
SMITH CLERK 7902 1980-12-17 00:00:00 800 20
ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
KING PRESIDENT 1981-11-17 00:00:00 5000 10
TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
JAMES CLERK 7698 1981-12-03 00:00:00 950 30
FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
rows selected.

SQL> truncate table scott.EMP;

Table truncated.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 9.4067E+10 bytes
Fixed Size 2263936 bytes
Variable Size 9395242112 bytes
Database Buffers 8.4557E+10 bytes
Redo Buffers 112766976 bytes
Database mounted.
SQL> flashback database to timestamp to_timestamp('2017-12-14 14:12:46','yyyy-mm-dd HH24:MI:SS');

Flashback complete.
SQL> alter database open resetlogs;

Database altered.

SQL> select * from scott.emp;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
SMITH CLERK 7902 1980-12-17 00:00:00 800 20
ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30
WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30
JONES MANAGER 7839 1981-04-02 00:00:00 2975 20
MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30
BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30
CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10
SCOTT ANALYST 7566 1987-04-19 00:00:00 3000 20
KING PRESIDENT 1981-11-17 00:00:00 5000 10
TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30
ADAMS CLERK 7788 1987-05-23 00:00:00 1100 20
JAMES CLERK 7698 1981-12-03 00:00:00 950 30
FORD ANALYST 7566 1981-12-03 00:00:00 3000 20
MILLER CLERK 7782 1982-01-23 00:00:00 1300 10
rows selected.

b.快照闪回

针对主库和备库都可以创建闪回快照点,然后恢复到指定的快照点,但主库一旦恢复到快照点,备库的同步则需要重新同步

SQL> select * from scott.dept;

  DEPTNO DNAME     LOC      ADDR
---------- -------------- ------------- ------------------------------
ACCOUNTING   NEW YORK
RESEARCH    DALLAS
SALES     CHICAGO

SQL> create restore point before_201712151111 guarantee flashback database;
Restore point created.

SQL> create table scott.t as select * from scott.dept;
Table created.

SQL> truncate table scott.t;
Table truncated.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 9.4067E+10 bytes
Fixed Size         2263936 bytes
Variable Size      9663677568 bytes
Database Buffers     8.4289E+10 bytes
Redo Buffers       112766976 bytes
Database mounted.
SQL> flashback database to restore point before_201712151111;
Flashback complete.
SQL> alter database open resetlogs;
Database altered.

此时主库scott.t已不存在:
SQL> select * from scott.t;
select * from scott.t
          *
ERROR at line 1:
ORA-00942: table or view does not exist
此时从库的scott.依旧存在,主备同步终止
解决方案:在主库创建快照时间点,从库自动停止应用日志,等主库闪回后,重新应用日志即可。
如果已经做了上述操作,从库可以选择重建
ALTER DATABASE REGISTER LOGFILE '/xx/xx/archive.dbf';

c.闪回snapshot standby

此功能在11GR2非常实用,可自动创建闪回点、开启闪回日志,可完成线上数据测试后,然后做数据库闪回恢复主备关系

select scn, STORAGE_SIZE ,to_char(time,'yyyy-mm-dd hh24:mi:ss') time,NAME from v$restore_point;
select database_role,open_mode,db_unique_name,flashback_on from v$database;

SQL> set line 200;
SQL> set pagesize 2000;
SQL> select database_role,open_mode,db_unique_name,flashback_on from v$database;

DATABASE_ROLE  OPEN_MODE      DB_UNIQUE_NAME         FLASHBACK_ON
---------------- -------------------- ------------------------------ ------------------
PHYSICAL STANDBY READ ONLY      testdbms            NO

SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY; 

Database altered.

SQL> select database_role,open_mode,db_unique_name,flashback_on from v$database;

DATABASE_ROLE  OPEN_MODE      DB_UNIQUE_NAME         FLASHBACK_ON
---------------- -------------------- ------------------------------ ------------------
SNAPSHOT STANDBY MOUNTED       testdbms            RESTORE POINT ONLY

SQL> alter database open;

Database altered.

SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ WRITE

此时备库操作:
SQL> select * from scott.emp;

   EMPNO ENAME   JOB       MGR HIREDATE          SAL    COMM   DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
SMITH   CLERK      7902 1980-12-17 00:00:00    800          20
ALLEN   SALESMAN    7698 1981-02-20 00:00:00    1600    300     30
WARD    SALESMAN    7698 1981-02-22 00:00:00    1250    500     30
JONES   MANAGER     7839 1981-04-02 00:00:00    2975          20
MARTIN   SALESMAN    7698 1981-09-28 00:00:00    1250    1400     30
BLAKE   MANAGER     7839 1981-05-01 00:00:00    2850          30
CLARK   MANAGER     7839 1981-06-09 00:00:00    2450          10
SCOTT   ANALYST     7566 1987-04-19 00:00:00    3000          20
KING    PRESIDENT      1981-11-17 00:00:00    5000          10
TURNER   SALESMAN    7698 1981-09-08 00:00:00    1500     0     30
ADAMS   CLERK      7788 1987-05-23 00:00:00    1100          20
JAMES   CLERK      7698 1981-12-03 00:00:00    950          30
FORD    ANALYST     7566 1981-12-03 00:00:00    3000          20
MILLER   CLERK      7782 1982-01-23 00:00:00    1300          10
rows selected.

SQL> truncate table scott.emp;

Table truncated.

主库操作:
SQL> create table scott.t as select * from scott.dept;

Table created.

SQL> select * from scott.t;

  DEPTNO DNAME     LOC      ADDR
---------- -------------- ------------- ------------------------------
ACCOUNTING   NEW YORK
RESEARCH    DALLAS
SALES     CHICAGO

备库恢复到物理standby
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 9.4067E+10 bytes
Fixed Size         2263936 bytes
Variable Size      9663677568 bytes
Database Buffers     8.4289E+10 bytes
Redo Buffers       112766976 bytes
Database mounted.
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY; 

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

ORACLE instance shut down.
SQL> startup ;
ORACLE instance started.

Total System Global Area 9.4067E+10 bytes
Fixed Size         2263936 bytes
Variable Size      9663677568 bytes
Database Buffers     8.4289E+10 bytes
Redo Buffers       112766976 bytes
Database mounted.
Database opened.

##此时备库的数据已经恢复到转变snapshot standby时间点
SQL> select database_role,open_mode,db_unique_name,flashback_on from v$database;

DATABASE_ROLE  OPEN_MODE      DB_UNIQUE_NAME         FLASHBACK_ON
---------------- -------------------- ------------------------------ ------------------
PHYSICAL STANDBY READ ONLY      testdbms            NO

SQL> select * from scott.emp;

   EMPNO ENAME   JOB       MGR HIREDATE          SAL    COMM   DEPTNO
---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------
SMITH   CLERK      7902 1980-12-17 00:00:00    800          20
ALLEN   SALESMAN    7698 1981-02-20 00:00:00    1600    300     30
WARD    SALESMAN    7698 1981-02-22 00:00:00    1250    500     30
JONES   MANAGER     7839 1981-04-02 00:00:00    2975          20
MARTIN   SALESMAN    7698 1981-09-28 00:00:00    1250    1400     30
BLAKE   MANAGER     7839 1981-05-01 00:00:00    2850          30
CLARK   MANAGER     7839 1981-06-09 00:00:00    2450          10
SCOTT   ANALYST     7566 1987-04-19 00:00:00    3000          20
KING    PRESIDENT      1981-11-17 00:00:00    5000          10
TURNER   SALESMAN    7698 1981-09-08 00:00:00    1500     0     30
ADAMS   CLERK      7788 1987-05-23 00:00:00    1100          20
JAMES   CLERK      7698 1981-12-03 00:00:00    950          30
FORD    ANALYST     7566 1981-12-03 00:00:00    3000          20
MILLER   CLERK      7782 1982-01-23 00:00:00    1300          10
rows selected.

SQL> alter database recover managed standby database using current logfile disconnect;

Database altered.

SQL> select * from scott.t;

  DEPTNO DNAME     LOC      ADDR
---------- -------------- ------------- ------------------------------
ACCOUNTING   NEW YORK
RESEARCH    DALLAS
SALES     CHICAGO

SQL> select database_role,open_mode,db_unique_name,flashback_on from v$database;

DATABASE_ROLE  OPEN_MODE      DB_UNIQUE_NAME         FLASHBACK_ON
---------------- -------------------- ------------------------------ ------------------
PHYSICAL STANDBY READ ONLY WITH APPLY testdbms            NO

(5)闪回归档(增加、修改、重命名、删除表的列、truncate表、修改表的约束、以及修改分区表的分区规范)

3、闪回注意事项

(1)数据库闪回需要在mounted下进行,并且open时需要使用resetlogs

(2)闪回DROP只能用于非系统表空间和本地管理的表空间,外键约束无法恢复,对方覆盖、重命名需注意

(3)表DROP,对应的物化视图会被彻底删除,物化视图不会存放在recyclebin里

(4)闪回表,如果在做过dml,然后进行了表结构修改、truncate等DDL操作,新增/删除结构无法做闪回

(5)闪回归档,必须在assm管理tablespace和undo auto管理下进行

(6)注意闪回区管理,防止磁盘爆满,闪回区空间不足等

(7)主库做库的闪回,会影响备库,需要重新同步

(8)snapshot standby 不支持最高保护模式

三、备注

1、相关数据字典

V$FLASHBACK_DATABASE_LOG ##查看数据库可闪回的时间点/SCN等信息 V$flashback_database_stat ##查看闪回日志空间记录信息

2、常用查询语句

(1)查看数据库状态

SQL> select NAME,OPEN_MODE ,DATABASE_ROLE,CURRENT_SCN,FLASHBACK_ON from v$database;

NAME OPEN_MODE DATABASE_ROLE CURRENT_SCN FLASHBACK_ON
------------- -------------------- ---------------- ----------- ------------------
TESTDB READ WRITE PRIMARY 16812246 YES

(2)获取当前数据库的系统时间和SCN

SQL> select to_char(systimestamp,'yyyy-mm-dd HH24:MI:SS') as sysdt , dbms_flashback.get_system_change_number scn from dual;

SYSDT SCN
------------------- ----------
2017-12-14 14:28:33 16813234

(3)查看数据库可恢复的时间点

SQL> select * from V$FLASHBACK_DATABASE_LOG;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- ------------------- ---------------- -------------- ------------------------
16801523 2017-12-14 11:35:05 4320 104857600 244113408

(4)查看闪回日志空间情况

SQL> select * from V$flashback_database_stat;
BEGIN_TIME END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE
------------------- ------------------- -------------- ---------- ---------- ------------------------
2017-12-14 14:34:53 2017-12-14 14:56:43 1703936 9977856 1487872 0  

(5)SCN和timestamp装换关系查询

select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss')from sys.smon_scn_time;

(6)查看闪回restore_point

select scn, STORAGE_SIZE ,to_char(time,'yyyy-mm-dd hh24:mi:ss') time,NAME from v$restore_point;

(7)闪回语句

a.闪回数据库

FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2017-12-14 14:28:33','yyyy-mm-dd HH24:MI:SS');;
flashback database to scn 16813234;

b.闪回DROP

其中table_name可以是删除表名称,也可以是别名

flashback table table_name to before drop;
flashback table table_name to before drop rename to table_name_new;

c.闪回表

flashback table table_name to scn scn_number;
flashback table table_name to timestamp to_timestamp('2017-12-14 14:28:33','yyyy-mm-dd hh24:mi:ss');

d.闪回查询

select * from table_name as of timestamp to_timestamp('2017-12-14 14:28:33','yyyy-mm-dd hh24:mi:ss');
select * from scott.dept as of scn 16801523;

e.闪回快照

create restore point before_201712151111 guarantee flashback database;

flashback database to restore point before_201712151111;

(7)闪回空间爆满问题处理

请参照 基于ORA-19815闪回空间爆满问题的处理方法

以上这篇基于Oracle闪回详解(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Oracle 闪回技术详细介绍及总结

    Oracle闪回技术详解,这里整理了4种闪回技术,对Oracle 闪回技术做一个整理总结.  概述: 闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成).需要注意的是,闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了,还是得借助于Oracle一些高级的备份恢复工具如RAMN去完成(这才是Oracle强大备份恢复机制的精髓所在啊)  撤销段(UNDO SEG

  • oracle 数据库闪回相关语句介绍

    1\将表闪回到某一时间点: 闪回操作前启用行移动功能 Sql代码 alter table emp enable row movement; 执行闪回语句: Sql代码 flashback table emp to timestamp to_timestamp('20120709195000','YYYYMMDDHH24:MI:SS'); 2\闪回回收站: Java代码 SQL>show recyclebin; SQL>drop table emp; SQL>show recyclebin

  • 基于Oracle闪回详解(必看篇)

    Oracle 9i 开始支持闪回,Oracle10g开始全面支持闪回功能,Oracle11g有所完善,为大家快速的恢复数据,查询历史数据提供了很大的便捷方法. 本文主要对Oracle常用闪回使用做些详细介绍,其中对于不常用的事务和版本闪回,这里就不做介绍 一.Oracle闪回概述 闪回级别 闪回场景 闪回技术 对象依赖 影响数据 数据库 表截断.逻辑错误.其他多表意外事件 闪回DATABASE 闪回日志.undo 是 DROP 删除表 闪回DROP 回收站(recyclebin) 是 表 更新.

  • Java 驼峰命名法详解(必看篇)

    标识符: Java对各种变量.方法和类等要素命名时使用的字符序列称为标识符 凡是自己可以起名字的地方都叫标识符 定义合法标识符的规则: 由26个英文字母大小写,0-9,_或$组成 数字不可以开头 不可以使用关键字和保留字,但是能包括关键字和保留字 Java中严格区分大小写,长度无限制 标识符不能包括空格 取名尽量做到"见名知意" 关于使用中文,Oracle 官网给出的文档是这样描述的: An identifier is an unlimited-length sequence of J

  • 关于正则表达式基本语法的应用详解(必看篇)

    1.正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束.例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等): "of despair$":表示所以以"of despair"结尾的字符串: "^abc$":表示开始和结尾都是"abc"的字符串--呵呵,只有&qu

  • JSP中EL表达式的用法详解(必看篇)

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${为起始.以}为结尾的.上述EL范例的意思是:从Session的范围中,取得 用户的性别.假若依照之前JSP Scriptlet的写法如下: User user =(User)session.getAttribute("user"); String sex =user.getSex( );

  • PHP书写格式详解(必看)

    从一个例子开始. 启动编辑器,创建一个php文件并键入如下代码: <?php echo "你好!"; ?> 将该文件命名为 test.php 并存储于 E:html 目录下. 在浏览器地址栏里访问该 php 文件:http://127.0.0.1/test.php,输出结果如下: 你好!在该例子中,我们以 echo 指令输出一个字符串"你好!". 从这个例子可以看出: •PHP 文件或 PHP 代码段以"<?php"开头,以&q

  • mysql常用日期时间/数值函数详解(必看)

    1.日期时间函数 时间转化秒函数:time_to_sec MySQL> select time_to_sec('01:01:01'); +-------------------------+ | time_to_sec('01:01:01') | +-------------------------+ | 3661 | +-------------------------+ 1 row in set (0.00 sec) 秒转化时间函数:sec_to_time mysql> select se

  • IDEA实用好用插件推荐及使用方法教程详解(必看)

    当前使用的IDEA版本是2020.1.随着IDEA版本的升级,有些插件不再支持,而有些插件变成了收费插件,这些插件将不再推荐.以下列举的,都是亲测可以在2020.1版本的IDEA中使用的插件. Translation 简介 翻译插件,支持google翻译.百度翻译.有道翻译. 使用 快捷键Ctrl + Shift + O Key promoter X 简介 Key Promoter X 是一个提示插件.在IDEA里使用鼠标操作时,会有这个操作的快捷键在界面的右下角进行告知.有个小缺点是有些没有快

  • 基于Bootstrap分页的实例讲解(必看篇)

    前面的话 分页导航几乎在每个网站都可见,好的分页能给用户带来好的用户体验.本文将详细介绍Bootstrap分页 概述 在Bootstrap框架中提供了两种分页导航: ☑ 带页码的分页导航 ☑ 带翻页的分页导航 页码分页 带页码的分页导航,可能是最常见的一种分页导航,特别是在列表页内容超多的时候,会给用户提供分页的导航方式 [默认分页] 平时很多人喜欢用div>a和div>span结构来制作带页码的分页导航.不过,在Bootstrap框架中使用的是ul>li>a这样的结构,在ul标签

  • Java文件(io)编程_基于File类的基本用法(必看篇)

    1.首先了解文件流的相关概念: 2.文件File类的基本用法 public class Demo_1 { public static void main(String[] args) { //创建一个文件对象 File f=new File("e:\\aa.txt"); //得到文件的路径 System.out.println("文件路径:"+f.getAbsolutePath()); //得到文件的大小,字节数 System.out.println("文

  • DB2数据库切换为oracle数据库经验教训总结(必看篇)

    由于DB2数据库使用的人太少,公司有没有专业的DBA,决定把数据库从DB2数据库切换为oracle数据库,本以为很简单,可当真的切换时,却发现,有很多东西出乎意料. 由于系统底层使用的是ORM映射工具,由于没有使用存储过程,自定义函数,触发器,因此我以为系统改动不大,但发现的问题却不少. 1.我们的主键基本上都采用共的是Sequence,没有采用自动增长作为主键. 但获取Sequence在两种数据库中是不相同的. DB2获取的方法 values next value for eas.seq_Se

随机推荐