关于作者

用户名:kes2000
笔名:博客
地区: 湖北-武汉
行业:研究/评论

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



友情链接

访问统计:
文章个数:23
评论个数:19
留言条数:23




Powered by BlogDriver 2.1

我有话要说

 

文章

Oem10g grid control
1:软件下载
Oem10g grid control 可以从oracle官方网站上直接免费下载(唯一需要做的是注册一个用户)。我们的试验环境是redhat as3 和as4.所以我们下载了for linux x86的版本。

1)下载oem10g grid control软件,当前版本是10.2.0.1.0

2)下载agent软件(对于同一个平台的agent软件已经包含在oem里了,对于不适一种平台的os,需要安装适合该平台的agent .

2:创建oracle的环境(这个可以参考网上好的安装Oracle的文档,基本上就是创建一个Oracle用户,一个dba组,配置一下oracle用户的环境变量.bash_profile),修改一下内核参数(主要是起用大内存等,也可以随便在网上找到,这些不做为讨论的内容)。

3:解开下载的文件包,启用图形界面,进入安装界面,其中需要注意的是他会提示你oem的资料库是创建在一个现有的数据库中还是新建个数据库,这个按照你的情况来完成,如果现在使用现在的数据库,它就会提示你连接到现在的数据库中,然后创建一大堆东西-_-|.我们现在的是创建一个新的数据库,然后一路Next,最后创建成功。

这里没有太大的问题,如果你对这些不熟悉,建议你先练习一些在linux下安装数据库,基本上是一样的,所以不错太多讨论。

4:安装结束,程序提示Oem连接方式,就是下面这样。

http://oem_hostname:4889/em

你可以打开一个浏览器,输入这个地址,会提示你登录信息,登陆用户是在创建oem数据库时指定,用户名是sysman,记住这个用户在oem里他就是dba 角色。

5:登陆成功后,恭喜你,你的oem server端安装成功了。注意,在安装oem过程中,它会自动在本地装一个agent,所以对于本机,你可以省事了。



ok,到现在为止,我们安装好了服务器端的软件,依旧是oem的核心部分已经安装好了,如果你只有一台数据库服务器,那你的工作基本上完成了,而我们的环境里有三台机器,所以下面的工作是要在剩下的2台机器上部署oem的agent。

我觉得我们在部署之前有必要了解一下oem10g grid control的架构,

以便于对它有更好的理解。

oem10g是一个基于web的管理架构,这和9i之前的笨重的java客户端有很大的区别。(oracle能把web功能发挥到这种地步,小弟真实佩服佩服)。

所以我们可以从2块来研究它的架构,一个是管理的架构,一个是后台数据采集的架构。

管理的架构:管理者(或者使用者)不需要再自己的机器上安装任何软件,只需要一个浏览器就可以搞定所有的工作。使用者只需要在浏览器里输入如下的地址,就可以进入oem,就行数据库管理。

http://oem_hostname:4889/em

我们可以看到首先我们需要连接到oracle的一个中间层,成为

Oracle application server的东西,通过它再登陆到oem上,然后进行数据库的监控,管理和维护。所以中间层的后台是一个数据库,也就是我们在创建oem时创建的数据库,所有Oem管理的数据库信息,包括登陆信息都保存在这个数据库中。

后台数据采集的架构:

oem收集管理的数据库的信息的方法是在被管理的节点上部署它的代理软禁(agent),通过代理软件来收集本机的所有信息,以xml的信息存储到本地,在通过数据上载的进程,将xml文件上载到oem server机器上,server端的程序再将这些xml信息写入到oem数据库里。这些xml文件也是通过http方式发给Oem服务器的app server,再通过它转给oem service.


弄清楚了Oem架构这后,我们接着往下进行,就是要在另外两台数据库服务器上部署 oem 的agent.


接上篇:

oracle为agent部署提供了4种方案(记得开始部署时,四种都用过了,没有一个成功的-_-|.此是后话)。

1:直接从网上下载agent软件,安装到需要管理的节点上,配置一下相关的信息,使之能够连接到Oem上。

2:称为脚本安装,只需在oem 上下载一个script到本机,然后运行它(貌似简单,嘿嘿)。

3:克隆**,就是将已经安装好,并正常运行的机器上的agent目录整个的搬来用。

4:直接在oem界面上进行部署。

当时看到居然有四种方法,真是欢欣雀跃,没想到在部署过程中却屡遭失败,失败也就罢了,我最不能忍受的是它在trc文件中爆出的一大坨错误,竟丝毫不能反映出错误的来源,也许我的水平不够,不过它真的不直观,因此我越来越佩服oracle的dba们了,都是在这样一次又一次莫名其妙的失败中成长起来的。

闲话少叙,进入正题。



1:下载agent软件进行安装。

这个方法在部署另外2台服务器时没用上,应为oracle说在oem里已经有了,但是在安装完这2台机器之后,却有幸试了一次,原因是我的客户端是windows机器,我突然想看看oem是不是可以像oracle吹得那样跨平台管理,所以就又跑到
www.oracle.com上down了一个agent for windows的(哎,说起来这个oracle官方网站来,真是不赖,我记得我至少在那里down下来上几10个g的东西,货源足,而且全部免费,童叟无欺,我建议大家也经常去down一down,闲着干嘛,你说那)。

于是我干脆在我的客户端机器上又装了一个oracle9i,忘记说了,之前说的那3台机器都是10g db,所有装个9i,看看管理上有啥不同。

这些都很容易装,我就靠这个吃饭哪,没事的时候都要装上几十次,熟的很。

装完了,9i会在windows服务里装一大坨服务,我们只要起db和listerner就可以了。其他的不管。agent软件会在服务里装3个服务(windows真烦),只需要起agent那一个就ok了。

我发现我天生不是搞技术的,把一个技术文档说的像个什么一样,真是丢人,没办法,我也要吃饭啊,我也不想啊,可是我也很为难啊。

你看,说这说着我就忘了一个很重要的步骤了,就是在安装egnet时,有一步会提示oms的地址,注意啊,很关键啊,写什么哪?上面已经说过了,忘了?你刚说过的,你就不记得了,比我还健忘,你真行。

就是这个啊:http://oms_hostname:4889

哦,在agent安装过程中还有一个步骤,提示输入数据安全密码?

不明白?不明白你问啊?你不问。。。。。那我就说吧。

oms和agent之间的通讯是加密的,就是那个https啦,加个s

记住啊,是加密的,数据加密的。数据加密的用密码干嘛?解密啊?哦,你说的也是,我也没想清楚,你输了就是了。回去自己想吧,监听器不也可以设置密码吗?

呼,总算装完了。然后那?

然后? 然后看看好不好用啊。

说道这里,我突然发现还有一个很重要的问题没有说。

首先我要说的是oem相关的命令(包括agent)都是通过emctl命令来完成的。记住啊,记住这个命令,你基本上就可以搞定70%以上的问题了。

恩,命令说完了,总觉得还有点什么东西没说,你看我是不是很罗嗦,你别生气,我说过我天生不是做技术的料,但我还要吃饭,还有老婆孩子,你说我容易嘛?

对,我要说的是,你在运行这条命令时,一定要进入到这个命令所在的目录下。

不好,有人要朝我丢东西了,那要一个$path干什么?当饭吃啊?是的,你丢的对,我怀疑我说错了话,可是是老O(racle)高速我的,我开始也想朝它丢东西,直到我在Oem机器上(注意是oem机器上),随便的运行了一个emctl之后才知道有问题的,应为在Oem机器上有2个这个文件。只是不再同一个目录下,一个在oms/,一个在agent/,所以当你随便在一个地方打入emctl,谁直到那个被执行了。

不好,又有人在骂了,你不是说在windows机器上嘛?对哦,是在我自己的windows机器上,又没有装oms,自然只有一个emctl了。是,是,您说的对,可是保不准你那天心血来潮在这个机器上装一个,那时候你随便运行一个emctl,如果不灵,你可不要说我的文档有问题啊。

好了,都好了,我运行了一下agent,发现居然连上了,心理一阵狂喜。苍天啊,大地啊,还是windows下的东西好用啊。

至于怎么运行,怎样察看状态,请看后面的oem的管理和维护。



上一边唠唠叨叨说了一堆无用的东西,本篇尽量不再说废话,接着介绍agent的部署方法。

ok,here we go!

2:基于脚本的部署。

在oem10g的体系中对安全的要求比较高,所以在文件传递上也使用了hhtps的加密协议。在机器的访问上Oracle采用的是ssh方式访问,所以在oem体系中,所以机器上启用ssh是必须的,至于ssh的启用方法不在本文档的讨论之列。

首先要在oms端运行以下命令,以便于确保数据通过ssh方式在server端和client段进行传递。

OMS_HOME/sysman/prov/resources/scripts/sshUserSetup.sh
具体的命令如下:

sshUserSetup.sh -hosts "host1 host2" -user sjon

其中-hosts是你要部署agent的机器的名称,如果此处你写hostname,那么你需要把hostname和机器的Ip对应信息写到oms机器的/etc/hosts上,否则可能无法解析hostname。这里可以写很多个需要部署的hosts的名字。

-user是登录到该机器的用户名,密码则在运行过程中输入。

在各个过程中,该脚本首先测试到远程机器的可用性,使用ping的命令,然后使用ssh命令进行登录验证,确保ssh可用。

以上工作完成后就可以进行部署了,oracle文档上还有几个步骤,我觉得可以省略,反正我没用到。

Ok 现在开始在一台机器上进行agent部署。

a:用oracle用户登录需要部署agent的机器,在oracle用户默认路径下编辑c shell profile:./bashrc 在最后加入:

set TZ=PRC

保存退出。

source ./bashrc 使环境变量生效。

注:这个操作是设置agent host的时区time zone,是agent和oms数据传递时必需的,不能忽略。

b:首先用oracle用户在ORACLE_HOME/下创建一个目录,一般是OracleHomes,

c:使用ftp,或者http,scp等方法,从Oms机器上下载安装脚本,该安装脚本路径如下:

$ORACLE_HOME/OracleHomes/oms10g/sysman/agent_download/linux/agent_download.linux

d:在需要部署agent的机器上,首先给该脚本可执行的权限。

e:运行安装脚本:

./agent_download.linux -b /home/oracle/OracleHomes

其中-b参数指定agent安装的路径。

中间不需要交互,Oracle使用的是silent方式的安装。

安装成功或者失败都有日志,我安装失败了无数次-_-|.

3: clone 方式部署agent。

这个比较简单。

首先需要有一个已经装好的可以正常运行的agent节点,然后将这个节点下agent/目录下所有的文件打一个tar,传到需要部署的节点上,解tar,确定目录正确。

然后运行emca -f 重新配置agent。

检查agent是否运行正常。

4:通过oem进行agent部署。

这个配置比较是通过oem的图形界面进行配置,适合做企业级的大规模的部署。

做这个的前提是oms已经安装,并且可以正常访问,oms的安装和访问前便已经提到了。

步骤如下:

1:登陆oms。

2:选择部署(deplay)签,选择安装(fresh install).

3:进入安装界面,首先和安装路径,输入你agent想要的安装路径。然后选择你的agent的运行平台,这种部署,我发现这中部署agent的平台只能和oms相同的平台,其他的平台需要到
Oracle的官方网站上下载相应平台的agent软件进行安装。

4:Host栏,输入需要部署的host的Ip,或者hostname,如果中间用逗号分隔。如果输入的是hostname,需要保证oms机器可以通过hostname解析出Ip地址,可以通过修改/ect/hosts文件来达到hostname和ip的对应。

5:输入一个操作系统的用户名和密码,基本上就是你的oracle用户和密码。

6:输入Oms的安全口令,随便输一个,自己记住就可以了。

其他的基本上都可以不添,记住最后运行完之后执行一个agent/下的root.sh脚本就可以了。

7:看一下,运行结果,对于运行失败的节点,要看相应的安装日志。

Ok,OEM的部署基本上就使这样,上面说到的只是方法,我们在安装过程中出现了很多错误,也察看了很多文档,下一篇会对这些错误作一些解释和讨论。



前几篇已经介绍了Oms和agent的部署方法,这一部分笔者准备把使用中遇到的问题和使用的心得汇总一下。

一:一些比较重要的路径和文件

Oms server端和agent端的目录结构及很上相似:区别在于oms端路径的最上层叫oms10g,而agent端的最上层的路径叫agent10g.下面的结构基本上相似,下面说一下几个比较重要的路径和文件。

1:oms10g/bin 和agent10g/bin分别存放了Oms和agent各自的可执行文件,其中emctl文件时用来管理oms或agent的命令,前面说过,由于在oms server端,也同时安装了agent,所以在oms server上运行emctl命令时要特别主要,需要进入到各自的bin./下面运行,否则可能会出错。

比如想启动oms,可以进入到oms10g/bin 下执行:

./emctl start oms 这个命令会同时启动其他oms需要的服务,比如http server。

具体的所有用法可以通过敲入:./emctl 回车就可以看到。

对于agent的管理,须要进入到agent10g/bin下,以下是一些有用的命令:

./emctl start agent 启动agent service

./emctl stop agent 停止agent service

/emctl status agent 察看agent的运行情况,在出现的信息当中,有一个信息比较重要,last successfully upload time,如果值为null,说明没有数据上传,需要检查一下相关的配置是否正确。或者直接发出:./emctl upload看看信息。

oms 和agent的错误信息都存放在:oms10g(agent10g)/sysman/log

我在安装的过程中出现过很多次agent无法upload的情况,原因大多是本地的TZ变量没有设置正确。TZ就是time zone时区,是oem10g中比较重要的一个变量,它要求agent节点上必须设置时区变量,并且时区变量的值需要符合oracle要求的时区变量值,这个值了一在agent10g/sysman/admin/emd/supportedtz.lst文件中找到。设置TZ的方法在部署篇里已经讲过了。

二:oem10g的原理和工作方式

oem10g的agent端的数据收集全部通过perl脚本来完成。扩展名为:*.pl,这些脚本可以在agent10g/sysman/admin/scripts/下找到。

agent程序首先会把采集到的信息写到本地的xml文件当中,然后再将该文件upload到oms端去,oms service再将xml文件写入到oms自己的repository库里。刚才我们说的./emctl upload其实就是手工上载本地的xml文件。这些生成的文件可以在:agent10g/sysman/admin/upload下找到。

agent程序的发现方式:

当agent部署到一个节点上时,他首先搜索$ORACLE_HOME/oraInventory下安装的所有oracle产品。以便确定需要收集那些产品的信息,比如他只发现了一个数据库产品,他们它就会只运行收集数据库和主机信息的脚本。对于一个节点来说,agent确定需要收集那些内容的信息写在如下文件中,可以手工修改:agent10g/sysman/emd/targets.xml。

另外一个比较重要的文件是agent10g/sysman/config/emd.properties 他就是没一个agent的配置文件,agent所有的属性都在里面,比如oms的url,TZ啊什么的,可以手工修改,修改完之后,通过执行./emctl reload来使之生效。

三:oem10g的使用心得

oem10g在易用性较8i,9i笨重的java客户端来看,真是有一种脱胎换骨的轻松感觉。你不需要再花很多的时间等待那个图形界面的出现了,只要通过浏览器输入hhtp://oemhost:4889/em就可以轻松登陆oem.感觉速度比8i和9i都快不少。而且界面由很多图标,看起来很舒服。

oem10g另外一个功能就是加入了告警功能,它会将所有认为有问题的信息以在首页上提示出来,甚至连alert文件中的告警信息也可以弄出来,我们单位原原本也有一套数据库监控系统,可是和这个比,简直是小巫见大巫了。

oem10g另外一个令人激动的特点是提供了一个叫adviser的建议功能,它可以帮助你对内存,Undo segent,sql进行相应的优化调整,给出好的建议。但这个功能只能对10g数据库可用。尽管oem10g可以管理从8.1.7.4以后的数据库,但这个功能只对10g的数据库可用。

报表,oem10g提供了很好的报表功能,包括所有该节点上所有监控的信息,而且报表很漂亮。对于那些定期需要向领导作报表的dba来说,这是个不错的工具。

- 作者: kes2000 2009年04月29日, 星期三 10:45  回复(0) |  引用(0) 加入博采

oracle学习笔记2

SGA

sga_target<=sga_max_size。

show sga;

1sga_max_size是静态参数,sga_target是动态参数。

2、设置了sga_targetoracle会自动调节db_cache_sizeshard_pool_sizelarge_pool_sizejava_pool_size的大小。

FRA

show parameter recovery

show parameter db_recovery

show parameter log_archive_dest

FRAFlash Recovery Area)可以用来存放RMAN备份,Online Redo Logs, Archived Redo Logs, Controlfile Autobackups以及Flashback logsArchived log只在你设置了db_recovery_file_dest但是没有指定log_file_dest_n的时候,oracle便会自动将log_file_dest_10设为db_recovery_file_dest,你的archived logs才会进入FRAFRA是由Oracle自动管理的。如果空间不足,Oracle便会清理不再需要的文件,例如过期的备份。另外,2G也不一定是强制性的。当你设置了garanteed restore pointFRA便会一直增长而不会受2G的限制。

