Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315953
  • 博文数量: 240
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-04 18:14
文章分类

全部博文(240)

文章存档

2017年(8)

2014年(4)

2013年(15)

2012年(4)

2011年(14)

2010年(55)

2009年(140)

我的朋友

分类: Oracle

2009-03-19 17:06:32

查询相关信息:
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) |
给主人留下些什么吧!~~