1.数据生成
create tablespace tps_sjzt datafile '/dm/mdbms/data/DAMENG1/tps_sjzt.DBF' size 256 autoextend on;
SQL> create user sjzt identified by sjzt#1234 default tablespace tps_sjzt;
操作已执行
已用时间: 7.352(毫秒). 执行号:500.
resource 权限:可以创建数据库对象,对有权限的数据库对象进行数据操纵
grant resource to sjzt;
--或者通过如下授权
grant create table to sjzt;
grant create view to sjzt;
grant create trigger to sjzt;
grant create procedure to sjzt;
grant insert table to sjzt;
grant update table to sjzt;
grant delete table to sjzt;
grant select table to sjzt;
grant references table to sjzt;
grant dump table to sjzt;
grant execute procedure to sjzt;
2.创建数据
conn sjzt/"sjzt#1234"
create table sjzt_tab1(id int,name varchar(20));
SQL> select TABLE_NAME,TABLESPACE_NAME from user_tables;
行号 TABLE_NAME TABLESPACE_NAME
---------- ---------- ---------------
1 SJZT_TAB1 TPS_SJZT
已用时间: 43.009(毫秒). 执行号:1101.
--造数据
begin
for i in 1..100 loop
insert into sjzt_tab1 values(i,i||'xsq1');
end loop;
commit;
end;
/
SQL> begin
for i in 1..100 loop
insert into sjzt_tab1 values(i,i||'xsq1');
end loop;
commit;
end; 2 3 4 5 6
7 /
DMSQL 过程已成功完成
已用时间: 2.879(毫秒). 执行号:1103.
SQL>
SQL>
SQL> select count(1) from sjzt_tab1;
行号 COUNT(1)
---------- --------------------
1 100
已用时间: 0.826(毫秒). 执行号:1104.
3.全库备份
dexp sysdba/dameng123 file=dmfull.dmp log=dmfull.log directory=/dm/dmback full=y
......
导出模式下的对象权限...
模式[SYSDBA]导出结束.....
成功导出 第10 个SCHEMA :SYSDBA
共导出 10 个SCHEMA
整个导出过程共花费 1.807 s
成功终止导出, 没有出现警告
--导出文件检查
[dmdba@dm1 dmback]$ ll
总用量 156
-rw-r--r--. 1 dmdba dinstall 137747 7月 25 17:13 dmfull.dmp
-rw-r--r--. 1 dmdba dinstall 17017 7月 25 17:13 dmfull.log
4.模拟删除数据文件
[dmdba@dm1 DAMENG1]$ rm -rf tps_sjzt.DBF
--检查数据
[dmdba@dm1 dmback]$ disql sysdba/dameng123@dameng1
服务器[192.168.1.20:5236]:处于普通打开状态
登录使用时间 : 3.049(ms)
disql V8
SQL>
SQL> select * from sjzt.sjzt_tab1;
行号 ID NAME
---------- ----------- ------
1 1 1xsq1
2 2 2xsq1
3 3 3xsq1
4 4 4xsq1
5 5 5xsq1
6 6 6xsq1
7 7 7xsq1
8 8 8xsq1
9 9 9xsq1
10 10 10xsq1
11 11 11xsq1
行号 ID NAME
---------- ----------- ------
12 12 12xsq1
13 13 13xsq1
14 14 14xsq1
15 15 15xsq1
16 16 16xsq1
17 17 17xsq1
18 18 18xsq1
19 19 19xsq1
20 20 20xsq1
21 21 21xsq1
22 22 22xsq1
--之所以能够查询到数据,是因为数据在内存中,还没有被刷入数据文件。
--重启数据库
[dmdba@dm1 arch]$ DmServiceDAMENG1 stop
Stopping DmServiceDAMENG1: [ OK ]
[dmdba@dm1 arch]$ DmServiceDAMENG1 start
Starting DmServiceDAMENG1: [ OK ]
disql sysdba/dameng123
SQL> desc v$database;
第119 行附近出现错误[-510]:系统处于MOUNT状态.
已用时间: 2.890(毫秒). 执行号:0.
SQL> desc v$instance;
第119 行附近出现错误[-510]:系统处于MOUNT状态.
已用时间: 2.820(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 27.875(毫秒). 执行号:0.
SQL> select status$ from v$database;
行号 STATUS$
---------- -----------
1 4
已用时间: 0.919(毫秒). 执行号:501.
虽然删除了数据文件,达梦数据库,依然可以打开。并可以查询数据库。
--同时也可以查询到数据。
SQL> select * from sjzt.sjzt_tab1;
select * from sjzt.sjzt_tab1;
[-3433]:表空间处于脱机状态.
已用时间: 1.229(毫秒). 执行号:0.
SQL> conn sjzt/"sjzt#1234"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 8.912(ms)
SQL> select table_name,tablespace_name from user_tables;
行号 TABLE_NAME TABLESPACE_NAME
---------- ---------- ---------------
1 SJZT_TAB1 TPS_SJZT
已用时间: 28.637(毫秒). 执行号:600.
SQL> select path from v$datafile;
行号 PATH
---------- -----------------------------------
1 /dm/mdbms/data/DAMENG1/SYSTEM.DBF
2 /dm/mdbms/data/DAMENG1/ROLL.DBF
3 /dm/mdbms/data/DAMENG1/TEMP.DBF
4 /dm/mdbms/data/DAMENG1/MAIN.DBF
5 /dm/mdbms/data/DAMENG1/BOOKSHOP.DBF
6 /dm/mdbms/data/DAMENG1/DMHR.DBF
6 rows got
--重新创建表空间数据文件,提示已经存在。
--目前文件已经被删除,数据库将其置为脱机状态。
SQL> create tablespace sjzt datafile '/dm/mdbms/data/DAMENG1/tps_sjzt.DBF' size 256 autoextend on;
create tablespace sjzt datafile '/dm/mdbms/data/DAMENG1/tps_sjzt.DBF' size 256 autoextend on;
[-2412]:数据文件已存在.
已用时间: 2.453(毫秒). 执行号:0.
--不允许直接删除
SQL> drop tablespace tps_sjzt;
drop tablespace tps_sjzt;
[-3412]:试图删除已经使用的表空间.
已用时间: 2.734(毫秒). 执行号:0.
--重建表空间。
SQL> drop user sjzt cascade;
操作已执行
已用时间: 42.405(毫秒). 执行号:703.
SQL> drop tablespace tps_sjzt;
操作已执行
已用时间: 13.158(毫秒). 执行号:704.
SQL> create tablespace sjzt datafile '/dm/mdbms/data/DAMENG1/tps_sjzt.DBF' size 256 autoextend on;
操作已执行
已用时间: 14.001(毫秒). 执行号:705.
--仅创建表空间即可。
--用户在全库导出时已经创建。
5.恢复数据
--执行全库导入。
--此时导入后,备份后的数据会丢失。
dimp sysdba/dameng123 file=dmfull.dmp log=dmfull2.log TABLE_EXISTS_ACTION=REPLACE
SQL> conn sjzt/"sjzt#1234"
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.710(ms)
SQL> select count(1) from sjzt_tab1;
行号 COUNT(1)
---------- --------------------
1 100
已用时间: 2.628(毫秒). 执行号:1900.
6.总结
达梦数据库在以外删除数据文件时,数据库修复比较方便。缺少数据文件,也能快速打开数据库进行业务操作,后续在恢复删除的数据文件。