select member from v$logfile;

statistics_level

statistics_level 默认是typical,在10g中表监控是激活的,强烈建议在10g中此参数的值是typical。如果STATISTICS_LEVEL设置为basic,不仅不能监控表,而且将禁掉如下一些10g的新功能:

ASH(Active Session History)

ASSM(Automatic Shared Memory Management)

AWR(Automatic Workload Repository)

ADDM(Automatic Database Diagnostic Monitor)

alter system set statistics_level=basic;

select count(*) from dba_objects,dba_objects;

select cpu_time,elapsed_time,disk_reads from v$sql where sql_text='select count(*) from dba_objects,dba_objects ';

savepoint

savepoint before_delete;

rollback to before_delete;

select * from nls_session_parameters;

imp/exp

exp

将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp

exp system/manager@TEST file=d:daochu.dmp full=y

将数据库中system用户与sys用户的表导出

exp system/manager@TEST file=d:daochu.dmp wner=(system,sys)

将数据库中的表inner_notifynotify_staff_relat导出

exp aichannel/aichannel@TESTDB2 

  file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

将数据库中的表table1中的字段filed1"00"打头的数据导出

exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"

imp

D:daochu.dmp 中的数据导入TEST数据库中。

imp system/manager@TEST  file=d:daochu.dmp

