【记各类高级sql使用记录】

本文记录了Oracle数据库的一些高级操作,包括如何查看归档日志、监控正在执行的SQL、终止卡住的SQL进程,以及解决ORA-02290错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle归档日志查看
SELECT
	A . NAME AS "日志存储位置",
	A .SPACE_LIMIT / 1024 / 1024 / 1024 AS "最大可存储空间(GB)",
	CAST (
		A .SPACE_USED / 1024 / 1024 AS DECIMAL (20, 2)
	) AS "已使用空间(MB)"
FROM
	(
		SELECT
			*
		FROM
			v$recovery_file_dest
	) A
Oracle查看正在运行的Sql
select sl.INST_ID,
       x.sid,
       x.USERNAME,
       x.SQL_ID,
       X.EVENT,
       x.session_time "会话小时",
       x.etime || 's' "etime",
       decode(TRUNC(sl.sofar / sl.totalwork * 100, 2),
              null,
              null,
              '****' || TRUNC(sl.sofar / sl.totalwork * 100, 2) || '%') "事物进度",
       decode(ROUND(sl.elapsed_seconds * (sl.totalwork - sl.sofar) /
                    sl.sofar),
              null,
              null,
              ROUND(sl.elapsed_seconds * (sl.totalwork - sl.sofar) /
                    sl.sofar) || 's') "剩余时间",
       o.object_name       "被锁的对象",
       avg_cputime         "平均cpu时间",
       avg_buffer          "平均逻辑读",
       avg_disk            "平均物理读",
       avg_sorts           "平均排序",
       EXECUTIONS          "执行次数",
       SQL_TEXT,
       sl.OPNAME             "实时操作",
       sl.TARGET             "操作对象",
       文件,,
       更新的行,
       DISK_READS,
       BUFFER_GETS,
       CPU_TIME,
       LAST_LOAD_TIME       "开始时间",
       LAST_ACTIVE_TIME     "最近活动时间",
       LOGON_TIME            "登录时间",
       MACHINE,
       PROGRAM,
       MODULE
  from (SELECT B.SID sid,
               B.USERNAME USERNAME,
               A.SQL_ID SQL_ID,
               B.EVENT,
               ROUND(B.LAST_CALL_ET / 3600) session_time,
               TRUNC(((A.ELAPSED_TIME / DECODE(EXECUTIONS, 0, 1, EXECUTIONS)) /
                     1000000),
                     2) etime,
               TRUNC((CPU_TIME / DECODE(EXECUTIONS, 0, 1, EXECUTIONS)) /
                     1000000) avg_cputime,
               ROUND(A.BUFFER_GETS /
                     DECODE(A.EXECUTIONS, 0, 1, A.EXECUTIONS)) avg_buffer,
               ROUND(A.DISK_READS / DECODE(A.EXECUTIONS, 0, 1, A.EXECUTIONS)) avg_disk,
               ROUND(A.SORTS / decode(a.executions, 0, 1, a.executions)) avg_sorts,
               A.EXECUTIONS EXECUTIONS,
               A.SQL_TEXT,
               A.DISK_READS,
               A.BUFFER_GETS,
               A.CPU_TIME,
               A.LAST_LOAD_TIME,
               A.LAST_ACTIVE_TIME,
               B.LOGON_TIME,
               B.MACHINE,
               B.PROGRAM,
               A.MODULE,
               b.ROW_WAIT_FILE# "文件",
               b.ROW_WAIT_BLOCK# "块",
               b.ROW_WAIT_ROW# "更新的行"
          FROM gV$SQLAREA A, gV$SESSION B
         WHERE EXECUTIONS >= 0
           AND B.STATUS = 'ACTIVE'
           AND A.HASH_VALUE = B.SQL_HASH_VALUE
           AND A.SQL_ID = B.SQL_ID
         ORDER BY avg_cputime   DESC,
                  A.BUFFER_GETS DESC,
                  A.EXECUTIONS  DESC,
                  A.SQL_ID) x
  left join gv$session_longops sl
    on x.sid = sl.sid
   and sl.sofar != sl.totalwork
  left join v$locked_object lo
    on x.SID = lo.session_id
  left join dba_objects o
on o.object_id = lo.object_id;


Oracle 杀死卡住的sql
SELECT b.sid oracleID,
       b.username 所属用户名,
       b.serial#,
       spid 操作系统ID,
       paddr,
       sql_text 正在执行的SQL,
       b.machine 计算机名称
FROM v$process a, v$session b, v$sqlarea c
WHERE a.addr = b.paddr
   AND b.sql_hash_value = c.hash_value; 


alter system kill session 'sid,serial#';--杀死进程
Oracle ORA-02290: 违反检查约束条件
SELECT * from USER_CONS_COLUMNS WHERE TABLE_NAME=TBNAME;--查询所有约束 
ALTER TABLE ZGSM_MAIL DROP CONSTRAINT SYS_C0012948--删除对应约束
### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值