Oracle本地UNDO模式怎么实现

32次阅读
没有评论

共计 3188 个字符,预计需要花费 8 分钟才能阅读完成。

本文丸趣 TV 小编为大家详细介绍“Oracle 本地 UNDO 模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Oracle 本地 UNDO 模式怎么实现”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。

1 转换为共享 undo 模式 1.1 查询当前的模式:

SQL COLUMN property_name FORMAT A30
SQL COLUMN property_value FORMAT A30
SQL SELECT property_name, property_value
FROM database_properties
WHERE property_name =  LOCAL_UNDO_ENABLED 
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE

1.2 查看 ROOT 和自己定义的 pdb 对应的 undo 表空间

SELECT con_id, tablespace_name
FROM cdb_tablespaces
WHERE tablespace_name LIKE  UNDO% 
ORDER BY con_id;
 CON_ID TABLESPACE_NAME
---------- ------------------------------
 1 UNDOTBS1
 3 UNDOTBS1

2 切换为共享 undo 模式

SQL  SHUTDOWN IMMEDIATE;
SQL  STARTUP UPGRADE;
SQL  ALTER DATABASE LOCAL UNDO OFF;
SQL  SHUTDOWN IMMEDIATE;
SQL  STARTUP;

2.1 验证

SQL COLUMN property_name FORMAT A30
SQL COLUMN property_value FORMAT A30
SQL SELECT property_name, property_value
FROM database_properties
WHERE property_name =  LOCAL_UNDO_ENABLED 
 
PROPERTY_NAME PROPERTY_VALUE
----------------------------- ------------------------------
LOCAL_UNDO_ENABLED FALSE

虽然已经不是本地 undo 模式了,但是之前存在的 undo 表空间不会自动删除。如果碍事,要手动删除。

SQL SELECT con_id, tablespace_name
FROM cdb_tablespaces
WHERE tablespace_name LIKE  UNDO% 
ORDER BY con_id;
 CON_ID TABLESPACE_NAME
---------- ------------------------------
 1 UNDOTBS1
 3 UNDOTBS1

–删除多余的 undo 表空间

SQL ALTER SESSION SET CONTAINER = pdb1;
SQL SELECT file_name
FROM dba_data_files
WHERE tablespace_name =  UNDOTBS1 
----------------------------------------------------------------------------------------------------
/u02/app/oracle/oradata/cdb1/pdb1/undotbs01.dbf
SQL DROP TABLESPACE undotbs1;
Tablespace dropped.

随着所有老的 undo 表空间被移除了,现在该实例就是运行在共享 undo 模式上了。

3 切换为本地 undo 模式

利用上面的环境,重新切换回去。

查询

可以看到是运行在共享 undo 模式上,而且只有一个 undo 表空间。

SQL SELECT property_name, property_value
FROM database_properties
WHERE property_name =  LOCAL_UNDO_ENABLED 
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED FALSE
SQL SELECT con_id, tablespace_name
FROM cdb_tablespaces
WHERE tablespace_name LIKE  UNDO% 
ORDER BY con_id;
 CON_ID TABLESPACE_NAME
---------- ------------------------------
 1 UNDOTBS1

3.1 切换为本地 undo 模式

和切换为共享 undo 模式步骤相同。

SQL  SHUTDOWN IMMEDIATE;
SQL  STARTUP UPGRADE;
SQL  ALTER DATABASE LOCAL UNDO ON;
SQL  SHUTDOWN IMMEDIATE;
SQL  STARTUP;

3.2 验证

SQL COLUMN property_name FORMAT A30
SQL COLUMN property_value FORMAT A30
SQL SELECT property_name, property_value
FROM database_properties
WHERE property_name =  LOCAL_UNDO_ENABLED 
PROPERTY_NAME PROPERTY_VALUE
------------------------------ ------------------------------
LOCAL_UNDO_ENABLED TRUE

–可以看到 Oracle 自动为 PDB 创建了一个 undo 表空间

SQL SELECT con_id, tablespace_name
FROM cdb_tablespaces
WHERE tablespace_name LIKE  UNDO% 
ORDER BY con_id;
 CON_ID TABLESPACE_NAME
---------- ------------------------------
 1 UNDOTBS1
 3 UNDO_1

3.3 新创建一个数据库

可以看到新创建的数据库也是运行在本地 undo 模式上。

SQL CREATE PLUGGABLE DATABASE pdb2 ADMIN USER pdb_adm IDENTIFIED BY Password1;
SQL ALTER PLUGGABLE DATABASE pdb2 SAVE STATE;
SQL SELECT con_id, tablespace_name
FROM cdb_tablespaces
WHERE tablespace_name LIKE  UNDO% 
ORDER BY con_id;
 CON_ID TABLESPACE_NAME
---------- ------------------------------
 1 UNDOTBS1
 3 UNDO_1
 4 UNDOTBS1

读到这里,这篇“Oracle 本地 UNDO 模式怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计3188字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)