imp aichannel/aichannel@HUST full=y  file=d:datanewsmgnt.dmp ignore=y

d:daochu.dmp中的表table1导入

imp system/manager@TEST  file=d:daochu.dmp  tables=(table1)

MERGE

MERGE语法如下:

MERGE [hint] INTO [schema .] table [t_alias] USING [schema .]

{ table | view | subquery } [t_alias] ON ( condition )

WHEN MATCHED THEN merge_update_clause

WHEN NOT MATCHED THEN merge_insert_clause;

例:

MERGE INTO tdest d

USING tsrc s ON (s.srckey = d.destkey)

WHEN MATCHED THEN

UPDATE SET d.destdata = d.destdata + s.srcdata

WHEN NOT MATCHED THEN

INSERT (destkey,destdata) VALUES (srckey,srcdata)

Oracle 10gMERGE有如下一些改进: 

1UPDATEINSERT子句是可选的

2、UPDATE和INSERT子句可以加WHERE子句

3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表

4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

●可省略的UPDATE或INSERT子句

(1)MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name,

p.category = np.category;

(2)MERGE INTO products p

USING newproducts np

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name,

np.category);

●带条件的UpdatesInserts子句

(1)MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name

WHERE p.category = np.category;

(2)MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name,

p.category = np.category

WHERE p.category = 'DVD'

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name, np.category)

