中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

oracle 18c新特性私有臨時(shí)表

發(fā)布于:2021-02-04 14:00:20

0

343

0

oracle oracle 18c 私有臨時(shí)表 數(shù)據(jù)庫

Active Data Guard數(shù)據(jù)庫現(xiàn)在不再只是“只讀”數(shù)據(jù)庫—它們現(xiàn)在已成為“大部分讀取”數(shù)據(jù)庫,主要用于報(bào)告目的,但在某種程度上也允許DML活動(dòng)。

oracle18c的一個(gè)新特性是私有臨時(shí)表。

專用臨時(shí)表與全局臨時(shí)表在某些方面有所不同。它們不存儲(chǔ)在磁盤上,而僅存儲(chǔ)在內(nèi)存中,并且僅對(duì)創(chuàng)建它們的會(huì)話可見。表的名稱必須以字符串' ORA $ PTT '為前綴。

它們是臨時(shí)數(shù)據(jù)庫對(duì)象,在事務(wù)結(jié)束或會(huì)話結(jié)束時(shí)被刪除。同一用戶的不同會(huì)話可以對(duì)私有臨時(shí)表使用相同的名稱。

當(dāng)以只讀為主的應(yīng)用程序還需要執(zhí)行一些DML活動(dòng)時(shí),這些表非常有用,比如在臨時(shí)表中插入或更新一些臨時(shí)數(shù)據(jù),然后查詢幾次,然后在事務(wù)或會(huì)話結(jié)束時(shí)刪除這些臨時(shí)數(shù)據(jù)。

讓我們看看這個(gè)功能。

我們以用戶HR的身份連接到可插拔數(shù)據(jù)庫PDB1,但連接到主備只讀數(shù)據(jù)庫。

用戶HR的會(huì)話1

SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_ADG_SESSIONS
 2   (username      varchar2(20), sid number , serial# number)
 3  ON COMMIT PRESERVE DEFINITION;

Table created.

SQL> insert into ORA$PTT_ADG_SESSIONS
select s.username          i_username, to_char(s.sid)          i_sid, to_char(s.serial#)      i_serial
from
v$session s, v$process p
where
s.paddr = p.addr
and
sid = (select sid from v$mystat where rownum = 1);  

1 row created.

SQL> select * from ORA$PTT_ADG_SESSIONS;

USERNAME    SID    SERIAL#
-------------------- ---------- ----------
HR    465      20742

用戶HR的會(huì)話2請(qǐng)注意表名相同,但數(shù)據(jù)不同。

SQL> CREATE PRIVATE TEMPORARY TABLE ORA$PTT_ADG_SESSIONS
 2  (username      varchar2(20), sid number , serial# number)
 3  ON COMMIT PRESERVE DEFINITION;

Table created.

SQL> insert into ORA$PTT_ADG_SESSIONS
select s.username          i_username, to_char(s.sid)          i_sid, to_char(s.serial#)      i_serial
from
v$session s, v$process p
where
s.paddr = p.addr
and
sid = (select sid from v$mystat where rownum = 1);  2    3    4    5    6    7    8  

1 row created.

SQL>  select * from ORA$PTT_ADG_SESSIONS;

USERNAME    SID    SERIAL#
-------------------- ---------- ----------
HR    472      46742

SQL>


以用戶身份重新連接HR

SQL> conn hr/hr@pdb1
Connected.

SQL> select * from ORA$PTT_ADG_SESSIONS;
select * from ORA$PTT_ADG_SESSIONS
             *
ERROR at line 1:
ORA-00942: table or view does not exist

具有提交時(shí)丟棄定義的私有臨時(shí)表

SQL>  CREATE PRIVATE TEMPORARY TABLE ORA$PTT_ADG_SESSIONS
 2   (username      varchar2(20), sid number , serial# number)
 3  ON COMMIT DROP DEFINITION;

Table created.

SQL>  insert into ORA$PTT_ADG_SESSIONS
select s.username          i_username, to_char(s.sid)          i_sid, to_char(s.serial#)      i_serial
from
v$session s, v$process p
where
s.paddr = p.addr
and
sid = (select sid from v$mystat where rownum = 1);  

1 row created.

SQL> select * from ORA$PTT_ADG_SESSIONS;

USERNAME    SID    SERIAL#
-------------------- ---------- ----------
HR    465      20742

SQL> update ORA$PTT_ADG_SESSIONS set USERNAME='NOBODY';

1 row updated.

SQL> select * from ORA$PTT_ADG_SESSIONS;

USERNAME    SID    SERIAL#
-------------------- ---------- ----------
NOBODY    465      20742

SQL> commit;

Commit complete.

SQL>  select * from ORA$PTT_ADG_SESSIONS;
select * from ORA$PTT_ADG_SESSIONS
              *
ERROR at line 1:
ORA-00942: table or view does not exist