查询相关信息:
SQL> select INSTANCE_NAME from v$instance;
SQL> select name from v$database;
SQL> select tablespace_name from dba_tablespaces;
SQL> select table_name from dba_all_tables where tablespace_name='USERS';
SQL> select table_name from dba_all_tables where tablespace_name='USERS' AND TABLE_NAME LIKE 'X%';
SQL> SELECT FILE_NAME,TABLESPACE_NAME,BYTES FROM DBA_DATA_FILES;
FILE_NAME TABLESPACE_NAME BYTES
/orac/oradata/ztgame/users01.dbf USERS 10485760
/orac/oradata/ztgame/users02.dbf USERS 2097152
/orac/oradata/ztgame/sysaux01.dbf SYSAUX 262144000
/orac/oradata/ztgame/undotbs01.dbf UNDOTBS1 31457280
/orac/oradata/ztgame/system01.dbf SYSTEM 503316480
/orac/oradata/ztgame/example01.dbf EXAMPLE 104857600
查询实例相关信息:
select * from v$instance;
查询数据库相关信息:
select * from v$database;
查看所有表:
select * from tab;
查看所有表及其属性(所有者,所属表空间等):
SELECT * FROM ALL_TABLES WHERE OWNER='ZHAOHANG';
表存储位置:(所有表/系统表/用户表)
SELECT * FROM ALL_TABLES;
SELECT * FROM DBA_TABLES;
SELECT * FROM USER_TABLES;
查看表结构:
desc xinxi;
查看表中内容:
select * from XINXI;
查看所有表空间及相关信息,包括物理文件位置:
select * from dba_data_files;
查看表属于哪个表空间:
select TABLESPACE_NAME from all_tables where table_name='XINXI';
增大表空间数据文件:
alter database datafile '/orac/oradata/ztgame/users01.dbf' resize 10M;
增加表空间数据文件:
alter tablespace USERS add datafile '/orac/oradata/ztgame/users02.dbf' size 2M;
查看表空间使用情况:
select dbf.tablespace_name,
dbf.totalspace "TOTAL(M)",
dbf.totalblocks "TOTAL(BLOCK)",
dfs.freespace "FREE(M)",
dfs.freeblocks "FREE(BLOCK)",
(dfs.freespace / dbf.totalspace) * 100 "FREE(%)"
from (select t.tablespace_name,
sum(t.bytes) / 1024 / 1024 totalspace,
sum(t.blocks) totalblocks
from dba_data_files t
group by t.tablespace_name) dbf,
(select tt.tablespace_name,
sum(tt.bytes) / 1024 / 1024 freespace,
sum(tt.blocks) freeblocks
from dba_free_space tt
group by tt.tablespace_name) dfs
where trim(dbf.tablespace_name) = trim(dfs.tablespace_name);
**
归档模式和非归档模式分别是数据库运行的两种模式,归档模式将会对历史的 Redo log 进行归档保存(用来进行故障恢复),需要占用较大的磁盘空间,而非归档模式下 Redo log file 以覆盖的方式循环使用。
查看归档日志是否启用:
SQL> archive log list;
更改数据库为非归档日志模式:
shutdown immediate
startup mount
alter database noarchivelog;
alter database open;
更改数据库为归档日志模式:
shutdown immediate
startup mount
alter database archivelog;
alter database open;
--------------------------------------------------------------------------------------------
归档模式和非归档模式下模拟数据库回档(数据文件和控制文件全回档)--归档和非归档做法相同:
(将redolog删除,只留下数据文件和控制文件,模拟已经将数据文件和控制文件回退到之前的备份)
shutdown immediate
startup mount
recover database until cancel; 将数据库置为cancel模式
alter database open resetlogs; 重新复位初始化日志文件,完成后日志已经被成功生成
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
模拟某个表空间损坏,用之前备份还原单独表空间(表空间离线只能在归档日志时使用):
首先在关闭数据库的情况下,在os级别做USER01.DBF表空间的备份,然后启动数据库,创建表,这样可以对控制文件和USER表空间做修改:
create table zhaohang.testtable as select * from zhaohang.XINXI;
将刚USER表空间删除,启动数据库,发现启动失败,并提示USER文件需要介质恢复
shutdown immediate
startup 虽然启动失败,但是已经启动到了mount的状态
select * from v$recover_file; 查询需要恢复的文件
select * from v$recovery_log; 查询恢复文件所需要的log
alter database datafile 8 offline; 将文件离线后,将USER表空间恢复回去
recover datafile 8; 修复该文件
alter database datafile 8 online; 将文件置于在线状态
alter database open; 恢复完成后发现不是回档的表空间,而是最新的表空间,因为有archivelog在起作用
如果恢复文件的时候需要恢复的文件没有拷贝到原来文件所在目录,则需要用下面方式通知控制文件文件的物理位置:
alter database rename file 'D:\USERS01.DBF' to 'D:\ORACLE\ORADATA\FOX\USERS01.DBF';
--------------------------------------------------------------------------------------------
模拟system表空间坏掉(在遇到问题时最好能退出sqlplus尝试重新登入):
首先备份 system.dbf 文件,然后删除表,模拟一些对system表空间的操作,之后关闭数据库,删除system表空间,重新尝试启动数据库:
drop table zhaohang.XINXI; 此时其实是模拟对SYSTEM表空间进行了读写操作
shutdown immediate
startup mount
alter database open;
recover datafile 1;
alter database datafile 1 online;
alter database open;
shutdown immediate 删除SYSTEM01.DBF模拟SYSTEM表空间损坏,用之前备份的文件替代
startup mount
alter database datafile 8 offline;
alter database open;
recover datafile 8;
alter database datafile 8 online;
阅读(1283) | 评论(0) | 转发(0) |