WHERE np.category != 'BOOKS'

●无条件的Inserts

MERGE INTO products p

USING newproducts np

ON (1=0)

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name, np.category)

WHERE np.category = 'BOOKS'

●新增加的DELETE子句

MERGE INTO products p

USING newproducts np

ON (p.product_id = np.product_id)

WHEN MATCHED THEN

UPDATE

SET p.product_name = np.product_name,

p.category = np.category

DELETE WHERE (p.category = 'ELECTRNCS')

WHEN NOT MATCHED THEN

INSERT

VALUES (np.product_id, np.product_name, np.category)

Automatic Storage Management

drop diskgroup dgroup1;

create diskgroup dgroup1 normal redundancy failgroup fgroup1 disk 'ORCL:VOL1', 'ORCL:VOL2' failgroup fgroup2 disk 'ORCL:VOL3','ORCL:VOL4';

create diskgroup dgroup2 external redundancy disk 'ORCL:VOL5','ORCL:VOL6';

select group_number,state,type,total_mb,free_mb From v$asm_diskgroup;

select group_number,disk_number,mount_status,header_status,state,total_mb,free_mb,name,failgroup from v$asm_disk order by PATH;

create tablespace tspace1;

select name From v$datafile;

create tablespace tspace2 datafile '+dgroup1' size 10m autoextend on;

