oracle 实战二 之数据库掉电篇

时间:2021-09-04 07:57:04

数据库服务器掉电 是有 多悲惨 呢,真是不掉不知道,一掉哭不回呀。数据库服务器掉电是有多高的损坏率呢,据说是看 当是时候 那个 数据库的状态,i/o

操作什么的,就是不可预知的率,看人品靠运气。如果数据库正在i/o什么的,oracle有自己的内存神马的数据突然丢失,造成数据块损坏啥的正是太正常了,

可怜俺又是这样的悲剧了重装修复。数据安全是有多重要,客户对数据安全是有多不重视呢。不是硬盘损伤就是经常掉电,我的个神呀。

我该拿他们怎么办呢。

----------------------------------------------------

现象:数据库#startup mount

报错:ORA-00600: internal error code, arguments: [kccpb_sanity_check_2], [192126], [192113], [0x000000000], [], [], [], []

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

数据库掉电 文件损坏 有多少能够恢复的呢?网络上各种神贴,神一般的案例和处理方法。在此收录连接,待未来实践用。

1 oracle数据库掉电损坏的一些处理经验http://wenku.baidu.com/view/f19ea88b680203d8ce2f247e.html

2 案例解决:一次oracle掉电的处理过程 http://www.ixdba.net/article/22/497.html

---------------------------------------------------------------------------------------------------------------------------------------------------------------

由于是工作日,受时间影响 采取数据库最快的恢复途径,由于oracle 比较稳定 只是实例损坏,

而数据已有备份,因此采取删除实例重建数据库的方式。

1 调出dbca 删除实例 ,删除数据文件。

2 重建实例,重建表空间,调整表空间,重建用户。

3 导入数据,恢复应用。

4 服务器数据库参数的调整,数据备份控制文件备份。

----------------------------------------------------------------------------------

问题1 :#xhost + 无法识别的命令

答:#vncserver  #export DISPLSY=xd2009:1 (根据vncserver启动的信息 里边有SID:1)

   #xhost +  #su - oracle $export DISPLSY=你本机的ip:0.0  $dbca   成功。

一般情况下 只要2步

[oracle@localhost database]# xhost +

[oracle@localhost database]$ export DISPLAY=localhostip:0.0 (本地安装

问题2:plsql连接乱码

该如何确定编码呢

select * from nls_database_parameters;
select * from nls_instance_parameters

select * from nls_session_parameters

问题3 :删除已连接的数据库用户

select saddr,sid,serial#,paddr,username,status from v$session where username='gxjxgl';
alter system kill session'1020,998';
drop user XGXT cascade;

-------------------------------------------------------------------------------------------------------------------------------------------------------

附建表语句

-----增加用户表空间容量-------------------

select tablespace_name 表空间名,ct 字节数,fr 剩余空间,bfb 使用百分比 from (select a.tablespace_name ,a.ct ,b.fr ,replace(to_char((a.ct-b.fr)/a.ct*100,9990.99),' ') bfb  from (select  tablespace_name, sum(bytes)/1024/1024 as ct from dba_data_files group by tablespace_name) a,(select tablespace_name,sum(bytes)/1024/1024 as fr from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name
union all
select tablespace_name,sum(bytes_used),sum(bytes_free),replace(to_char(sum(bytes_used)/sum(bytes_used+bytes_free)*100,9990.99),' ') from V$TEMP_SPACE_HEADER group by tablespace_name ) 

---查询表空间使用率
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

----查询表空间使用路径

1、为这个表空间增加一个数据文件
 alter tablespace temp add datafile '/u1/oradata/userdata_002.ora' size 50m;  --Unix中
 alter tablespace system add datafile 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\SYSTEM03.DBF' size 50m;   --Windows NT中
 alter tablespace sysaux add datafile 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\SYSAUX02.DBF' size 100m; 
 alter tablespace users add datafile 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\USERS02.DBF' size 100m; 

---增加表空间文件

select name from v$tempfile;
select username,temporary_tablespace from dba_users;

 

----查看临时表空间的路径


2、重新调整数据文件的大小
SQL> alter database datafile '/u1/oradata/userdata_001.ora' resize 50M;  --Unix中
SQL> alter database datafile 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\TEMP01.DBF'  resize 2000M;  --Windows NT中


1.创建中转临时表空间
create temporary tablespace TEMP1 TEMPFILE 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\TEMP02.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  

2.改变缺省临时表空间 为刚刚创建的新临时表空间temp1
alter database default temporary tablespace temp1; 

3.删除原来临时表空间
drop tablespace temp including contents and datafiles;

4.重新创建临时表空间
create temporary tablespace TEMP TEMPFILE 'G:\ORACLENEW\PRODUCT\10.2.0\ORADATA\ZFXFZB\TEMP01.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  

5.重置缺省临时表空间为新建的temp表空间
alter database default temporary tablespace temp; 

6.删除中转用临时表空间
drop tablespace temp1 including contents and datafiles;

7.如果有必要,那么重新指定用户表空间为重建的临时表空间 
alter user arbor temporary tablespace temp;  

 

----------------------------------------------------------------

CREATE SMALLFILE
    TABLESPACE "ZF"
    LOGGING
    DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\ZF01.dbf' SIZE 2000M, 'D:\oracle\product\10.2.0\oradata\orcl\ZF02.dbf' SIZE 2000M AUTOEXTEND
    ON NEXT  500M MAXSIZE  20000M EXTENT MANAGEMENT LOCAL SEGMENT
    SPACE MANAGEMENT  AUTO

-- Create the user
create user ZFXFZB
  identified by ""
  default tablespace ZF
  temporary tablespace TEMP
  profile DEFAULT
  quota unlimited on zf;
-- Grant/Revoke role privileges
grant connect to ZFXFZB;
grant dba to ZFXFZB;
-- Grant/Revoke system privileges
grant unlimited tablespace to ZFXFZB;

-----权限管理
GRANT "CONNECT" TO "ZFXFZB";
GRANT "DBA" TO "ZFXFZB";
REVOKE UNLIMITED TABLESPACE FROM "ZFXFZB";
GRANT SELECT ANY TABLE TO ZFXFZB;
GRANT SELECT ANY SEQUENCE TO ZFXFZB;
GRANT SELECT ANY DICTIONARY TO ZFXFZB;
GRANT CREATE PUBLIC DATABASE LINK TO "ZFXFZB";
GRANT DROP PUBLIC  DATABASE LINK TO "ZFXFZB";