oracle cpujul2008 升级 (三)
接上文档.在安装完p7375644_10204_AIX5L_cpujul2008.zip后,扫描还有问题,就接着打另外一个patchp7592346_10204_AIX5L_cpujan2009.zip[@more@]整个安装过程还是比较顺利的.按照oracle的操作文档进行,就没有什么问题.现在还不知道结果如何.目前解决上述两个漏洞的办法是:使用ibm Aix 带的ipsec 功能,只限制部分机器才能访问数据库服务器.就这达到了防止攻击的目的.
oracle cpujul2008 升级 (二)
因为使用的数据库版本是否10.2.0.4正好就是上个文章中写的.于是,就下载了p7375644_10204_AIX5L_cpujul2008.zip进行升级.[@more@]整个升级过程还是比较顺利的.关闭库,opatchroot.sh执行post install 过程.并编译无效的包.整个过程都顺利的完成.在整个完成后,只启动和关闭了数据库实例,没有重新启动机器的情况下,进行漏洞扫描,竟然又发现了同样的问题.真不知道那个扫描软件是如何搞的.
oracle cpujul2008 升级 (一)
用户单位进行服务器扫描,发现:[@more@] Oracle 2008年7月紧急补丁更新修复多个漏洞 1 受影响主机 10.25.0.36 详细描述 本次扫描为版本扫描,可能发生误报。Oracle Database是一款商业性质大型数据库系统。Oracle发布了2008年7月的紧急补丁更新公告,修复了多个Oracle产品中的多个漏洞。这些漏洞影响Oracle产品的所有安全属性,可导致本地和远程的威胁。其中一些漏洞可能需要各种级别的授权,但也有些不需要任何授权。最严重的漏洞可能导致完全入侵数据库系统。目前已知的漏洞包括:Oracle应用服务器在后端数据库安装了一些PLSQL软
oracle 树查询
取得整个树还是比较简单的.select * from tab start with ... connect by ....现在是想等到每一个叶子的根(最原始),比较麻烦.还是想了个变通的办法.使用oracle 的SYS_CONNECT_BY_PATH[@more@]示例:CREATE OR REPLACE VIEW T_DEPARTMENT ASselect dept_id id,dept_name name,dept_desc DESCRIPTION,case when level < 3 then null else parent_dept_id end M_DEPARTMENT,substr(SYS_CONNECT_BY_PATH(dept_id,'/'),2,instr(SYS_CONNECT_BY_PATH(dept_id,'/'),'/',2,1)-2) M_BRANCHNAMEfrom USer_dept tstart with parent_dept_id = '#'co
solaris超级慢.groups 显示为:1,而没有显示所有的组列表
更换一个solaris v240的磁盘,结果在系统启动后,发现系统超级慢.而且,在启动时,,显示mail,...几个组不存在.通过groups查看,也不能正常显示所有的组列表. 因此,怀疑是group文件被损坏了.[@more@]于是,在/etc目录下看,结果真没有找到group这个文件.只好手工创建文件,并从其它的机器上复制相关信息,再重启服务器后,问题解决.系统又恢复正常.现在还不明白为什么solaris会自己把那个文件给搞没有了.后来再想了下,有可能是因为在增加磁盘时,fsck -y 把group文件给搞没有的.
关于当前用户的统计视图:v$mystat
关于当前用户的统计视图:v$mystat记录一下。[@more@]
好怪。 instr 比 like '%%'快多了
在客户现场调整一个sql. 因为它包括3个like '%%',执行一次需要6秒想怎么样调整,能让它快点。一直都没有办法。[@more@]就想变通一个方法。想到instr () > 0 ,能达到同样的结果,就试了下,结果,同样的功能sql,换成instr后,只用不到2秒。看来,oracle 内部函数效率还是高些。因此,大家以后碰到同样的问题,除了全文检索外,这个也是个好方式。在网上google了下,竟然有N多相同的测试例子。
取消:oracle xdb 占用的端口8080
C:Documents and Settingsgerl>sqlplus "sys/sysdba@vasomcdb_198 as sysdba"SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 3月 3 09:32:12 2009Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit ProductionWith the Partitioning, Oracle Label Security, Data Mining and Real Application Testing optionsSQL> show parameter disNAME TYPE VALUE------------------------------------ ----------- ------------
oracle dataguard的两个新特点。
记录一下。1。dataguard 的几个数据库之间不再要求是同一人类型的OS。。。2。提供了:物理备用库及逻辑备用库3。[@more@]
oracle 数据库加加密。
通过oracle的加密技术。可以对数据库内部用户无影响外。又可以让那些能查看oracle数据库文件的人,无法取得相应表的数据。[@more@]过程:设置加密密钥。SQL> alter system set encryption key identified by "Ldap!@#$%";alter system set encryption key identified by "Ldap!@#$%"*ERROR 位于第 1 行:ORA-28368: cannot auto-create wallet这是由于在ORACLE_ADMIN/$ORACLE_SID目录下,不存在wallet的原因造成的。只要在上述目录下创建一个wallet文件夹就可以了。SQL> alter system set encryption key identi
oracle 10g 增强审计(二)----细粒度访问审计
DBMS_FGA:审计变得更为关注某个方面,并且更为精确。通过它,可以知道访问了哪些列,哪些行。程序包DBMS_FGA 具有4 个过程:ADD_POLICY 添加使用谓词和审计列的审计策略DROP_POLICY 删除审计策略DISABLE_POLICY 禁用审计策略,但保留与表或视图关联的策略ENABLE_POLICY 启用策略[@more@]用户test 通常每天访问itmanager.perfdata 表,因此可以建立一个FGA 策略,用于审计任何对perfdatda.value 列的任何访问:begindbms_fga.add_policy(object_schema => 'ITMANAGER',object_name => 'PERFDATA',policy_name => 'SAL_SELECT_PER
oracle 10g 增强审计。表insert 及bind values
oracle 10g之前,可以审计对表的操作,但不能记录操作时的各个列的值。在10g中,已经可以审核并监控到具体的sql语句及内容了。要求10g以后的版本。alter system set audit_trail=db_extended scope=spfile;[@more@]示例;SQL> show userUser is "TEST"SQL> desc a;Name Type Nullable Default Comments ---- ------------ -------- ------- -------- ID INTEGER Y NAME VARCHAR2(10) Y sys:SQL> audit INSERT on test.a by access ;审计已成功。test:SQL> INSERT INTO A VALUES(1,'10');1 row insertedSQL> comm
sys不能远程登录。ora-01031
sys 不用使用sysdba 远程登录。检查系统的几个参数remote_,设置都是正常的。检查v$pwfile_users;SQL> select * from v$pwfile_users;USERNAME SYSDB SYSOP------------------------------ ----- -----SYS FALSE TRUE[@more@]发现sys的sysdba的值是false.只好重新创建数据密码文件。问题解决。现在还没有想明白为什么。估计和前一段时间测试oracle vault有关系。
11g 新功能.临时表空间组
11g 新功能.临时表空间组在以前的数据库,一个用户只能设置一个临时表空间.在11中,为解决表空间争用的情况,可以将多个临时表空间添加为一个临时表空间组.并将这个临时表空间组分配给用户.这样,当同一个用户,多个session连接数据库时,数据库将临时表空间组 中的某一个临时表空间分配给每个session.实现就达到了分担临时表空间的目的.[@more@]SQL> alter tablespace temp1 tablespace group tempgrp;Tablespace altered.SQL> alter tablespace temp2 tablespace group tempgrp;Tablespace altered.SQL> alter tablespace temp3 tabl
solaris oracle vault 登录错误 the account is locked [28000].
安装了oracle vault 。但一直没有使用。春节后,想用,不记得密码了。登录界面时,显示错误:登录错误 the account is locked [28000]. 实际上就是dvmgr帐号被锁了。通过sys 登录系统,也不能修改dvmgr的口令。[@more@]通过oracle的文档,发现只有禁用oracle vault选项。才能实现修改dvmgr口令的目的。下面是操作的方法:禁用vault/product/database/rdbms/lib>make -f ins_rdbms.mk dv_offcd ../../bin/relink oraclesqlplus "/ as sysdba"alter user dvmgr account unlock;alter user dvmgr identified by sysdba ;修改完成
oracle 针对普通表的索引分区及10g新增hash 索引分区
不知道是不是由于看oracle concept时粗心,现在才发现oracle 针对普通表创建的索引,也可以进行分区。以减少索引的io.下面分别就9i的 rang分区示例。及10g新增加的hash 索引分区。使用这个的好处就是:可以使索引的速度更快。而且对于以序列增加的列索引,除reverse索引外,这个也是一个不错的选择。[@more@]9i:create table A(A VARCHAR2(200))create index idx_part_aon a(a) globalPARTITION BY RANGE (a) (partition p1 values less than ('aaaaaaaaaaaaaaaaaaa'),partition p2 values less than ('baaaaaaaaaaaaaaaaaa'),partition p
solaris 分区常用命令(备查)
经常一些命令用过就忘记了。这里备查一下。format 修改并创建分区fdisknewfs 创建文件系统当一个solaris新增加硬件后,可以通过以下命令,实现系统的硬件检查: devfsadm [@more@]
一个简单的delete 优化
昨天在客户现场,同事一个简单的delete 语句,发现竟需要30s以上的时间,整个数据库资源占用也很高。同事讲,对应的列已经创建索引了。就检查了下。发现存在一个普遍的设计问题。具体如下:[@more@]删除语句:delete from t_a t where t.id= 40000;检查表t_a,在id上创建了索引。执行计划也会使用这个索引。但执行起来就很慢。刚开始以为这个索引的值分散,就把索引修改为反向索引。执行计划是比一般索引快。但总的执行时间没有减少太多。只好去设置sql trace.结果发现,当执行上述delete 时,除删除t_a外,还有一个删除t_b表的语句。所以
oracle SQL调整一例
以下语句从jcss_ocainfo表中,取出ticketseq不存在于jcss_ticketinfo中的记录。并且,每个重复的ticketseq只能取其中的一条记录。select 。。。from jcss_ocainfo twhere t.rowid in(select min(t2.rowid) from jcss_ocainfo t2 group by ticketseq)and t.rowid not in (select tt.rowidfrom jcss_ocainfo tt, jcss_ticketinfo t2where tt.ticketSeq = t2.ticketseq);以下是上述语句的执行计划:1 SELECT STATEMENT 88619 1 15122 NESTED LOOPS SEMI 88619 1 15123 MERGE JOIN ANTI 86865 1 15054 SORT JOIN 85741 193909 2904756825 TABL
netstat -ano 端口对应的进程号
在命令提示符下运行netstat -ano 后面即可显示出相应的PID号,然后再到任务管理器看查看相应的PID号进程即可。[@more@]