select name,bytes From v$datafile;

ALTER DATABASE DATAFILE '+DGROUP1/orcl/datafile/tspace1.256.679316749' RESIZE 10M;

drop tablespace myundo;

create undo tablespace myundo datafile '+dgroup1/mydir/my_undo_ts' size 20m;

select name,group_number,file_number,alias_directory,system_created from V$ASM_ALIAS;

alter diskgroup dgroup1 drop file '+dgroup1/mydir/my_undo_ts';

alter diskgroup dgroup1 add alias '+dgroup1/mydir/tsapce1.dbf' for '+dgroup1/orcl/datafile/TSPACE1.256.679316749';

alter diskgroup dgroup1 rename alias '+dgroup1/mydir/tsapce1.dbf' to '+dgroup1/mydir/tsapce1.datafile';

select reason,metric_value from dba_outstanding_alerts;

- 作者: 博客 2009年04月27日, 星期一 22:13  回复(0) |  引用(0) 加入博采

oracle学习笔记

初始化设置

cd $ORACLE_HOME/dbs

export ORACLE_SID=qnetdb

export NLS_LANG=american_america.AL32UTF8

export NLS_LANG="SIMPLIFIEDCHINESE_CHINA.ZHS16GBK"

FGA

细密纹理审计(Fine-grained Auditing FGA),可以同SCN数重新构造老的数据来记录更低层次的变化。通过指定一个新的参数,FGA可以包含 INSERT、UPDATE 和 DELETE: 

