实验一:背景和目的
如果用户user1的默认表空间是tb1,然后user1对应的模式下有很多数据库对象(表),然后你让tb1处于offline,那么我user1是否可以访问数据库;如果可以访问的话,对user1下的数据库对象是否可读可写?
实验二:背景和目的
数据库是挂起状态(SUSPEND)时,当有会话往数据库时写入数据时必然卡住,那么当数据库open时,数据库是否可以将之前挂起状态未写入的数据在开库后以正常的顺序的写入数据[包括DDL和DML]。
实验一脚本
spool /home/dmdba/dmdbms/data/DAMENG/test.sql
set linesize 500;
set lineshow on;
set autocommit on;
conn SYSDBA/Liaotao941103;
drop table test_user.t28 purge;
drop user test_user CASCADE;
drop tablespace test_tab;
create tablespace test_tab datafile 'test_db.dbf' size 32;
create user test_user IDENTIFIED by "Liaotao941103" default tablespace "TEST_TAB";
grant DBA,PUBLIC,RESOURCE,VTI to TEST_USER;
create table test_user.t28 (c1 int);
alter TABLESPACE TEST_TAB OFFLINE;
conn test_user/Liaotao941103;
insert into test_user.t28 values(1);
select * from test_user.t28;
spool off;
实验一结论:当表空间tb1处于offline状态,则哪怕用户user1的默认表空间是offline的,但是其仍然可以登录数据库,但是此表空间的数据库对象是处于不可读不可写的状态。
下面是实验一相关脚本的spool导出的结果
SQL> set linesize 500;
SQL> set lineshow on;
SQL> set autocommit on;
SQL> conn SYSDBA/Liaotao941103;
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.692(毫秒)
SQL> drop table test_user.t28 purge;
操作已执行
已用时间: 43.764(毫秒). 执行号:400.
SQL> drop user test_user CASCADE;
操作已执行
已用时间: 34.124(毫秒). 执行号:401.
SQL> drop tablespace test_tab;
操作已执行
已用时间: 101.354(毫秒). 执行号:402.
SQL> create tablespace test_tab datafile 'test_db.dbf' size 32;
操作已执行
已用时间: 15.901(毫秒). 执行号:403.
SQL> create user test_user IDENTIFIED by "Liaotao941103" default tablespace "TEST_TAB";
操作已执行
已用时间: 5.354(毫秒). 执行号:404.
SQL> grant DBA,PUBLIC,RESOURCE,VTI to TEST_USER;
操作已执行
已用时间: 2.512(毫秒). 执行号:405.
SQL> create table test_user.t28 (c1 int);
操作已执行
已用时间: 2.631(毫秒). 执行号:406.
SQL> alter TABLESPACE TEST_TAB OFFLINE;
操作已执行
已用时间: 90.464(毫秒). 执行号:407.
SQL> conn test_user/Liaotao941103;
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 3.733(毫秒)
SQL> insert into test_user.t28 values(1);
insert into test_user.t28 values(1);
[-3408]:表空间[TEST_TAB]处于脱机状态.
已用时间: 2.169(毫秒). 执行号:0.
SQL> select * from test_user.t28;
select * from test_user.t28;
[-3408]:表空间[TEST_TAB]处于脱机状态.
已用时间: 0.477(毫秒). 执行号:0.
SQL> spool off;
实验二脚本:
--会话1
select sysdate from dual;
alter DATABASE SUSPEND;
--会话2
select sysdate from dual;
create table t28 (c1 int);
--会话3
select sysdate from dual;
insert into t28 values(1);
commit;
--会话1
alter DATABASE open;
select * from t28;
实验二结论:数据库是挂起状态(SUSPEND)时,当有会话往数据库时写入数据时必然卡住,那么当数据库open时,可以将挂起状态未提交的数据正常写入。
实验截图
会话一:
会话二:
会话三: