Oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

在删除列、或表的时候报错“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”,一般都是发生锁表造成的,或者上一条语句没有执行完成,阻塞造成了锁表;解决方法:找出锁表sidselect SESS.sid, SESS.SERIAL#, LO.ORACLE_USERNAME, LO.OS_USER_NAME, AO.OBJECT_NAME, LO.LOCKED_MODE from V$LOCKED_OBJECT LO, DBA_OBJECTs AO, V$SESSION SESS where AO.OBJECT_ID = LO.OBJE ......

ORA-01031权限不足解决方法

在Oracle11gR2数据库上,以DBA权限的账号执行存储过程报错,PL/SQL:ORA-01031:权限不足,如下图原因:1、ORACLE默认为定义者权限,定义者权限在存储过程中ROLE无效,需要显示授权。2、如果使用AUTHID CURRENT_USER关键字使用调用者权限,则编译时ROLE无效,运行时有效。解决办法:方法1:对存储过程来说,CREATE TABLE想使用CREATE ANY TABLE权限,而CREATE ANY TABLE权限来自DBA角色,默认情况下,虽然在会话环境中可见,但在存储过程中不可见(无效)。所以根据上面的第一条规则,可以显示地将CREATE ......

Oracle11g性能参数常用查询SQL

当前会话的SID,SERIAL#SELECT Sid, Serial# FROM V$session WHERE Audsid = Sys_Context('USERENV', 'SESSIONID');查询session的OS进程IDSELECT p.Spid "OS Thread", b.NAME "Name-User", s.Program, s.Sid, s.Serial#,s.Osuser, s.Machine FROM V$process p, V$session s, V$bgprocess b WHERE p.Addr = ......

Oracle性能相关常用脚本整理(SQL)

Oracle10g和11g下面都可以直接查询,SQL优化系统调优的时候经常会用到最多BUFFER_GETS开销的SQL语句TOP 10SET LINESIZE 190 COL sql_text FORMAT a100 WRAP SET PAGESIZE 100 SELECT * FROM ( SELECT sql_text, sql_id, executions, disk_reads, buffer_ ......

Oracle启用和禁用触发器

1、禁用 table_name 表的所有 triggeralter table table_name disable all triggers; 2、启用 table_name 表的所有 triggeralter table table_name enable all triggers; 3、禁用指定 triggeralter trigger trigger_name disable; 4、启用指定 triggeralter trigger trigger_name enable;5、查询xxx触发器具体内容SELECT text FROM ALL_SOURCE where ......

删除用户ORA-01940: cannot drop a user that is currently connected解决方法

出现场景:Oracle删除用户时报错SQL〉DROP USER USERXXXX CASCADEERROR:ORA-01940: cannot drop a user that is currently connected由于当前用户正连接到数据库,所以无法删除解决办法:1、查询此用户的会话进程,SQL〉SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='USERXXXX';SID SERIAL# ---------- ---------- 98 27341 23 181172、结束此用户的所有会话SQL>ALTER ......

impdp导入报错ORA-39001: invalid argument value

oracle导入dmp文件报错:impdp 'username/password' directory=DIR_DUMP_T1 table_exists_action=replace dumpfile=b30.dmp Import: Release 11.2.0.1.0 - Production on Wed Jan 10 16:20:14 2018Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g En ......

Oracle创建、查看、修改、赋权directory目录

创建directory一般是为了用数据泵导入/导出数据用,创建directory语法:CREATE [OR REPLACE] DIRECTORY directory AS 'pathname'; 例如: create or replace directory dumpdir as '/home/oracle/datatmp' 这样把目录/home/oracle/datatmp设置成dumpdir代表的directory 查看directory路径select * from dba_directories;修改directorycreate or replace directory ......

AWR报告的生成和分析

自动工作负载库(Automatic Workload Repository,AWR)自动工作负载库报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。AWR的由来:10g之前的oracle:用户的连接将产生会话,当前会话记录保存在v$session中;处于等待状态的会话会被复制一份放在v$session_wait中。当该连接断开后,其原来的连接信息在v$session和v$session_wait中就会被删除;oracle10g及之后保留下了v$session_wait中的这些信息,并多了v$active_session_history(ASH)视图,记录每个活动sess ......

ASH报告生成

ASH基于v$session每秒进行一次采样,记录当前活动会话等待事件(不活动的不采样)ASH通过内存所记录的数据是有限的,为了保存历史记录,引入了AWR,ASH信息采样被写到AWR中,ASH写满了以后会将信息写到AWR负载库,ASH数据完全写出是不可能的,一般只写收集数据量的10%,ASH内存中的信息通过v$active_session_history查询,而已经写出到AWR负载库的ASH信息,通过AWR基础表(wrh$active_session_hist)查询。ASH以v$active_session_history视图为基础,生成ASH报表ASH报告时间精确到分钟,提供比 ......

Oracle中修改表空间数据文件路径的两个方法

Oracle数据库的数据文件的位置和信息都被记录在控制文件中,rm或cp命令是不会也不可能更改控制文件记录的,这时必须通过alter操作去更改刷新数据库控制文件中数据文件的相关信息,以此确保数据库能够正常运行:方法1:1.将表空间脱机alter tablespace mars_base_data offline;2.复制数据文件到新的目录cp /data/app/oracle/oradata/test.dbf /data2/app/oracle/oradata/test.dbf

Oracle修改表空间大小并设置为自动增长

Oracle我在创建表空间的时候初始化大小为200M,当数据库中数据量达到这个值,再向数据库中导入数据就会报错,解决方法是扩展表空间。查看数据文件名及数据文件存放路径:select * from v$dbfile;查看表空间的名称及大小SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.table ......

Oracle查看当前session

查看当前不为空的连接select * from v$session where username is not null查看不同用户的连接数select username,count(username) from v$session where username is not null group by username

Oracle查询所有序列/触发器、存储过程、视图、表

方法一:Select object_name From user_objects Where object_type='TRIGGER'; --所有触发器Select object_name From user_objects Where object_type='PROCEDURE'; --所有存储过程Select object_name From user_objects Where object_type='VIEW'; --所有视图Select object_name From user_objects Where object_type='TABLE'; --所有 ......

Oracle中to_date() 与 to_char() 日期和字符串转换

to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配,否则会报错。to_date转的时候,如果要过滤的日期是20100519,转成yyyymmdd的格式标准日期格式之后,后面会拼上时分秒,默认为00:00:00即按照第二个参数的格式解释第一个参数。to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换。

Oracle使用exp完整备份脚本

目前使用的是exp完整备份,回头整理个expdp备份的,先导入oracle的环境变量,然后按时间导出dmp文件,最后压缩、删除,完整备份脚本如下:#!/bin/sh export ORACLE_BASE=/data/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=fuzhou export ORACLE_OWNER=fuzhou export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin export LANG=en_US.gbk exp ......

Oracle 11g adrci常用功能介绍

ADR(Automatic Diagnostic Repository)是Oracle 11g的一个存放数据库诊断日志、跟踪文件的目录,也作为ADR base。在实例中通过设置初始化参数DIAGNOSTIC_DEST来改变,这个参数是动态参数,修改这个参数后对应的目录和日志文件会立刻被生成并使用,默认在ORACLE_BASE下。Oracle 11g同时提供了一个ADRCI(ADR Command-Line Utility)命令行工具来查看ADR中的alert日志和trace信息,并生成健康报告,ADRCI工具在$ORACLE_HOME/bin下面,安装oracle 11g以后默认 ......