statement_types => 'INSERT, UPDATE, DELETE, SELECT'

statement_type 参数默认情况下只审计 SELECT 语句。

在 FGA 审线索中,获取赋值变量的值:audit_trail = DB_EXTENDED,停止获取audit_trail => DB,默认情况下,捕获赋值变量,这个参数的值为 DB_EXTENDED。

1.用sys帐号建立用户并赋权限

SQL>grant connect,resource to BANK identified by bank;

2.登入bank帐号建立accounts表

create table ACCOUNTS(acct_no number not null,cust_id number not null,balance number(15,2));

3.用sys帐号建立审计规则

begin

    dbms_fga.add_policy (

        object_schema=>'BANK',

        object_name=>'ACCOUNTS',

        policy_name=>'ACCOUNTS_ACCESS'

    );

end;

4.bank帐号查询accounts表

select * from bank.accounts;

(经测试sys用户查询此表时不会记录在审计信息中,其它用户访问时则会记录)

5.sys用户查询审计信息

select timestamp,db_user,os_user,object_schema,object_name,sql_text 

    from dba_fga_audit_trail;

可以增加审计列和审计条件,如下:

begin

    dbms_fga.add_policy (

        object_schema=>'BANK',

        object_name=>'ACCOUNTS',

        policy_name=>'ACCOUNTS_ACCESS',

        audit_column => 'BALANCE',

        audit_condition => 'BALANCE >= 11000'

    );

end;

删除审计策略

begin

    dbms_fga.drop_policy (

        object_schema => 'BANK',

        object_name => 'ACCOUNTS',

        policy_name => 'ACCOUNTS_ACCESS'

    );

end;

停用审计策略

begin

    dbms_fga.enable_policy (

        object_schema => 'BANK',

        object_name => 'ACCOUNTS',

        policy_name => 'ACCOUNTS_ACCESS',

        enable => FALSE

    );

end;

要重新启用它,可使用同一函数,但是将参数 enable 设置为 TRUE。 

也可以对存储过程进行审计,用以下两个参数:

handler_schema 拥有数据过程的模式

handler_module 过程名称 

FGA 数据字典视图 

FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES 中。

审计线索收集在 SYS 拥有的表 FGA_LOG$ 中。DBA_FGA_AUDIT_TRAIL 是该表上的一个视图。

FGA 和常规审计的差异 

① 标准审计必须用参数 AUDIT_TRAIL 在数据库级启用。这个参数不是动态的;您必须重启数据库来使其生效。相比而言,FGA 不需要任何参数修改。一旦被设置在一个对象上,标准审计将保持在那里。要解除它,您必须用 NOAUDIT 命令删除审计选项。这可能很不方便,因为在一个表上丢弃审计选项也将丢弃元数据信息。然而,FGA 可以临时禁用和启用,不丢失任何元数据信息。 

② FGA 只能够处理四种类型的语句:SELECT、INSERT、UPDATE 和 DELETE。相比而言,常规审计可以处理其它许多语句和权限,甚至会话连接和断开。 

③ 标准审计每次会话只创建一条记录(按会话)或每次访问对象创建一条记录(按访问)这种占用资源很少的方式对于控制审计线索表中的空间非常重要。FGA 并不是同样节省资源;它每次访问运行一次 — 使得线索更大。 

④ 通过记录线索,标准审计可以用来检测任何中断企图,如果企图没有成功,则将产生错误代码。而 FGA 不能。 

⑤ 标准审计可以写数据库表或OS文件。而FGA 日志仅写到数据库表 FGA_LOG$ 中。虽然可以在 FGA 中创建用户自定义的审计处理程序来写OS文件,但它们的完整性不能保证。 

⑥ 标准审计可以设置用于默认对象。当表是在运行期创建时,这个功能变得极为有用:默认的审计选项允许没有数据库管理员干预的审计。这在 FGA 中是不可能的,用户必须在一个现有的表上创建策略,上述的情况只能在表已创建之后才可能发生。 

⑦ 在 FGA 中,SQL 赋值变量默认被捕获。在常规审计中,必须把初始化参数 audit_trail设为 db_extended,才能启用这一功能。 

⑧ 权限差异:常规审计需要审计系统或语句权限;FGA 只需要 dbms_fga 程序包上的运行权限。

打开数据库

sqlplus "sys/necsthz as sysdba"

startup nomount

alter database mount;

alter database open;

