标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-01595 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,772)
- DB2 (22)
- MySQL (77)
- Oracle (1,612)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (166)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (69)
- Oracle Bug (8)
- Oracle RAC (54)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (29)
- Oracle备份恢复 (593)
- Oracle安装升级 (98)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (86)
- PostgreSQL (31)
- pdu工具 (6)
- PostgreSQL恢复 (10)
- SQL Server (32)
- SQL Server恢复 (13)
- TimesTen (7)
- 达梦数据库 (3)
- 达梦恢复 (1)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (39)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (22)
-
最近发表
- 由于空间满导致PostgreSQL数据库异常处理
- 一次非常幸运的ORA-600 16703(tab$被清空)故障恢复
- Oracle 19c 202507补丁(RUs+OJVM)-19.28
- 2025年的Oracle 8.0.5数据库恢复
- ORA-600 kokiasg1故障分析(obj$中核心字典序列全部被恶意删除)
- ORA-00756 ORA-10567故障数据0丢失恢复
- 数据库文件变成32k故障恢复
- tcp连接过多导致监听TNS-12532 TNS-12560 TNS-00502错误
- 文件系统格式化MySQL数据库恢复
- .sstop勒索加密数据库恢复
- 解决一次硬件恢复之后数据文件0kb的故障恢复case
- Error in invoking target ‘libasmclntsh19.ohso libasmperl19.ohso client_sharedlib’问题处理
- ORA-01171: datafile N going offline due to error advancing checkpoint
- linux环境oracle数据库被文件系统勒索加密为.babyk扩展名溯源
- ORA-600 ksvworkmsgalloc: bad reaper
- ORA-600 krccfl_chunk故障处理
- Oracle Recovery Tools恢复案例总结—202505
- ORA-600 kddummy_blkchk 数据库循环重启
- 记录一次asm disk加入到vg通过恢复直接open库的案例
- CHECKDB 发现了 N 个分配错误和 M 个一致性错误
分类目录归档:数据库
Oracle 10g绕过密码登陆数据库
0、数据库版本
SQL> select * from v$version; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod PL/SQL Release 10.2.0.4.0 - Production CORE 10.2.0.4.0 Production TNS for Linux: Version 10.2.0.4.0 - Production NLSRTL Version 10.2.0.4.0 - Production
1、Oracle 10g密码加密猜测
user$表中的password=hash(user||password)
SQL> create user xff identified by xifenfei; User created. SQL> create user xf identified by fxifenfei; User created. SQL> select name,password from user$ where name in('XF','XFF'); NAME PASSWORD ------------------------------ ------------------------------ XF 1B60F4BFF1DAB500 XFF 1B60F4BFF1DAB500
2、测试通过修改user$.password饶过oracle密码登陆
--创建两个可以登陆用户 SQL> grant connect to ab identified by xifenfei; Grant succeeded. SQL> grant connect to abc identified by xifenfei; Grant succeeded. --查看用户名和password内容 SQL> select user#,name,password from user$ where name in ('AB','ABC'); USER# NAME PASSWORD ---------- ------------------------------ ------------------------------ 63 AB 7AF07A2EFB054758 64 ABC 40C0E6EE497444B7 --修改ab用户的password内容和abc相同,即ab用户对应的密码应该为cxifenfei SQL> update user$ set password='40C0E6EE497444B7' where user#=63; 1 row updated. SQL> commit; Commit complete. SQL> select user#,name,password from user$ where name in ('AB','ABC'); USER# NAME PASSWORD ---------- ------------------------------ ------------------------------ 63 AB 40C0E6EE497444B7 64 ABC 40C0E6EE497444B7 --修改后登陆失败 SQL> conn ab/cxifenfei ERROR: ORA-01017: 用户名/口令无效; 登录被拒绝 Warning: You are no longer connected to ORACLE. SQL> conn / as sysdba Connected. --ab的user$.password被重设为原先值 SQL> select user#,name,password from user$ where name in ('AB','ABC'); USER# NAME PASSWORD ---------- ------------------------------ ------------------------------ 63 AB 7AF07A2EFB054758 64 ABC 40C0E6EE497444B7 SQL> update user$ set password='40C0E6EE497444B7' where user#=63; 1 row updated. SQL> commit; Commit complete. SQL> select user#,name,password from user$ where name in ('AB','ABC'); USER# NAME PASSWORD ---------- ------------------------------ ------------------------------ 63 AB 40C0E6EE497444B7 64 ABC 40C0E6EE497444B7 --刷新databuffer和shared_pool SQL> alter system flush buffer_cache ; System altered. SQL> alter system flush shared_buffer; alter system flush shared_buffer * ERROR at line 1: ORA-02000: missing SHARED_POOL/BUFFER_CACHE/GLOBAL CONTEXT keyword SQL> alter system flush shared_pool; System altered. --修改ab的密码为cxifenfei成功 SQL> conn ab/cxifenfei Connected. SQL> show user; USER is "AB"
3、绕过密码登陆数据库方法
1)建立一个和你需要登陆用户相似用户(一般是末尾多一个或者几个字符)
2)查询建立用户的user$.password,并修改你需要的用户的password
3)刷新data buffer和shared pool
4)使用你建立的用户多出在字符串+你建立用户的密码登陆你需要登陆用户
in/exists和not in/not exists执行效率
一、IN 与EXISTS
1、理解
IN的执行流程
SELECT * FROM T1 WHERE X IN (SELECT Y FROM T2)
事实上可以理解为:
SELECT * FROM T1, (SELECT DISTINCT Y FROM T2) T2 WHERE T1.X = T2.Y
从这里可以看出,IN需要先处理T2表,然后再和T1进行关联
EXISTS的执行流程
SELECT * FROM T1 WHERE EXISTS (SELECT NULL FROM T2 WHERE Y = X) --可以理解为: for x in ( select * from t1 ) LOOP if ( exists ( select null from t2 where y = x.x )THEN OUTPUT THE RECORD end if end loop
从这里看出,EXISXTS会先查询T1表,然后再LOOP处理T2表
2、结论
对于in 和 exists的区别: 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用in, 反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用exists。其实我们区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索 引及结果集的关系了。
综合以上对IN/EXISTS的讨论,我们可以得出一个基本通用的结论:IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。
二、NOT IN 与NOT EXISTS
1、理解
NOT IN的执行流程
SELECT * FROM T1 WHERE X NOT IN (SELECT Y FROM T2)
事实上可以理解为:
SELECT * FROM T1, (SELECT DISTINCT Y FROM T2) T2 WHERE T1.X != T2.Y
NOT EXISTS的执行流程
SELECT .. .. . FROM ROLLUP R WHERE NOT EXISTS (SELECT 'Found' FROM TITLE T WHERE R.SOURCE_ID = T.TITLE_ID); --可以理解为: for x in ( select * from rollup ) loop if ( not exists ( that query ) ) then OUTPUT end if; end;
注意:NOT EXISTS 与 NOT IN 不能完全互相替换,看具体的需求。如果选择的列可以为空,则不能被替换。具体见:in/exists和not in/not exists语意探讨
2、结论
not in 只有当子查询中,select 关键字后的字段有not null约束或者有这种暗示时用not in,另外如果主查询中表大,子查询中的表小但是记录多,则应当使用not in,并使用anti hash join.如果主查询表中记录少,子查询表中记录多,并有索引,可以使用not exists,另外not in最好也可以用/*+ HASH_AJ */或者外连接+is null.一般情况下建议使用not exists
--比如: SELECT .. .. .. FROM ROLLUP R WHERE NOT EXISTS (SELECT 'Found' FROM TITLE T WHERE R.SOURCE_ID = T.TITLE_ID); --改成 SELECT .. .. .. FROM TITLE T, ROLLUP R WHERE R.SOURCE_ID = T.TITLE_ID(+) AND T.TITLE_ID IS NULL; --或者 SELECT /*+ HASH_AJ */ .. .. .. FROM ROLLUP R WHERE OURCE_ID NOT IN (SELECT OURCE_ID FROM TITLE T WHERE OURCE_ID IS NOT NULL);
hosts中缺少localhost.localdomain导致监听启动时间超长
0、基本信息
[oracle@localhost ~]$ uname -a Linux localhost.localdomain 2.6.18-194.el5PAE #1 SMP Tue Mar 16 22:00:21 EDT 2010 i686 i686 i386 GNU/Linux [oracle@localhost ~]$ hostname localhost.localdomain [oracle@localhost ~]$ /sbin/ifconfig eth0 Link encap:Ethernet HWaddr 00:14:22:10:96:AE inet addr:192.168.9.66 Bcast:192.168.11.255 Mask:255.255.252.0 inet6 addr: fe80::214:22ff:fe10:96ae/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6597875 errors:0 dropped:0 overruns:0 frame:0 TX packets:9785915 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2526369384 (2.3 GiB) TX bytes:295978844 (282.2 MiB) eth0:1 Link encap:Ethernet HWaddr 00:14:22:10:96:AE inet addr:外网ip Bcast:211.155.227.175 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr 00:14:22:10:96:AF inet addr:192.168.11.50 Bcast:192.168.11.255 Mask:255.255.252.0 inet6 addr: fe80::214:22ff:fe10:96af/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:999903 errors:0 dropped:0 overruns:0 frame:0 TX packets:283 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:104688608 (99.8 MiB) TX bytes:22777 (22.2 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8816738 errors:0 dropped:0 overruns:0 frame:0 TX packets:8816738 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2726275798 (2.5 GiB) TX bytes:2726275798 (2.5 GiB) [oracle@localhost ~]$ more /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=yes HOSTNAME=localhost.localdomain
1、hosts文件
[oracle@localhost ~]$ more /etc/hosts 127.0.0.1 localhost
2、监听文件
[oracle@localhost ~]$ more /opt/oracle/product/10g/network/admin/listener.ora # listener.ora Network Configuration File: /opt/oracle/product/10g/network/admin/listener.ora # Generated by Oracle configuration tools. SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = gaxt) (ORACLE_HOME = /opt/oracle/product/10g) (SID_NAME = gaxt) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 外网IP)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) )
3、启动监听
[oracle@localhost ~]$ lsnrctl start LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 15-DEC-2011 23:27:32 Copyright (c) 1991, 2007, Oracle. All rights reserved. Starting /opt/oracle/product/10g/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.2.0.4.0 - Production System parameter file is /opt/oracle/product/10g/network/admin/listener.ora Log messages written to /opt/oracle/product/10g/network/log/listener.log Trace information written to /tmp/listener_trc.trc Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=外网IP)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=外网IP)(PORT=1521))) --这里卡了很久很久才显示成功 STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.4.0 - Production Start Date 15-DEC-2011 23:27:32 Uptime 0 days 0 hr. 3 min. 9 sec Trace Level support Security ON: Local OS Authentication SNMP OFF Listener Parameter File /opt/oracle/product/10g/network/admin/listener.ora Listener Log File /opt/oracle/product/10g/network/log/listener.log Listener Trace File /tmp/listener_trc.trc Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=外网IP)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Services Summary... Service "gaxt" has 1 instance(s). Instance "gaxt", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
4、开启监听trace
--在/opt/oracle/product/10g/network/admin/listener.ora中加入下列参数 TRACE_LEVEL_LISTENER = 16 TRACE_FILE_LISTENER= LISTENER_TRC TRACE_DIRECTORY_LISTENER=/tmp
6、重启监听查看trace文件
[15-DEC-2011 23:33:32:938] --- TRACE CONFIGURATION INFORMATION FOLLOWS --- [15-DEC-2011 23:33:32:938] New trace stream is /tmp/listener_trc.trc [15-DEC-2011 23:33:32:938] New trace level is 16 ………………………… [15-DEC-2011 23:33:32:981] nsnainconn: no native services in use - returning [15-DEC-2011 23:33:32:981] nsnainconn: signalling that calling function should not continue [15-DEC-2011 23:33:32:982] nsnainconn: normal exit [15-DEC-2011 23:33:32:982] nsnaconn: normal exit [15-DEC-2011 23:33:32:982] nsaccept: exit (0) [15-DEC-2011 23:36:41:965] nsglma: WARNING - SNMP master agent is not running OR snmp.ora file does not exist. [15-DEC-2011 23:36:41:965] nsevwait: entry [15-DEC-2011 23:36:41:965] nsevwait: 3 registered connection(s) [15-DEC-2011 23:36:41:965] nsevwait: 0 pre-posted event(s) [15-DEC-2011 23:36:41:965] nsevwait: waiting for transport event (1 thru 4)... [15-DEC-2011 23:36:41:965] nsevwait: 1 newly-posted event(s)
这里可以看出监听启动的过程中,在这个地方等待了3分钟之久
MOS:Lsnrctl Start is Extremely Slow or Appears to Hang
7、修改hosts文件
[oracle@localhost ~]$ more /etc/hosts 127.0.0.1 localhost.localdomain localhost
8、重启监听查看trace文件
[15-DEC-2011 23:43:44:555] --- TRACE CONFIGURATION INFORMATION FOLLOWS --- [15-DEC-2011 23:43:44:555] New trace stream is /tmp/listener_trc.trc …………………… [15-DEC-2011 23:43:44:627] nsevwait: entry [15-DEC-2011 23:43:44:627] nsevwait: 3 registered connection(s) [15-DEC-2011 23:43:44:627] nsevwait: 0 pre-posted event(s) [15-DEC-2011 23:43:44:627] nsevwait: waiting for transport event (1 thru 4)...
这里可以看出监听启动一共使用时间为:几十毫秒
9、结论
在主机名为localhost.localdomain的hosts文件中缺少127.0.0.1 localhost.localdomain,哪怕监听中配置的是ip地址,也将导致监听启动时间非常长。如果主机名不是localhost.localdomain,那hosts中缺少localhost.localdomain没有影响监听启动。
发表在 Oracle 监听
评论关闭