技术总结(一)

上一篇 / 下一篇  2010-01-29 15:39:09 / 个人分类:DB

1.      管理数据库的时候经常会遇到UNDOTBS01.DBF占用了巨大的空间,甚至能够达到几G

解决办法:(1)以sysdba身份登陆oracle

2--创建UNDO TABLESPACE

                             CREATE UNDO TABLESPACE UNDOTBS2 DATAFILE 'D:\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF' SIZE100M REUSEAUTOEXTENDON;

                            --设置新表空间为UNDO_TABLESPACE

                           ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;

                           --删除旧表空间

                           DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS;

                           --查看所有表空间

                         SELECT * FROM DBA_TABLESPACES;

                        完成后删除D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF,也许此时删不掉,需要shutdown数据库后再删除.

                        Undo表空间据说是数据库的一个撤销表空间,具体情况还不太清楚,呵呵,有待以后研究。

 

2.      查看表被锁和解锁

这种情况,项目中应该会经常遇到。

解决办法:

--查看被锁的表:  

select  p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name  from  v$process  p,v$session  a,  v$locked_object  b,all_objects  c  where  p.addr=a.paddr  and  a.process=b.process  and  c.object_id=b.object_id  

或者

 SELECT A.OWNER,

      A.OBJECT_NAME,

      B.XIDUSN,

      B.XIDSLOT,

      B.XIDSQN,

      B.SESSION_ID,

      B.ORACLE_USERNAME,

      B.OS_USER_NAME,

      B.PROCESS,

      B.LOCKED_MODE,

      C.MACHINE,

      C.STATUS,

      C.SERVER,

      C.SID,

      C.SERIAL#,

      C.PROGRAM

 FROM ALL_OBJECTS A, V$LOCKED_OBJECT B, SYS.GV_$SESSION C

WHERE (A.OBJECT_ID = B.OBJECT_ID)

  AND (B.PROCESS = C.PROCESS)     

ORDER BY 1, 2;

 解锁:  

 alter  system    kill  session  '146';(其中146为锁住的进程号)

 

3.      数据库用户被锁

 在登陆时被告知test用户被锁

 1)用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间

  SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

   Session altered.

 2)查看具体的被锁时间

 SQL> select username,lock_date from dba_users where username='TEST';

    USERNAME                      LOCK_DATE

 

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

 

  TEST                      2009-03-10 08:51:03

 3)解锁

  SQL> alter user test account unlock;

   User altered.

 4)查看是那个ip造成的test用户被锁

    查看$ORACLE_HOME/network/admin/log/listener.log日志

10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0

10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0

 这样可知是上面10.69.1.11ip尝试多次失败登陆造成的被锁

 注:

 一般数据库默认是10次尝试失败后锁住用户

 1)查看FAILED_LOGIN_ATTEMPTS的值

          select * from dba_profiles

 2)修改为30

         alter profile default limit FAILED_LOGIN_ATTEMPTS 30;

 3)修改为无限次(为安全起见,不建议使用)

         alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;

 

4.      建立表空间自动增长

当准备海量数据的时候,建表空间时又不确定到底该设置多大,就可以将表空间设为自动增长,前提是你有足够的空间来支持。

CREATE TEMPORARY TABLESPACE TBS_CSP_BS_TEMP

TEMPFILE '/local/dev/bs/rlv_dat009' SIZE20M AUTOEXTEND ON NEXT5M MAXSIZEUNLIMITEDEXTENT MANAGEMENT LOCAL UNIFORM. SIZE10M;

自动增长,每次增长5M,增长无限制。

 

 5.      修改表空间为自动增长

--sys用户登录查出名字以'TBS_CSP_CC_'开头的表空间文件

select *from dba_data_files t where t.tablespace_name like 'TBS_CSP_CC_%';

--修改此表空间文件为自动增长

alter database datafile 'D:\APP\ADMINISTRATOR\ADMIN\DEV\RLV_CCDAT002' autoextend on next5M maxsize unlimited;

 

6.      修改优化器规则

sys用户登录

--修改优化器规则为choose规则

alter system set optimizer_mode=choose scope=spfile;

Oracle11g中是数据库自动选择最优的优化器

 

 7.      远程重启windows机器

cmd

net use \\10.41.24.16\ipc$

shutdown -f -r -m\\10.41.24.16

 

8.      重启数据库问题

简要描述:数据库被配置成共享数据库模式(shared server)

登陆数据库,然后启动数据库,发生的错误,具体过程如下:

SQL> connect test@wm as SYSDBA

Enter password:

Connected.

SQL> startup;

ORA-00106: cannot startup/shutdown database when connected to a dispatcher

原因:

要启动(STARTUP/关闭(SHUTDOWN)数据库,必须使用专有服务器连接(Dedicatied Server)。使用共享服务器连接的用户无法启动和关闭数据库。

解决办法:

修改客户端的网络配置文件tnsnames.ora

1)找到tnsnames.ora文件。

tnsnames.ora文件的位置由环境变量TNS_ADMIN指定,如果没有设置这个环境变量,则默认的位置是:

$ORACLE_HOME/network/admin(unix平台)

或者

%ORACLE_HOME%\network\admin(windows平台)

其中,ORACLE_HOME表示ORACLE的主目录(ORACLE HOME)

2)修改tnsnames.ora中的网络服务名(Net Service Name)WM的配置

WM

WM =

 (DESCRIPTION =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.33)(PORT = 1522))

  )

  (CONNECT_DATA =

    (SERVICE_NAME = wm)

  )

 )

 

改成

 

WM =

 (DESCRIPTION =

  (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.200.33)(PORT = 1522))

  )

  (CONNECT_DATA =

    (SERVICE_NAME =wm)

    (SERVER=dedicated)

  )

 )

SERVER=dedicated表示客户端请求的总是专有数据库(dedicated server)连接。

3)重新登陆数据库,然后启动数据库


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-18  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 4040
  • 日志数: 6
  • 建立时间: 2009-11-06
  • 更新时间: 2010-03-23

RSS订阅

Open Toolbar