1.安装启动

SQL> startup {pfile=} mount

该方式启动数据库的的用途一般为:

 为数据文件更名;

 增加、删除或改名事物日志文件;

 使事物日志归档模式选项有效或失效;

 进行完整数据库的恢复操作

2.非安装启动

SQL>  startup {pfile=} nomount

该方式启动数据库的用途一般为:

 创建一新的数据库

打开监听

lsnrctl start

关闭数据库

shutdown normal;

shutdown immediate;

shutdown abort;

进入ARCHIVELOG模式

startup mount

alter database archivelog;

alter database open;

archive log list;

archive log all;

闪回

1.启用闪回数据库特性

startup mount;

alter database archivelog;

# archive log start;

alter database flashback on;

alter database open;

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;

2.闪回日志

/data5/flash_recovery_area/EYGLE/flashback

3.进行闪回操作

shutdown immediate;

startup mount;

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

select * from V$FLASHBACK_DATABASE_LOG;

flashback database to timestamp to_timestamp ('2005-03-29 17:02:28','yyyy-mm-dd hh24:mi:ss');

4.resetlogs打开数据库

shutdown immediate;

startup mount;

#alter database open resetlogs;

alter database open noresetlogs

select * from v$log;

注意,一旦resetlogs之后,将不能再flashbackresetlogs之前的时间点。

备份

一致性备份(consistent backup)的含义是,备份所包含的各个文件中的所有修改都具备相同的系统变化编号(system change number,SCN)。也就是说,备份所包含的各个文件中的所有数据均来自同一时间点。与非一致性备份(inconsistent backup)不同,使用一致性数据库完全备份(consistent whole database backup)进行复原(restore)后,不需要执行恢复操作(recovery)。

非一致性备份(inconsistent backup)的含义是,在数据库处于打开(open)状态时,或数据库异常关闭(shut down abnormally)后,对一个或多个数据库文件进行的备份。

RMAN

分两种情况,incremental的和cumulitive的,前者备份跟自己同级或比自己级别低的,后者只备份比自己级别低的。例如,incremental:level1备份上一次level1或level0以来的变化,level2备份上一次level2或level1或level0以来的变化。cumulitive:level1备份上一次level0以来的变化,level2备份上一次level1或level0以来的变化。

[切换数据模式]

SQL> shutdown immediate; (立即关闭数据库) 

SQL> startup mount (启动实例并加载数据库,但不打开) 

SQL> alter database archivelog; (更改数据库为归档模式) 

SQL> alter database open; (打开数据库) 

SQL> alter system archive log start; (启用自动归档) 

SQL> exit (退出)  

[制作备份]

1.连接到rman

c:\> rman  

rman> connect target /

2.不备份索引表空间

rman> configure exclude for tablespace smsafeindex;

3.自动备份控制文件

rman> configure controlfile autobackup on;

4.做增量0的备份压缩集,不包括索引表空间

rman> backup incremental level 0 as compressed backupset database;

5.做增量1备份

rman> backup incremental level 1 as compressed backupset database;

6.做增量1积累备份

rman> backup incremental level 1 cumulative as compressed backupset database;

7.备份全库并删除旧的归档日志

rman> backup database plus archivelog delete input; 

8.备份指定表空间

rman> backup tablespace system plus archivelog delete input;

9.备份归档日志

rman> backup archivelog all delete input; 

[查看备份]

1.查看备份

rman> list backup;

2.验证备份

rman> validate backupset 6; 

[从备份恢复]

1.进入nomount模式

c:\> sqlplus / as sysdba

sql> shutdown immediate; 

sql> startup nomount;

2.基于时间点的恢复 

export ORACLE_SID=orcl

rman> target / nocatalog 

rman> set DBID=1454675292 

rman> startup nomount; 

rman> restore controlfile from autobackup; 

--rman> restore controlfile to '/backup1/controlfile01.ctl' from autobackup;

rman> alter database mount; 

rman> restore database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')"; 

rman> recover database until time "TO_DATE('03/14/07 15:00:00','MM/DD/YY HH24:MI:SS')"; 

rman> alter database open resetlogs; 

3.restore数据库

rman> restore database skip tablespace smsafeindex;

因为备份的时候没有备份索引表空间,因此这里必须要复制一个过来,否则会出现 数据文件6需要重新存贮的错误

这里会从最后一次可用的增量0备份恢复。

4.recover数据库

rman> recover database skip forever tablespace smsafeindex;

这里从增量备份中恢复数据库

5.删除并重建索引表空间

sql> drop tablespace smsafeindex including contents;

