转载

最近的几个技术问题总结和答疑(五)

最近收到了几个朋友的提问,我简单总结了一下。
问题1:
首先是有个朋友问到,单引号,双引号在有些场合通用,有些场合会提示错误。
我做了一个简单的测试,当然只是一个相对片面的解读,能够说明问题即可。
比如我需要修改SYS的密码为asdfasg!,需要注意末尾有一个感叹号。
可以看到下面的测试结果。
SQL> alter user sys identified by 'asdfasga!';
alter user sys identified by 'asdfasga!'
                             *
ERROR at line 1:
ORA-00988: missing or invalid password(s)

SQL> alter user sys identified by asdfasga!;
alter user sys identified by asdfasga!
                                      *
ERROR at line 1:
ORA-00922: missing or invalid option

SQL> alter user sys identified by "asdfasga!";
User altered.
可以看到测试的情况,其实也可以间接说明双引号在含有特殊字符的场景中是必须使用的,而对于单引号,只是单纯标示一个字符串,为什么第一个语句执行失败,因为数据库把第一个单引号当做了密码的一部分,所以检查失败。

问题2:
怎么从arch中拿到DBID?
这个问题看起来还是很有意思,看起来不是常规思路。我们来简单测试一下。
把归档文件拷贝到备库,转储日志信息。
SQL> alter system dump logfile '/U01/app/oracle/oradata/sol/arch/SOL/archivelog/2016_05_19/o1_mf_1_467316_cmtccjdj_.arc';
System altered.
然后在alert日志中会有相应的记录,我们检索一下这个归档相关的日志,可以很明显看到是第三个日志,里面有DUMP的字样。
[oracle@statg2 trace]$ grep o1_mf_1_467316_cmtccjdj_ *
alert_sol.log:Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2016_05_19/o1_mf_1_467316_cmtccjdj_.arc
sol_ora_24820.trc:Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2016_05_19/o1_mf_1_467316_cmtccjdj_.arc
sol_ora_564.trc:DUMP OF REDO FROM FILE '/U01/app/oracle/oradata/sol/arch/SOL/archivelog/2016_05_19/o1_mf_1_467316_cmtccjdj_.arc'
查看日志的信息,Db ID的信息就很明显看到了。
 FILE HEADER:
        Compatibility Vsn = 186646528=0xb200000
        Db ID=1210367666=0x4824beb2, Db Name='SOL'
        Activation ID=1210391986=0x48251db2
        Control Seq=18495720=0x11a38e8, File size=2097152=0x200000
        File Number=20, Blksiz=512, File Type=2 LOG
不局限于备库,我们可以把归档拷贝到另外一个数据库目录下,再次转储
alter system dump logfile '/home/oracle/o1_mf_1_467316_cmtccjdj_.arc';
查看相关的日志。
$grep o1_mf_1_467316_cmtccjdj_ *
dgtest_ora_29291.trc:DUMP OF REDO FROM FILE '/home/oracle/o1_mf_1_467316_cmtccjdj_.arc'
还是能够看到Db ID的信息。
DUMP OF REDO FROM FILE '/home/oracle/o1_mf_1_467316_cmtccjdj_.arc'
 Opcodes *.*
 RBAs: 0x000000.00000000.0000 thru 0xffffffff.ffffffff.ffff
 SCNs: scn: 0x0000.00000000 thru scn: 0xffff.ffffffff
 Times: creation thru eternity
 FILE HEADER:
        Compatibility Vsn = 186646528=0xb200000
        Db ID=1210367666=0x4824beb2, Db Name='SOL'
        Activation ID=1210391986=0x48251db2
        Control Seq=18495720=0x11a38e8, File size=2097152=0x200000
        File Number=20, Blksiz=512, File Type=2 LOG
 descrip:"Thread 0001, Seq# 0000467316, SCN 0x003469b0b674-0x003469b10501"
 thread: 1 nab: 0x150ba seq: 0x00072174 hws: 0x2 eot: 0 dis: 0
 resetlogs count: 0x25181832 scn: 0x0000.00000001 (1)
 prev resetlogs count: 0x0 scn: 0x0000.00000000
所以查看DB ID的方式比较多,这种备库,异机查看的方式也算作补充吧。


正文到此结束
Loading...