网站链接的基本形式那么多网站都是谁做的

当前位置: 首页 > news >正文

网站链接的基本形式,那么多网站都是谁做的,专业网站开发技术,包头seo优化闪回技术是若干技术的集合 包含对数据库整体的闪回 对表的闪回 对事务的闪回 经典面试题面试题#xff1a;简述Oracle数据库闪回技术#xff1f; 1.闪回Oracle数据库 2.闪回表 3.闪回事务 数据库闪回 要想实现数据库闪回 1.必须配置数据库的恢复区 SQL show parameter …闪回技术是若干技术的集合 包含对数据库整体的闪回 对表的闪回 对事务的闪回 经典面试题面试题简述Oracle数据库闪回技术  1.闪回Oracle数据库 2.闪回表 3.闪回事务 数据库闪回 要想实现数据库闪回 1.必须配置数据库的恢复区 SQL show parameter recover NAME                     TYPE     VALUE ———————————— ———– —————————— db_recovery_file_dest             string db_recovery_file_dest_size         big integer 0 数据库的恢复区 可用用来存放多种数据 比如:控制文件的镜像 redo文件的镜像 归档 备份 闪回日志(只能存放在这里) 闪回日志 数据库能够实现时间的倒退(闪回)要依赖闪回日志的记录  ! mkdir -p /home/oracle/flash alter system set db_recovery_file_dest_size2G; alter system set db_recovery_file_dest/home/oracle/flash; 2.开启数据库的闪回功能  (1)保证数据库已经运行在归档模式  SQL archive log list; Database log mode           Archive Mode Automatic archival           Enabled (2)查询是否已经开启闪回  SQL select FLASHBACK_ON from v\(database; FLASHBACK_ON ------------------ NO 开启闪回 alter database flashback on ; SQL select FLASHBACK_ON from v\)database; FLASHBACK_ON —————— YES 验证数据库的闪回功能  SQL create table t1 as select * from dba_objects; Table created. SQL select current_scn from v\(database; CURRENT_SCN -----------     1679739 SQL create table t2 as select * from t1; Table created. SQL alter system switch logfile; System altered. SQL / System altered. SQL / System altered. SQL truncate  table t1; Table truncated. SQL shutdown immediate SQL startup mount  SQL flashback database to scn 1679739; SQL alter database open resetlogs; 生产上 闪回数据库这个操作 不能够用来找回误删除的数据 1.闪回需要数据库运行在mount阶段 意味着需要关闭数据库 2.闪回到过去的时间点后 在这期间数据库的所有数据全部丢失 闪回数据库技术能干什么 1.压力测试后 回退数据 2.数据库版本升级 在生产上 误删除了数据 可以用备份恢复的方式找回数据  闪回表 1.drop表后 将表闪回 利用Oracle的回收站功能 回收站 SQL show parameter recyc NAME                     TYPE     VALUE ------------------------------------ ----------- ------------------------------ recyclebin                 string     on 回收站各个用户之间独立 回收站的空间属性问题 SQL create tablespace test datafile /u01/app/oracle/oradata/PROD4/PROD4/test.dbf size 10m; Tablespace created. SQL create user bsr identified by oracle default tablespace test; User created. SQL conn bsr/oracle Connected. SQL create table TEST1 as select * from dba_objects; Table created. SQL select sum(bytes)/1024/1024 from dba_segments where segment_nameTEST1; SUM(BYTES)/1024/1024 --------------------                    9 SQL show recyclebin SQL desc dba_free_space;       Name                                      Null?    Type  ----------------------------------------- -------- ----------------------------  TABLESPACE_NAME                                    VARCHAR2(30)  FILE_ID                                            NUMBER  BLOCK_ID                                           NUMBER  BYTES                                              NUMBER  BLOCKS                                             NUMBER  RELATIVE_FNO                                       NUMBER SQL select TABLESPACE_NAME,bytes/1024/1024 from dba_free_space where tablespace_nameTEST; select TABLESPACE_NAME,sum(bytes)/1024/1024 from dba_free_space group by TABLESPACE_NAME;  no rows selected SQL DROP TABLE TEST1; Table dropped. DROP表的本质 是将表进行改名 并且 将段使用的空间从永久变为临时 show recyclebin flashback table BIN\)xxxxx to before drop [rename to 表名] 2.delete行 将表中已删除的行找回 SQL create table SALARY as select EMPLOYEE_ID,COMMISSION_PCT from hr.employees;查看下操作系统时间date   delete SALARY where employee_id in (select employee_id from hr.employees where HIRE_DATEto_date(2002-01-01,yyyy-mm-dd)); 闪回查询 只要修改的数据在undo中存放 就可以在查询时 添加时间点 找到对应的数据 如果undo中数据被覆盖 那么会报快照过旧 Fri Apr 12 02:49:47 UTC 2019 select * from SALARY AS OF timestamp to_date(2019-04-12 02:49:47,yyyy-mm-dd hh24:mi:ss) where employee_id in (select employee_id from hr.employees where HIRE_DATEto_date(2002-01-01,yyyy-mm-dd)); EMPLOYEE_ID COMMISSION_PCT ———– ————–     102 delete t1 where 条件 namefuxian update t1 set salarysalary1000 where namefuxian insert into table xxx values( ); 02:15:40 UTC 2016 –delete 整个表后可以使用flashback table 找回 SQL alter table test enable row movement;–先打开行移动的功能 flashback  table  SALARY  to timestamp to_date(2019-04-12 02:49:49,yyyy-mm-dd hh24:mi:ss);  ———————————————————————————————————— 两种方式 生产上 尽量用第一种方式 插入的方式 因为数据的还原值都在undo里记录 我们可以利用undo对数据进行闪回版本查询 flash version query flashback version query提供了一个审计行改变的功能它能找到所有已经提交了的行的记录比如说时间1我插入一条记录时间2我删除了这条记录对于时间3当然查询不到这条记录但是flashback version query能够把时间1、时间2的操作给记录下来并详细的查询出来。 flashback version query一样依赖于AUM自动undo管理所以这里就不再多说AUM的配置。flashback version query采用VERSIONS BETWEEN语句来进行查询 常用的有 ·VERSIONS_SCN – 系统改变号 ·VERSIONS_TIMESTAMP – 时间 下面将展示这个 flashback version query SQL connect test/test Connected. SQL create table t1(ID int,NAME varchar2(10)); Table created. 我们执行一系列如下的操作:    insert into T1 values(1,A);      commit;     update T1 set ID2;     commit;    update T1 set ID3;    commit;   update T1 set ID4;       现在我们看到该表最后的记录是 16:34:49 SQL select * from T1;      A      B ———- ———-       5 16:34:34 这个时候如果我们利用flash table或者是flash query我们也只能是看到过去的莫一个快照而已利用flashback version query,我们将找到其中的任何变化如 SQLselect versions_starttime, versions_endtime, versions_xid,       versions_operation,ID,NAME       from t1 versions between timestamp minvalue and maxvalue       order by VERSIONS_STARTTIME; SELECT * FROM (select versions_starttime, versions_endtime, versions_xid,       versions_operation,ID,NAME       from t1  versions between timestamp minvalue and maxvalue       order by VERSIONS_STARTTIME) WHERE NAMEB ; VERSIONS_STARTTIME        VERSIONS_ENDTIME               VERSIONS_XID     V         ID NAME ————————- —————————— —————- - ———- —- 12-OCT-15 02.01.30 PM                                    01000D00C3010000 U          5 D 12-OCT-15 02.01.30 PM     12-OCT-15 02.01.30 PM          0600110096020000 I          4 C 12-OCT-15 02.01.30 PM     12-OCT-15 02.01.30 PM          0A001F00FB010000 I          1 A 12-OCT-15 02.01.30 PM     12-OCT-15 02.01.30 PM          04001C002B020000 U          3 B 12-OCT-15 02.01.30 PM     12-OCT-15 02.01.30 PM          080009006D030000 U          2 B 12-OCT-15 02.01.30 PM                                    090002008E020000 D          3 B select versions_starttime, versions_endtime, versions_xid,       versions_operation,salary       from employees versions between timestamp minvalue and maxvalue where employee_id107       order by VERSIONS_STARTTIME; 注意 此处显示了对该表所作的所有更改甚至包括该行被删除和重新插入的情况。VERSION_OPERATION 列显示对该行执行了什么操作 (Insert/Update/Delete)。 所做的这些工作不需要历史表或额外的列。 flashback version query记载的是行的改变如果一个操作有多行的改变如delete from tablename那么在flashback version query对应的也是多行。   在上述查询中列 versions_starttime、versions_endtime、versions_xid、versions_operation 是伪列与 ROWNUM、LEVEL 等其他熟悉的伪列相类似。其他伪列 — 如 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN — 显示了该时刻的系统更改号。列 versions_xid 显示了更改该行的事务标识符。有关该事务的更多详细信息可在视图 FLASHBACK_TRANSACTION_QUERY 中找到这个将在flashback transaction query中描述。   当然除了分析以上所有的变更之外我们可以指定时间段如 select ID,NAME from test versions between timestamp to_date(2004-04-07 04:34:04,yyyy-mm-dd hh24:mi:ss) and to_date(2004-04-07 04:34:50,yyyy-mm-dd hh24:mi:ss); 还可以使用 SCN 来找出过去的版本值。可以从伪列 VERSIONS_STARTSCN 和 VERSIONS_ENDSCN 中获得 SCN 号。以下是一个示例 select versions_starttime, versions_endtime from test versions between scn 1000 and 1001 flashback transaction query闪回事务 Oracle 11g的闪回事务查询就是对过去某段时间内所完成的事务的查询和撤销。10g数据来源于undo11g来自undo/redo/archivelog在考试中我们使用em来操作举例如下  a、打开数据库补充日志 sqlalter database add supplemental log data; b、打开主键补充日志 sqlalter database add supplemental log data (primary key) columns; 然后用em查询和查询闪回版本差不多打开em—-Availability—–Perform Recovery—-如下选择 /* transaction 1 / INSERT INTO hr.departments VALUES (280,ERP, NULL, 1700) / INSERT INTO hr.departments VALUES (290,Support Operations, NULL, 1700) / INSERT INTO hr.departments VALUES (300,HR Training, NULL, 1700) / commit / / transaction 2 / update hr.departments set department_id310 where department_id280 / commit / / transaction 3 */ update hr.departments set department_nameABC   where department_id310 / commit alter system switch logfile; 切三遍以上 然后用em查询和查询闪回版本差不多打开em—-Availability—–Perform Recovery—-如下选择将上面的事务操作闪回到第一次update之前。