sql> create tablespace smsafeindex 

datafile 'd:\oracle\product\10.2.0\orcl\smsafeindex01.dbf' size 1G;

查看连接

select sid,username,program from v$session;

emctl start| stop| status| setpasswd dbconsole

tnsping qnetdb

SQL>show parameter mttr

fast_start_mttr_target               integer     300

这个参数说明当instance&nsp;recovery 的时候,数据库能够在300s之内open

undo_retention

1、先解释下undo_retention

设置undo_retention,保证commit后的数据在undo segment中保留多长时间。但是并不能保证commit后的undo信息在undo_retention的时间内一定不被覆写,当undo segment不够时,还是会覆盖已commitundo信息。

2、如果需要保证在undo_retention时间内undo信息一定不被覆写的话,可以对undo segment设置RETENTION GUARANTEE。如果设置了guarantee,意味着所有undoundo retention指定的时间范围内都不能被覆盖,如果在此时间段内有大量的小事务,虽然每个事务使用的undo不大,但总量是巨大的,那么undo tablespace 将很快的被耗光。这个参数同时还受到undo_retentionundo size的限制。如果undo size太小,undo_retention设置太久,设置retention guarantee就会报错:

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS2'

3、设置该参数

alter tablespace undotbs2 retention guarantee

撤销该参数

alter tablespace undotbs2 retention noguarantee

审计

/*启动对表的select动作*/ 

audit select on user.table_name by session; 

/*by session在每个session中发出command只记录一次,by access则每个command都记录*/ 

audit [create table][select/update/insert on object by session/access][whenever successful/not successful]; 

/*取消审计*/ 

noaudit select on user.table_name; 

/*查被审计信息*/ 

select * from all_def_audit_opts/dba_stmt_audit_opts/dba_priv_audit_opts/dba_obj_audit_opts; 

/*获取审计记录*/ 

select * from dba_audit_trail/dba_audit_exists/dba_audit_object/dba_audit_session/dba_audit_statement;

- 作者: kes2000 2009年04月27日, 星期一 22:12  回复(0) |  引用(0) 加入博采

日本的出租屋

远看像个无证乱搭建的违法建筑

近看更像了

走进去一看,嗯,原来违法建筑可以建成这样啊

里面像模像样的,电视、洗衣机、冰箱、电磁炉、微波炉、浴缸、厨房。。。。比我在国内弄的还好。。。

- 作者: kes2000 2008年01月13日, 星期日 09:06  回复(2) |  引用(0) 加入博采

常用GDB命令

GDB很强大也很简单。基本调试用以下命令足够了。

 (1)准备工作 gcc -o test -g test.c

(2)加载文件 file test

(3)显示源程序 list

(4)设置断点 b 101

(5)执行程序 run /home/test.csv 12

(6)打印变量 print sTemp

(7)设置变量 set sTemp="Test"

(8)跳到制定行数执行 jump 102

(9)执行下一行 next step

(10)退出 quit

- 作者: kes2000 2007年11月16日, 星期五 17:29  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: kes2000 2007年09月24日, 星期一 16:53  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: kes2000 2007年09月24日, 星期一 16:53  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: kes2000 2007年09月24日, 星期一 16:51  回复(0) |  引用(0) 加入博采

日本沈没

夢は何故かはかなくて
朝の風がそっと奪う
恋は不意に苦しめて
言葉行き場すべて閉じこめる

途切れない
この願い

声に成らない愛しさは
堪えるほどに溢れ出してく

守りたい
迷わない
重ねた鼓動果てまで

回り逢えた命は
時も越えて響きあう
たとえ涙落としても
抱きしめられてずっとKeep holding you

君がくれた情熱を
季節に変えて返していこう
君に染まるメロディーを
風に乗せてずっと届けよう

守りたい
迷わない
胸のつこさ翼広げて

この宇宙を色取る
かけらのまま感じあう
たとえ遠く離れても
抱きしめているずっと

めぐり逢えた命は
時も越えて響きあう
たとえ涙落としても
抱きしめられてずっとKeep holding you

Let me love you
I will hold you
Let me squeeze you
And we're gonna sing this song

Let me love you
I will hold you
Let me squeeze you
Baby on and on and on

- 作者: kes2000 2007年09月23日, 星期日 13:48  回复(0) |  引用(0) 加入博采

已锁定
此日志的浏览权限已被作者锁定,请同作者联系,发送短消息,如果你的身份符合作者的要求,点击此处可以进行浏览

- 作者: kes2000 2007年09月20日, 星期四 17:41  回复(0) |  引用(0) 加入博采