精华内容
参与话题
问答
  • Oracle数据库运维

    千次阅读 2019-08-07 15:41:41
    1、未提交事务引起的表的行锁 1.1、判断哪个SESSION执行了DML(Insert/Update/Delete) 但是未提交 (Commit ),引起的行锁 --找到修改了数据,但是未提交的Session,选择WAIT_CALSS='Idle',也就是Session处于...

    1、未提交事务引起的表的行锁

    1.1、判断哪个SESSION执行了DML(Insert/Update/Delete) 但是未提交 (Commit ),引起的行锁

    --找到修改了数据,但是未提交的Session,选择WAIT_CALSS='Idle',也就是Session处于休息状态,但是有锁定的表
    SELECT A.SID,A.SERIAL#,A.USERNAME,A.EVENT,A.WAIT_CLASS,A.SECONDS_IN_WAIT,A.PREV_EXEC_START,b.LOCKED_MODE,C.OWNER,C.OBJECT_NAME,C.OBJECT_TYPE
    FROM V$SESSION A
    INNER JOIN V$LOCKED_OBJECT B
    ON A.SID=b.SESSION_ID
    INNER JOIN DBA_OBJECTS C
    ON B.OBJECT_ID=c.OBJECT_ID
    WHERE A.WAIT_CLASS='Idle'
    AND A.SECONDS_IN_WAIT>10/*SESSION空闲后一段时间还锁定的才算有问题,这里随便给了个数值10秒*/

    如果确认这些SESSION确实有问题,可以直接KILL掉,传入前面语句的SID和SERIAL#

    ALTER SYSTEM KILL SESSION 'SID,SERIAL#'
    
    如上图,我杀了这两个
    ALTER SYSTEM KILL SESSION '139,3558' ;

    注:ORACLE有个很有趣的地方,就是KILL SESSION的时候需要填“”SERIAL#“,是为了避免刚刚查询的时候获得了一个SID,然后你打算杀掉他,在这个时间之间,打算杀掉的SESSION结束了断开连接,然后新的SESSION复用了这个SID,也就是避免误杀,SQL SERVER 直接KILL可以了。

    内容摘自:Oracle未提交事务引起的锁

    2、判断哪些SESSION被阻塞了,且定位到是谁阻塞了,是由于哪个表哪个行引起的阻塞

    --当SESSION被阻塞,通过ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#这几个字段找到ROWID,然后通过ROWID找到被锁定的记录
    SELECT SID,SERIAL#,AUDSID,PADDR,USER#,USERNAME,EVENT,WAIT_CLASS,SECONDS_IN_WAIT,ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#,
            BLOCKING_SESSION_STATUS,BLOCKING_INSTANCE,BLOCKING_SESSION,C.OWNER,C.OBJECT_NAME,C.OBJECT_TYPE
            ,dbms_rowid.rowid_create(1,ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#)
    FROM V$SESSION A
    INNER JOIN V$LOCKED_OBJECT B
    ON A.SID=b.SESSION_ID
    INNER JOIN DBA_OBJECTS C
    ON B.OBJECT_ID=c.OBJECT_ID
    WHERE BLOCKING_SESSION IS NOT NULL ;

    通过上面返回的OBJECT_NAME 和ROWID,知道是由于那个行引起的阻塞

    SELECT * FROM 前面返回的表名称
    where ROWID=前面返回的ROWID

    内容摘自:Oracle未提交事务引起的锁

    展开全文
  • oracle 数据库运维

    2017-03-24 15:05:24
    oracle 数据库运维sql1.登录dba用户命令登录数据库服务器,打开命令窗口进行输入sqlplus / as sysdba2.用户命令 删除用户  DROP USER `****` CASCADE; DROP SCHEMA `****` CASCADE; 创建用户 create user `...

    oracle 数据库运维sql

    1.登录dba用户命令

    登录数据库服务器,打开命令窗口进行输入

    sqlplus / as sysdba

    2.用户命令

    1. 删除用户
     DROP USER `****` CASCADE;
    
     DROP SCHEMA `****` CASCADE;
    1. 创建用户
    create user `username` identified by `password`;
    1. 用户权限
    grant create session,create table,unlimited tablespace,dba to `username`;
    1. 配置用户表空间
    alter user `username` default tablespace `****`;
    alter user `username` temporary tablespace `****`;

    3.表空间命令

    1. 查询表空间数据库文件信息
    select * from `dba_data_files`;
    1. 查询表空间使用信息
    SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
      D.TOT_GROOTTE_MB "表空间大小(M)",
      D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
      TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
      F.TOTAL_BYTES "空闲空间(M)",
      F.MAX_BYTES "最大块(M)"
      FROM (SELECT TABLESPACE_NAME,
      ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
      ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
      FROM SYS.DBA_FREE_SPACE
      GROUP BY TABLESPACE_NAME) F,
      (SELECT DD.TABLESPACE_NAME,
       ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
      FROM SYS.DBA_DATA_FILES DD
      GROUP BY DD.TABLESPACE_NAME) D
      WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
      ORDER BY 1;
    1. 创建表空间
    CREATE TABLESPACE `****` datafile `'****.dbf'` SIZE `500M` AUTOEXTEND ON NEXT `50M` MAXSIZE `5G`;
    1. 创建临时表空间
    CREATE TEMPORARY TABLESPACE `****`  TEMPFILE `'****.dbf'` SIZE `50M`  AUTOEXTEND ON NEXT `50M` MAXSIZE `2G`;
    1. 扩展表空间
    ALTER TABLESPACE `****` ADD DATAFILE `'****.dbf'` SIZE `5G` AUTOEXTEND ON NEXT `50M` MAXSIZE `20G`;
    展开全文
  • 因为工作中经常接触 Oracle 数据库,现在在这里整理一些 Oracle 数据库常用的运维语句。 1.查看对象引用关系 (1)以DBA方式查询 --查询引用对象 SELECT * FROM dba_dependencies WHERE referenced_name = '<...

    因为工作中经常接触 Oracle 数据库,现在在这里整理一些 Oracle 数据库常用的运维语句。

    1.查看对象引用关系

    (1)以DBA方式查询

    --查询引用对象 
    SELECT * FROM dba_dependencies WHERE referenced_name = '<object_name>'; 
    --查询引用的相关语句 
    SELECT * FROM dba_source WHERE text like '%<object_name>%';

    (2)以普通数据库用户形式查询

    --查询引用对象 
    SELECT * FROM all_dependencies WHERE referenced_name = '<object_name>'; 
    --查询引用的相关语句 
    SELECT * FROM user_source WHERE text like '%<object_name>%';

     

    2.查看/编译失效对象

    --检查失效对象 
    SELECT * FROM dba_objects WHERE status = 'INVALID'; 
    SELECT * FROM dba_invalid_objects; 
    --编译失效对象 
    BEGIN 
        dbms_utility.compile_schema('<username>', false); 
    END; 
    --查询编译报错信息 
    SELECT * FROM dba_errors WHERE owner = '<username>';

     

    3.查看被锁的对象和解锁

    --查看被锁的对象

    SELECT b.owner,b.object_name,a.session_id,a.locked_mode FROM v$locked_object a,dba_objects b WHERE b.object_id = a.object_id;

    --查看哪个用户哪个进程造成死锁

    SELECT b.username,b.sid,b.serial#,logon_time FROM v$locked_object a,v$session b WHERE a.session_id = b.sid order by b.logon_time;

    --查看连接的进程

    SELECT sid, serial#, username, osuser FROM v$session;

    --查出锁定对象的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

    SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine, s.terminal, s.logon_time, l.type FROM v$session s, v$lock l WHERE s.sid = l.sid AND s.username IS NOT NULL ORDER BY sid;

    这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

    --杀掉进程 sid,serial#

    ALTER system kill session 'sid,serial#' immediate; --sid与serial#为上面查询出的值

     

    4.存储过程编译卡死

    解决方法如下:

    (1)查V$DB_OBJECT_CACHE

    SELECT * FROM V$DB_OBJECT_CACHE WHERE name='XXXX_PKG' AND LOCKS!='0';

    注意:XXXX_PKG 为存储过程的名称。

    发现 locks=2

    (2)按对象查出sid的值

    SELECT /*+ rule*/  SID from V$ACCESS WHERE object='XXXX_PKG';

    注意:XXXX_PKG 为存储过程的名称。

    (3)查sid,serial#

    SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';

    (4)杀session

    ALTER system kill session 'sid值,serial#值' immediate;

     

    5.Oracle表空间相关

    查询表空间使用情况: 

    SELECT a.tablespace_name,
            a.bytes / 1024 / 1024 "sum MB",
            (a.bytes - b.bytes) / 1024 / 1024 "used MB",
            b.bytes / 1024 / 1024 "free MB",
            round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "used%"
       FROM (SELECT tablespace_name, sum(bytes) bytes
               FROM dba_data_files
              GROUP BY tablespace_name) a,
            (SELECT tablespace_name, sum(bytes) bytes, max(bytes) largest
               FROM dba_free_space
              GROUP BY tablespace_name) b
      WHERE a.tablespace_name = b.tablespace_name
      ORDER BY ((a.bytes - b.bytes) / a.bytes) DESC;

    表空间扩展:

    (1)查看表空间的名字及文件所在位置:

    SELECT tablespace_name,
            file_id,
            file_name,
            round(bytes / (1024 * 1024), 0) total_space
       FROM sys.dba_data_files
      ORDER BY tablespace_name

    (2)通过增大所需表空间数据文件大小来扩展表空间

    ALTER database datafile '表空间位置' resize 新的尺寸

    例如:

    ALTER database datafile '\oracle\oradata\xxx_data10.dbf' resize 4000m

    (3)通过增加表空间数据文件个数来扩展表空间

    ALTER tablespace 表空间名称 add datafile '新的数据文件地址' size 数据文件大小

    例如:

    ALTER tablespace ESPS_2008 add datafile '\oracle\oradata\xxx_data11.dbf' size 1000m

    (4)设置表空间自动扩展

    ALTER database datafile '数据文件位置' autoextend on next 自动扩展大小 maxsize 最大扩展大小

    例如:

    ALTER database datafile '\oracle\oradata\xxx_data11.dbf' autoextend on next 100m maxsize 10000m

     

    6.查看数据库连接数

    SELECT count(*) FROM v$session;

     

    7.用户锁定

    --查询数据库用户状态
    SELECT username,account_status FROM dba_users b WHERE b.username=upper('<username>');
    --解锁
    ALTER user <username> account unlock;
    --解开EXPIRED
    ALTER user <username> identified by sh; 
    ALTER user <username> identified by '&pw';

    展开全文
  • oracle数据库运维指令

    2019-03-15 13:40:59
    1. 查看oracle数据库当前连接数 select count(*) from v$session 2. 查看当前并发数量 Select count(*) from v$session where status='ACTIVE' 3. 数据库允许的最大连接数 select value from v$parameter ...

    1. 查看oracle数据库当前连接数

    select count(*) from v$session

    2. 查看当前并发数量

    Select count(*) from v$session where status='ACTIVE'

    3. 数据库允许的最大连接数

     select value from v$parameter where name = 'processes' 

    4. 查看每个用户的连接数量

    select username,count(username) from v$session where username is not null group by username;

    5. 修改最大连接数

    alter system set processes = 300 scope = spfile;

    6. 查看当前用户所执行的语句,耗时,机器mac

    SELECT
      osuser, a.username,cpu_time/executions/1000000||'s',
     sql_fulltext,machine
    from v$session a, v$sqlarea b
    where a.sql_address =b.address 
    order by cpu_time/executions desc;

    7. 查看最近所做的操作

    select * from v$sql

     

    展开全文
  • 查看Oracle数据库的数据总条数和数据库占用的空间 在SQL plus中使用sys账户登录系统 关闭和启动数据库 数据库监听程序常用操作 设置数据库字符编码方式 查看Oracle数据库的数据总条数和数据库占用的空间 ...
  • 1、查看可以收缩的数据文件, select * from dba_free_space where file_id in ( select file_id from dba_free_space group by file_id having count(0)=1 ); select * from dba_data_files where file_id in ( ...
  • 简介:「智能运维大数据平台」是一款开箱即用的运维监控平台,通过特有的平台功能可以将企业的基础架构、应用程序、日志管理结合在一起,提供统一采集、统一存储、关联分析、统一监控企业业务保障能力,保障企业业务...
  • Oracle数据库运维经验(一)

    千次阅读 2019-03-15 14:28:51
    create tablespace boyuyun datafile 'G:\Oracle\xedatas\boyuyun.dbf' size 512M autoextend on next 32M maxsize unlimited logging extent management local autoallocate segment space management auto;...
  • oracle 数据库运维知识

    2017-12-13 15:46:00
    1、在数据库中连接用某个用户连接数据库报错: Product: DbVisualizer Pro 9.1.1 Build: #2063 (2013/10/01 12:27) Java VM: Java HotSpot(TM) Client VM Java Version: 1.7.0_40 Java Vendor: Oracle ...
  • Oracle 数据库在安装并正常使用之后,需要查看的一些细节配置,会影响到后期使用过程中的性能和后期影响后期维护; 1.数据库密码的有效期; 2.表空间自增的最小粒度; 3.数据库Service对客户端的兼容性配置; 4....
  • oracle数据库运维服务

    2016-02-17 13:52:27
    Oracle数据库安装、升级、部署、迁移、数据备份恢复、日常运维、性能优化、DataGuard部署、RAC部署、GoldenGate部署、SQL语句调优QQ:2450503363专业Lnux服务器代维护 - 上海个人兼职Linux、MySQL、Oracle技术一线...
  • Oracle 1、查询oracle的连接数 select count(*) from v$session; 2、查询oracle的并发连接数 4select count(*) from v$session where status='ACTIVE'; 3、查看不同用户的连接数 select username,count...
  • Oracle数据库运维、备份常用指令

    千次阅读 2016-12-29 11:45:58
    Oracle数据库运维、备份常用指令1. Oracle数据泵备份导出1.1 准备工作在linux系统下创建导出结果存放的文件夹,切记要切换到oracle用户创建,否则会出现权限问题。su - oracle mkdir /home/oracle/dwcr_dumps如果...

空空如也

1 2 3 4 5 ... 20
收藏数 1,110
精华内容 444
关键字:

oracle数据库运维