当前位置:文档之家› Oracle日常维护总结

Oracle日常维护总结

Oracle日常维护总结
Oracle日常维护总结

Oracle日常维护总结

检查TNS是否正常

c:>tnsping ora9

检查登陆用户是否正常

c:>sqlplus user/password@SID

SQL>connect system/manager as sysdba

sys/chang_on_install

导入数据:

imp user/pwd file=*.dmp commit=y 回滚段满就提交,不无限扩展回滚段。

imp user/pwd file=*.dmp commit=y full=y

imp user/pwd file=*.dmp commit=y table=*

查询所有用户:

select username from dba_users;

===========================================================

sco unix中旧版oracle开关数据库

关数据库文件在/etc/rco.d/k100ra

开数据库文件在/etc/rc2.d/sqsora

$sqldba lmode=y

sqldba>connect internal;

sqldba>shutdown immediate;

sqldba>startup;

--------------------------------

svrmgrl

svrmgr>connect internal

svrmgr>shutdown immediate

svrmgr>startup

lsnrctl

lsnrctl>stop

lsnrctl>start

===========================================================

表空间变大的问题!

UNDOTBS1的表空间增大,现已经达到11G,数据并不大,不知道什么原因造成的!

您可以增加回退段storage中的optimal属性,这个属性就是当回退段中没有活动事务时,自动回缩回退段到optimal设定的值,具体语句如下:sql>alter rollback segment 回退段名字storage (optimal 10M);

另外您还可以手工回缩回退段,sql>alter rollback segment 回退段名字shrink to 10M;

继续问一下回滚段问题,UNDOTBS设定是2G,最大没限制,现它已增长到了9G,查了一下,数据现占用3G左右,我用命令:sql>alter rollback segment 回退段名字shrink to 4G;时提示ORA-30019: Illegal rollback Segment operation in Automatic Undo mode,现该怎么缩小它啊?

alter rollback segment 回退段名字shrink to 4G 只允许在回退段为手动管理模式下使用,自动管理时不可使用。

请查看数据库参数show parameter undo_

===========================================================

看用户下有多少个procedure,删除命令

1、想看用户下有多少个procedure请执行以下sql语句:

sql>select * from user_objects where object_type='PROCEDURE';

2、删除用

sql>drop procedure procedure_name;

===========================================================

oracle高版本库向低版本库如何移植?操作成功的方法?

oracle高版本的导出(exp)不能向低版本库使用(imp)导入,要移植可以将高版本库中数据输出成文本,再用sqlload装入低版本库。

低版本的导入工具不能导入使用高版本导出工具创建的导出文件。为了移动表与数据库对象,需要使用与目标数据库兼容的低版本导入,导出工具。如:希望将对象从8i移到8中,则可使用8i服务器上的Oracle8导入导出工具创建文件,以便在8上可以读取此文件。catexp7.sql即为此用,可选择不同的部分(imp,exp)执行,但有一点要注意,8i中的新对象不能被导出和导入到8中。

===========================================================

在数据库中,建有100多个库,运行SELECT * FROM CAT;命令后,大部分库名都运行过去了,只看到最下方的几个,如何全部看到所有的数据库

进入sqlplus环境,执行set pause on,在执行select * from cat;

按回车键就可以分屏看了

===========================================================

表空间使用率

一、如何查看tablespace的空间使用情况

sql>select

a.file_id fileid,

a.file_name 文件名,

a.tablespace_name 表空间名,

a.bytes total_bytes,

(a.bytes-sum(nvl(b.bytes,0))) 已使用,

sum(nvl(b.bytes,0)) 未使用,

sum(nvl(b.bytes,0))/(a.bytes)*100 未使用率

from dba_data_files a, dba_free_space b

where a.file_id=b.file_id

group by a.tablespace_name,a.file_id,a.bytes,a.file_name

order by a.file_id

二、如何查看table的空间使用情况

1、analyze table tablename(你想查的表名) compute

statistics;

2、select table_name,blocks,empty_blocks from dba_tables

where table_name=‘ ’;

===========================================================

用户在进行输入操作时,输入了两条完全一样的记录。当用户想删除这条记录时,系统出错,提示“多条记录被操作”。无法删除记录。请教高手,如何解决问题。

1、select rowid,其他列名from tablename;(你想进行删除操作的表名)。

2、记下你想删除的记录所对应的rowid的值

3、delete from tablename where rowid='rowid的值';

应该就可以了。

where 条件加上rownum=1 就可以删除第一条记录。注意,rownum只能接“=”或“<”,不能接“>”。

其实使用rownum有很大的局限性,比如,只能删除rownum=1的行。

可使用“相关删除”的方法删除重复记录:

SQL>delete tname o where o.rowid <>

(select max(rowid) from tname i

where i.colname=o.colname);

其中:colname为基表tname的列名,可用多列。

===========================================================

我用select

b.file_id file_id,

b.tablespace_name tablespace_name,

b.bytes/1024 bytes,

(b.bytes-sum(nvl(a.bytes,0)))*1.0/1024 used_spaces,

sum(nvl(a.bytes,0))/1024 free_spaces,

sum(nvl(a.bytes,0))/(b.bytes)*100 free_pict

from dba_free_space a,dba_data_files b

where a.file_id=b.file_id

group by b.tablespace_name,b.file_id,b.bytes

order by b.file_id

查看free_space 还有6.26% ,大量删除记录后,查看free_space 仍为6.26% ,不知何故? 如何释

放表空间?

举个例子吧:一个表空间大小为10M,它里边有一张表,这张表当前的大小为2M,则不论这张表里有多少数据,哪怕它是一张空表,它仍然占用了这个表空间2M的空间。

至于你说的如何释放表空间,看了你的描述,你是对表空间里的一些表进行了大量的删除操作,对于你这种情况,你可以用以下SQL语句试试:

ALTER TABLE tablename DEALLOCATE UNUSED;(这里的tablename是指你进行过大量删除操作的表)

===========================================================

如何修改ORACLE的字符代码集,如何用SQL语句可以修改(ZHS16GBK)(ZHS16CGB231280)

在sys用户下:

update table props$ set vaules='ZHS16CGB213280' where name='nls_lang';

update props$ set value$='ZHS16CGB231280' where name='NLS_CHARACTERSET';

update props$ set value$='ZHS16CGB231280' where name='NLS_NCHAR_CHARACTERSET'; commit;

===========================================================

某存储过程被锁死,用drop命令不能删除,如何停止该存储过程?

1 select job,failures from user_jobs;

2 exec dbms_job.remove(the content of job);

3 drop procedure ..;

===========================================================

1.怎么验证监听已经开启?

命令:lsnrctl status

2.tnsnames.ora除了修改HOST的地址外还需要改别的地方吗?

host地址,SERVICE_NAME

3.数据库怎样open?

命令:svrmgrl

svrmgr>connect internal

svrmgr>startup

===========================================================

ORACLE表空间恢复方案

一)用户表空间

错误:

在启动数据库时出现ORA-01157,ORA-01110或操作系统级错误例如ORA-07360,在关闭数据库(使用shutdown normal或shutdown immediate) 时将导致错误ORA-01116,ORA-01110以及操作系统级错误ORA-07368

解决:

以下有两种解决方案:

1.用户的表空间可以被轻易地重建

即最近导出的对象是可用的或表空间中的对象可以被轻易地重建等.在这种情况下,最简单的方法是offline并删除该数据文件,删除表空间并重建表空间以及所有的对象.

svrmgrl> startup mount

svrmgrl> alter database datafile filename offline drop;

svrmgrl> alter database open;

svrmgrl> drop tablespace tablespace_name including contents;

重建表空间及所有对象.

2.用户的表空间不能够被轻易地重建

在大多数情况下,重建表空间是不可能及太辛苦的工作.方法是倒备份及做介质恢复.如果您的系统运行在NOARCHIVELOG模式下,则只有丢失的数据在online redo log中方可被恢复。步骤如下:

1)Restore the lost datafile from a backup

2)svrmgrl> startup mount

3)svrmgrl> select v1.group#,member,sequence#,first_change#

> from v$log v1,v$logfile v2

> where v1.group#=v2.group#;

4)如果数据库运行在NOARCHIVELOG模式下则:

svrmgrl> select file#,change# from v$recover_file;

如果CHANGE# 大于最小的FIRST_CHANGE#则数据文件可以被恢复。

如果CHANGE# 小于最小的FIRST_CHANGE#则数据文件不可恢复。恢复最近一次的全备份或采用方案一.

5)svrmgrl> recover datafile filename;

6)确认恢复成功

7)svrmgrl> alter database open resetlogs;

3.只读表空间无需做介质恢复,只要将备份恢复即可.唯一的例外是:

表空间在最后一次备份后被改为read-write 模式

表空间在最后一次备份后被改为read-only 模式

在这种情况下,均需进行介质恢复

二)临时表空间

临时表空间并不包含真正的数据,恢复的方法是删除临时表空间并重建即可.

三)系统表空间

如果备份不可用,则只能采用重建数据库的方法

四)回滚表空间

有两种情况:

1、数据库已经完全关闭(使用shutdown immediate或shutdown命令)

1) 确认数据库完全关闭

2) 修改init.ora文件,注释"rollback-segment"

3) svrmgrl> startup restrict mount

4) svrmgrl> alter database datafile filename offline drop;

5) svrmgrl> alter database open;

基于出现的结果:

"statement processed" 转(7)

"ORA-00604,ORA-00376,ORA-01110"转(6)

6) svrmgrl> shutdown immediate

修改init.ora文件,增加如下一行:

_corrupted_rollback_segments = (,...)

svrmgrl> startup restrict

7) svrmgrl> drop tablespace tablespace_name including contents;

8) 重建表空间及回滚段

9) svrmgrl> alter system disable restricted session;

10) 修改init.ora文件

2、数据库未完全关闭(数据库崩溃或使用shutdown abort命令关闭数据库)

1) 恢复备份

2) svrmgrl> startup mount

3) svrmgrl> select file#,name,status from v$datafile;

svrmgrl> alter database datafile filename online;

4) svrmgrl> select v1.group#,member,sequence#,first_change#

> from v$log v1,v$logfile v2

> where v1.group#=v2.group#;

5) svrmgrl> select file#,change# from v$recover_file;

见一方案2-4

6) svrmgrl> recover datafile filename;

7) svrmgrl> alter database open;

3、数据库处于打开状态

1) 删除回滚段和表空间

2) 重建表空间和回滚段

五)控制文件恢复

1.所有的控制文件均被破坏

将备份的控制文件拷贝至原目录下

对于RAW DEVICE,则:

dd if='con.bak' of='/dev/rdrd/drd1' seek=128

2.并非所有的控制文件均被破坏

用其他的控制文件启动数据库

===========================================================

如何限制用户登录使用ORACLE??

我使用的是oracle816,但是在$ORACLE_HOME/network/admin/中

没有protocol.ora文件,自己生成一个文件,然后怎加两行:

protocol.INVITED_NODES=(10.21.2.51,10.21.72.8,10.21.72.15)

protocol.VALIDNODE_CHECKING=yes

其中10.21.2.51是数据库服务器的地址,10.21.72.8,10.21.72.15是用户机的地址,可是其他机子还是能使用服务器

可能有一些同志对这个话题比较感兴趣,我下面就把具体步骤写一下,希望对大家的工作有所帮助:

对于oracle7:

1、编辑$ORACLE_HOME/network/admin/protocol.ora文件

tcp.invited_nodes=(ip1,ip2....)(这里的ip必须包括数据库所

在机器的所有地址)

tcp.validnode_checking=yes

2、重启listener

对于oracle8:

1、编辑$ORACLE_HOME/network/admin/.protocol.ora文件(注意前边

有个点)

tcp.invited_nodes=(ip1,ip2....)(这里的ip不必包括数据库所

在机器的地址)

tcp.validnode_checking=yes

2、重启listener

以后不管在文件中增加或减少ip,修改完文件后,都必须重启listener,改动才能生效。

===========================================================

查看某个表的空间使用情况:

1、analyze table tablename(你想查的表名) compute statistics;

2、select table_name,blocks(已使用的块数),empty_blocks(未使用的块数)from dba_tables where table_name=‘’;

查看某个表占表空间的大小:

select segment_name,tablespace_name,bytes,blocks from user_segments where segment_type='';

===========================================================

我们一个服务器的文件系统坏了,oracle的系统文件都找不回来了,但是应用程序的数据文件还是好的。

请问能否重新安装oracle后将没有损坏的数据文件加入数据库中?

你所说的应用程序的数据文件还是好的,到底是导出的数据文件,还是oracle的核心文件(Control files,Data files,Redo log files)?如果是导出的数据文件,oracle装好后重新导入即可;如果是核心文件是好的,并且是在oracle关闭时备份出来的,则可对应目录copy回去,重新启动oracle。

Oracle的核心文件Control files,Data files,Redo log files)所在的文件系统/oracle都坏了,只有用户的数据文件是好的(/dbf/cxgl.dbf,/dbf/hygl.dbf)?

用户的表空间数据库文件(/dbf/cxgl.dbf,/dbf/hygl.dbf)是无法被别的oracle系统open的,如果你没有做导出备份或oracle的冷备份,那你就没办法了。请记住重要数据要做备份!!!

连控制文件都坏了,那就没有什么办法了,这些数据文件已经无法使用了

===========================================================

if rtrim(:cz.yfbz) is not null then

:xck.yfbz:='# = '||''''||rtrim(:cz.yfbz)||'''';

break;message('xck.yfbz='||:xck.yfbz); *我加的跟踪显示*/

end if;

if rtrim(:cz.czjm) is not null then

:xck.cz:='# in (select cz from zd.czzd where jm='''||

rtrim(:cz.czjm)||''')';

end if;

这段程序是由块CZ中的域YFBZ和域CZJM的内容来改变块XCK的查询条件。如当我在CZ.YFBZ中输入A时,执行的结果就是XCK对应的表中YFBZ='A'的记录.而在跟踪信息中显示的是"xck.yfbz=# = 'A'".

我要请教的是在这里"#"是什么意思?如何才能动态改变块的查询、排序条件?

你用的是form30;你可以在你的xck.cz的触发器中会发现pre_query这个出发期,然后你打开看一下其中的内容,你会发现有#,实际这是一种表示方式,既根据你所输入的cz信息作为查询条件来进行查询。这是一种基于动态的最简单的查询处理的程序编写方式,很实用但很老套。

针对于动态改变块的查询和排序条件可以通过程序设置属性的办法来进行处理;希望你能明白!

简单的方法:使用全局变量来设定动态查询

===========================================================

注:解释快照

ORACLE的表快照特征允许一个主表在分布式数据库的其它结点进行复制。只允许修改主表,而复制只可读。主表达式每一个复制称为一个快照。快照异步的刷新,反映主表的一个最近事务一致状态。

一个快照可为表的完全拷贝或者为表的一个子集,由引用一个或多个主表、视图或其它快照的分布式查询所定义。包含主表的数据库称为主数据库。

快照有简单快照和复杂快照。简单快照的每行是基于单个远程表中的一行。所以定义简单快照的查询中不能有GROUB BY或CONNECT BY子句,或子查询、连接或集合操作。如果在快照定义的查询中包含有上述子句或操作,这种快照称为复杂快照。

在快照建立时,ORACLE在快照的模式中建立几种内部对象:

在快照结点,ORACLE建立一基表用于存储由快照定义的查询所检索的行,然后为该表建立一个只读的视图,并为远程主表建立一视图,该视图用于新快照。

一个快照周期地被刷新,反映它的主表的当前情况。为了刷新一快照,快照定义查询是被发出,其查询结果想在存储在快照中,代替以前的快照数据。

当快照为简单快照时,可以由快照日志来刷新,这样可加快刷新处理。快照日志是在主表数据库中的一表,与主表相关。ORACLE使用快照日志跟踪主表中已修改的行。当基于主表的简单快照刷新时,仅需要快照日志的相应行来刷新快照,这种刷新称为快速刷新。

===========================================================

我用SELECT 序列名.NEXTVAL FROM DUAL;

可以从序列中查出它的下一个值,但是这样也改变了它的当前值,现在我需要在不改变序列的值的情况下查出它的当前值,以同步我的备份数据库的序列,应如何操作?

可以用SELECT 序列名.CURRVAL FROM DUAL;查看序列生成器的当前值而不改变序列生成器的值。

1 用nocache方式创建序列;

2 select last_number-1 from user_sequences where SEQUENCE_NAME=序列名;

--------------

我用cruuval查询时出现如下提示,是什么原因?

SQL> select cre_lsh.currval from dual;

ERROR:

ORA-08002: sequence CRE_LSH.CURRVAL is not yet defined in this session

no rows selected

新建的sequence并没有值,要想让它有值,你必须先要执行:select sequence_name.nextval from dual;然后再执行:select sequence_name.currval from dual;才能有值返回

===========================================================

在不用全用户方式的情况下,能否用exp命令倒出若干表和序列,

只有在user和full database模式下,才能导出sequence。而在table和tablespace模式下,无法导出sequence

===========================================================

ora-12154 不能解析服务名

我在oracle数据库服务器端使用sqlplus @连接串,连接本地数据库或其他数据库,显示错误信息:

ERROR:

ORA-12154: TNS:could not resolve service name

用tnsping 测试

TNS-03505: Failed to resolve name

可以肯定tnsnames.ora 参数文件正确,客户端也可以正确连接数据库。服务器运行环境为AIX V4.3,ORACLE8.1.6,请各位高手赐招。

-----------

一、先重写这段参数(防止其中包含不可见字符)。

二、确认参数中应用的是sid还是service_names(此参数应与初始化中的设置一致)

tnsnames.ora文件在另一运行的数据库上能正确使用,我曾删除该文件测试,结果错误消息同样。测试中应用sid、service_names(都有定义)错误消息同样。初始化文件initora816.ora 中

global_names = false。

----------

在服务器端不妨用oracle提供的netasst软件重配一个连接串试试。

按照您的建议,我重建了TNSNAMES.ORA,在netasst中测试成功,但在命令行测试还是同样的错误信息。我判断问题不在TNSNAMES.ORA文件。

----------

问题解决了。在.profile文件中添加了TNS_ADMIN=$ORACLE_HOME/network/admin

这是oracle默认路径。

===========================================================

我想将aix4.3 下的oracle(版本7.2.3) 基表快照到win2000 server 下,没有做成,想求教各位大侠高手。

一.环境

主机端: aix4.3, oracle7.2.3

快照端: windows 2000 server, oracle 8.1.6

二. 做法

1. 在主机端创建日志

SQL>create snapshot log on clk;

2. 重新启动监听

$lsnrctl start

3. 编辑快照端win2000 下的init.ora,增加

job_queue_interval=20

snapshot_refresh_processes=1

4. 编辑快照端win2000 下的tnsnames.ora,增加

SNAP_TNS_TSJ =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.211.8.38)(PORT = 1521))

)

(CONNECT_DATA =

(SID = ora7)

)

)

5. 重新启动快照端win2000的数据库

6. 创建用户

SQL>create user snap_test identified by snap_test;

SQL>grant connect,resource,create snapshot to snap_test;

7.创建连接

SQL> create database link lzlj_to_tsj connect to yz identified by yzyz using 'SNAP_TNS_TSJ';

8.创建快照

SQL> create snapshot snap_clk refresh fast start with sysdata next sysdate+1/144

2 with rowid as select * from yz.clk@lzlj_to_tsj;

ERROR 位于第2 行:

ORA-02085: 数据库链接LZLJ_TO_TSJ与ORA7.WORLD相连结

出现以上2085错误,请高手指正。

------------

请将windows2000上的oracle初始化文件中的global_names参数值改成false。然后重启数据库,再试一次。

===========================================================

如何创建DBMS_STANDARD:

1.以管理员用户连接数据库

2.sql>@$ORACLE_HOME/rdbms/admin/catalog.sql

sql>@$ORACLE_HOME/rdbms/admin/catproc.sql

===========================================================

8i中并不是用svrmgrl来启动数据库的,svrmgrl只是ORACLE的一个工具;而到了9i,ORACLE 就不提供这个工具了,想启停数据库,你可以这样做:在操作系统下

$sqlplus " / as sysdba"

sql>startup

就可以了

===========================================================

表中有好几万行数据删除后,怎么回收表空间?

删除表中的数据后,数据库是无法自动回收那些空闲空间的。

如果这张表中已经没有有用的数据了,你可以把它truncate掉;如果表里的数据还有用,那么你只能是把数据export出来,再improt进去。

仅仅靠删除表中的内容,是无法增加表空间的剩余空间的。举个例子吧:一个表空间大小为10M,它里边只有一张表,这张表当前的大小为2M,则不论这张表里有多少数据,哪怕它是一张空表,它仍然占用了这个表空间2M的空间,所以,这个表空间现在的使用率为20%。如果你想增加某个表空间的剩余空间,除了对这个表空间中的表进行数据删除工作外,还需对这个表空间中的所有表进行数据重组,即把这个表空间中所有的表都export出来,然后再删除表空间中所有的表,再把export出来的数据import进这个表空间。这是我所知道的增加表空间剩余空间最好的方法。

如果仅对清除的那些表执行一遍export和import,是否可以增加剩余表空间?

可以的

===========================================================

ora-01034: ORACLE not available

ora-27101:shared memory realm does not exist

如何解决?

环境:

PIII800 windows 2000 ,384M,20G ora817

单网卡,双地址(改成单地址后依旧)

system的密码也忘了,怎么办?

你先这样做试试:

1、把ORACLE_HOME\network\admin\sqlnet.ora文件中的sqlnet.authentication_services=(NTS)给注释掉

2、重启机器

看看这样行不行

-------------

oracle成功启动了,

但system的密码给忘了,我该怎么办???

sqlnet.authentication_services=(NTS)什么意思呢??

1、sqlnet.ora文件中的sqlnet.authentication_services参数是指定oracle的认证方式,它的值可以是:NONE、ALL、BEQ、NTS等,其中NTS是基于的NT的一种认证方式。如果要想使用此参数,在安装oracle时需要安装相应的选件。oracle建议不要使用此参数,既把它注释掉,或把值设为NONE。

2、system密码忘了,没关系,你可以用internal用户登陆数据库,然后执行以下sql语句,修改system用户的口令:alter user system identified by new_password

internal密码忘了,处理起来就比较麻烦了。

1、在win2000“服务”项中,把和oracle有关的服务的启动类别都改成“手动”

2、重启机器

3、确认数据库没有随机器的启动而启动

4、进入到$ORACLE_HOME\DATABASE目录下,找到口令文件,它的名字类似于PWDsid,先把它做个备份,然后删除它。

5、重新创建口令文件:

orapwd file=%ORACLE_HOME%\DATABASE\PWDsid password= entries=50

6、启动数据库

就可以了

===========================================================

我想做逻辑备份!

怎样才能把数据库的数据直接备份到磁带上,而不需要先备份到盘上,再由盘到磁带上这种备份方式?

$exp full=y userid=system/manager file=/dev/rmt/0m volsize=0

其中/dev/rmt/0m 指定磁带,volsize参数指定写入磁带的数据量,如为0,写满或写完。$imp full=y userd=system/manager file=/dev/rmt/0m volsize=0

非常感谢楼上这位朋友,说实话,我还真不知道export/import有这种用法。根据你的回答,又看了些资料,我想对这个问题再说几句,算是对你回答的一个补充吧。

要想使用export直接把数据导到磁带上,需要改变exp命令中的两个参数:一个是file,它要指向磁带设备,比如/dev/rmt0;一个是volsize,它用来指定导出文件的大小:如果导出的文件大小小于/等于磁带容量,则volsize可以设为0;如果导出文件大小大于磁带容量,则volsize应该设成一个合适的值,比如设成比磁带容量稍微小一些的值(不要设成和磁带一样大),当这盘磁带用完后,系统会提示你放入新的磁带;volsize的后缀可以是K,可以是M,也可以是G,或者没有;在import时,volsize应该和exp时的值一样。

===========================================================

以管理员用户登陆数据库:

sql>select * from v$version

能看到数据库的当前版本

显示系统日期:

sql>select sysdate from dual

显示系统时间:

sql>select to_char(sysdate,'HH:MI:SS') FROM DUAL

===========================================================

1.使用SQL语句如何将数据表导出为磁盘文件?

2.使用SQL语句如何将磁盘文件导入数据表?

1、例如将scott用户下的student表导出为磁盘文件

sqlplus system/manager

SQL>host exp scott/tiger file=student.dmp tables=student

2、例如将student.dmp文件导入到scott用户下

sqlplus system/manager

SQL>host imp scott/tiger file=student.dmp tables=student

===========================================================

1、如何创建新的service name?

可以在客户端tnsnames.ora文件中增加新的service name的定义,具体格式可以比照此文件中其它service name的格式。

2、如何判断新建立的服务正常?

在客户端可以这样sqlplus username/password@new_service_name连接一下数据库,来测试新建的service name是否正确。

===========================================================

1、查看当前登陆的用户:

sql>show user

2、查看当前用户拥有的表空间:

可以查看user_tablespaces数据字典

3、查看表空间的使用的大小:

可以查看user_segments数据字典

sql>select * from v$instance;

可以知道当前实例名,即init$$$.ora 的$$$.

===========================================================

如何清空(加大空间)ORACLE数据库的日志文件?

举个例子,新建的redo log只是起个过渡作用,新建几个redo log无所谓,哪怕一个都可以。在oracle中,redo log是循环使用的,即同一组的redo log写满后,系统会自动往下一组redo log中写,而此redo log中原有的内容就被新内容所覆盖,如此周而复始。

如何加大redo log的大小

方法:加入新的大的日志文件,然后删掉旧的小的日志文件

假设现有三个日志组,每个组内有一个成员,每个成员的大小为1MB,现在想把此三个日志组的成员大小都改为10MB

1、创建2个新的日志组

alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k; alter database add logfile group 5 ('D:\ORACLE\ORADATA\ORADB\REDO05_1.LOG') size 1024k;

2、切换当前日志到新的日志组

alter system switch logfile;

alter system switch logfile;

3、删除旧的日志组

alter database drop logfile group 1;

alter database drop logfile group 2;

alter database drop logfile group 3;

4、操作系统下删除原日志组1、2、3中的文件

5、重建日志组1、2、3

alter database add logfile group 1 ('D:\ORACLE\ORADATA\ORADB\REDO01_1.LOG') size 10M; alter database add logfile group 2 ('D:\ORACLE\ORADATA\ORADB\REDO02_1.LOG') size 10M; alter database add logfile group 3 ('D:\ORACLE\ORADATA\ORADB\REDO03_1.LOG') size 10M;

6、切换日志组

alter system switch logfile;

alter system switch logfile;

alter system switch logfile;

7、删除中间过渡用的日志组4、5

alter database drop logfile group 4;

alter database drop logfile group 5;

8、到操作系统下删除原日志组4、5中的文件

===========================================================

怎样将所有用户的数据都导出?

你可以使用完全的逻辑备份:

> exp system/manager full=Y file=dba.dmp

SYS用户和SYSTEM用户有什么区别,能否用SYS用户备份?

可以用sys用户备份,这两个用户没什么区别,都是系统管理员。

===========================================================

如何把9i中导出的数据导入8i中??

在oracle8i端连接9i,运行>exp user9i/pwd9i@Ora9iSID ...

再导入imp user8i/pwd8i ....

===========================================================

1、搜集回退段的信息:

select segment_name,tablespace_name,initial_extent,next_extent, max_extents from dba_rollback_segs;

可以知道回退段的名字、所在表空间、extent的信息,可以算出每个回退段的最大值只有10多M。

select segment_name,extents from dba_segments where segment_name like‘R0%’;

可以知道回退段现在的大小

2、搜集回退段表空间的信息:

select * from dba_tablespace where tablespace_name=' ';

可以算出回退段表空间的最大值为10多M

3、找出与回退段表空间对应的数据文件的信息:

select file_name,tablespace_name,bytes from dba_data_files

where tablespace_name='回退段表空间名';

可以知道数据文件有8M

4、了解以上情况后,我决定给回退段表空间增加一个数据文件:

alter tablespace tablespace_name add datafile '文件全路径名' size 500M;

5、从第一步中查出回退段的max_extents值为121。在oracle7.2.2中,max_extents的最大值和db_block_size的值有关,这个数据库的db_block_size为2K,所对应的最大max_extents 值为121,所以,在不重启数据库的情况下,已经无法通过增加回退段的max_extents值来增加回退段的大小了,所以我选择了增加回退段的next_extent值来增加回退段的大小:sql>alter rollback segment name shrink to 131K(这个值是第一步中查出的initial_extent的值);除系统回退段外,有几个回退段,以上语句就执行几次

sql>alter rollback segment name storage (next_extent 1M);

除系统回退段外,有几个回退段,以上语句就执行几次

这样就完成了增加回退段大小的工作。

===========================================================

怎样能在unix下将ORACLE数据导出成文本文件.

例如将SCOTT用户下的DEPT表的内容导出成文本文件:

SQLPLUS SCOTT/TIGER

SQL>SET HEADING OFF

SQL>SQL> SET COLSEP ,

SQL> SPOOL C:\A.TXT

SQL> SELECT * FROM DEPT;

10,ACCOUNTING ,NEW YOR

20,RESEARCH ,DALLAS

30,SALES ,CHICAGO

40,OPERATIONS ,BOSTON

SQL> SPOOL OFF

其生成的文本文件是A.TXT。

===========================================================

create tablespace ajs datafile 'c:\ccc.ora' size 5M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED default storage(initial 128k next 1M pctincrease 0);

用一段时间后,报错:

ORA-01536: 超出表空间'CCC'的空间限量

产生这个问题的原因是:某个用户已经达到了他在这个表空间上的quota值。请检查是哪个用户,并增加他的quota值:

sql>alter user username quota 数值(K/M)on ccc;或者

sql>alter user username quota unlimited on ccc;

===========================================================

我想在unix下成批运行ORACL中的命令:如:

1:spool c:\a.txt

2:select * from dept

3:spool off

4: exit 这四步我能否形成一个文件,然后执行这个文件.

把下列命令存放到一个SQL文件中,如:a.sql

spool a.txt

select * from dept;

spool off

exit

然后执行:

#sqlplus -s scott/tiger @a.sql

===========================================================

set echo off:表示在执行一个SQL*PLUS命令文件时,其中的各条命令不显示在屏上,但命令结果还是要显示的。

要将结果也不显示,可使用set term off

在执行SQL*PLUS命令文件时,按如下执行:

sqlplus -s scott/tiger @ls.sql >a.txt

也可输出到一个空设备上。

===========================================================

请问我想使一个文件在17:50运行该如何做.这其中有sql语句?

在AIX上处理的方法,也许对你有用。

1、编辑一个文件(如:ls),把ORACLE的一些环境变量加进去,最后再加入你要执行的SQL*PLUS 文件,如:

ORACLE_HOME=/u01/oracle; export ORACLE_HOME

ORACLE_SID=ora8; export ORACLE_SID

PATH=$ORACLE_HOME/bin:/usr/local/bin:/usr/sbin:$PATH

export PATH

sqlplus -s scott/tiger @a.sql

2、为该文件加上执行权限

chmod +x ls

3、再编辑一个文件(如:ls1)

50 17 * * * /u/ls

4、为该文件加上执行权限

chmod +x ls1

5、在操作系统下执行:

#crontab ls1

查看:#crontab -l

===========================================================

在用户/u/yzyz下有一个文件sqlnet.log,由于系统使用时间较长,该文件已经很大,我想将此文件删除,不知道可以吗?

这个文件里记载了一些listener的信息,也包括一些出错信息。我没有删过它,不过你可以把它清空,请用以下操作系统命令:

#cp /dev/null $ORACLE_HOME/network/admin/sqlnet.log

===========================================================

log_archive_start参数是指是否启动归档进程。数据库在归档模式下,如果把log_archive_start 设为true,既启动归档进程,那么归档是由归档进程自动完成的。现在你把它设成了false,即不启动归档进程,那么,归档就要由手动来完成。现在你的数据库是归档模式,在进行大规模的import时,redo log要进行频繁的切换,redo log每进行一次切换,就要产生一个archive

log,而现在数据库的归档进程没有启动,所以,就需要手动来进行归档,而如果你没有手动的去进行归档,那么数据库就会挂在那里,等待归档的产生。

解决你这个问题这么几种方法:

1、Import时,在数据库挂起后,用以下sql命令手动进行归档(不过,不推荐使用这种方法):sql>alter system archive log all;

2、把log_archive_start设为true,启动归档进程。

3、把数据库设成非归档模式。在RAC模式下,请按以下步骤进行操作:

1)shutdown数据库(不要用abort方式)

2)修改init.ora文件,把cluster_database参数改为false

3)sql>startup mount

4)sql>alter database noarchivelog;

5)sql>shutdown

6)修改init.ora文件,把cluster_database参数改为true

7)startup

===========================================================

定义.protocol.ora文件限制ip地址访问后,从启数据库后,所加的限制不起作用,请帮我分析一下。.protocol.ora文件放在/oracle/app/oracle/product/8.1.7/network/admin

listener已重启

# cat .protocol.ora

# Check for valid IP (YES/NO)

tcp.validnode_checking=YES

# Include list: Only allow these Hosts/IP.

tcp.invited_nodes=(10.114.26.60,10.114

26.61,10.114.26.65)

主机重启后,.protocol.ora作用生效!

protocol.ora文件中的地址是否可以用地址段的形式添加,如何添加?

此文件支持通配符,可以用地址段的形式添加,比如10.1.1.*或者10.*等等等等以此类推。补充说一下地址段的格式,比如:

tcp.invited_nodes=(10.1.1.1-10.1.1.100)

===========================================================

能与ORACLE9I连接的客户端的最低版本为ORACLE7.3.4,而且需要把所有的补丁全部打上,而且就算这样做了,有时也会连不上9I端,还会报ora-3106的错,所以,ORACLE公司推荐最好使用ORACLE8以上的客户端与9I连接。

===========================================================

请问oracle如何在启动时调用参数文件init*.ora,如何检查当前使用的是哪一个init*.ora。

一、oracle如何在启动时调用参数文件init*.ora?

oracle默认的初始化文件的路径是:

1.unix下为$ORACLE_HOME/dbs

2.NT下为%ORACLE_HOME%\database

默认的初始化文件名为initsid.ora(这里的sid为当前数据库的sid),当启动数据库时,数据库系统会到以上默认的路径中寻找默认的初始化文件作为启动文件。

启动数据库时,还可以指定初始化文件的路径及名称,比如:

$sqlplus "/ as sysdba"

sql>startup pfile=/disk1/aaa.txt

二、如何检查当前使用的是哪一个init*.ora?

oracle中没有提供任何视图、数据字典或者是动态性能视图来告诉我们数据库正在使用的初始化文件是哪个,所以你无法知道当前使用的是哪一个init文件。

===========================================================

SQL>select 1 from dual where 1=1

----------------------------------------

SQL> select 1 from dual where ' '=' '

以上语句中,在每对单引号中间应该是一个空格

引号中间应该是字符串或者是日期型数据,所以引号中间必须有东西,空格属于字符串,所以可以检索出记录;如果引号中间什么都没有的话,就不符合sql语句的规则了。所以我觉得引号中间什么也没有是不行的。

''是空值,空值的比较是用IS NULL实现的。所以

select 1 from dual where '' IS NULL;就正确了

---------------------------------------

SQL> select 1 from dual where 1=1;

1

----------

1

SQL> select 1 from dual where ' '=' ';

1

----------

1

SQL> select 1 from dual where '' is null;

1

----------

1

===========================================================

我的oracle8.1.7在本机登陆时,运行sqlplus,显示SGA的数据高速缓冲区大小小于4k,登陆不进去,我重起数据库才解决。

不知道怎么样察看其所剩大小,如何用什么命令调整?

1、怎样察看sga区的大小?

sql>select * from v$sgastat where name='free memory';

2、sga参数不能动态调整,只能通过修改初始化参数文件,然后重新启动数据库来使它生效。

===========================================================

我认为产生ORA-01578错误的原因主要有两个:1、程序出错;2、非正常关闭数据库,如:shutdown abort。第一种情况,也许可以通过打补丁来避免;第二种情况,应尽量避免使用该指令来关闭数据库。

解决方案:

1、如是用户裸设备数据文件出现ORA-01578错误,应及时对该用户做一次导入、导出操作。(最好重建表空间)

2、如是系统裸设备数据文件出现ORA-01578错误,那就比较麻烦了,你最好查一些资料,谨慎从事。

附:ora-01578英文说明

ORA-01578 ORACLE data block corrupted (file # string, block # string)

Cause: The data block indicated was corrupted, probably due to program

errors.

4-12 Oracle8 i Error Messages

Action: Determine which object was corrupted using a command like the

following:

SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS

WHERE file = FILE_ID AND block BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1;

where values for file and block are from the message.

Try to restore the segment containing the block indicated. This may involve

dropping the segment and re-creating it. If there is a trace file, report the errors

in it to Oracle Customer Support.

ORA-01578错误说明你的ORACLE 数据块被损坏了。

原因:数据块指针被损坏了,可能是由于程序错误引起的。

解决办法:使用以下的命令以确定哪个对象被损坏了:

SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE file = FILE_ID AND block BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1;

执行后会返回相关的文件及块信息。你可以试着恢复包含该块指针的段,主要是删除以及重建该段。如果有日志文件,仔细看看!

===========================================================

oracle8i在windows下的卸载过程,你看一下,也许对重装oracle6有用。

* 系统环境:

1、操作系统:Windows 2000 Server,机器内存128M

2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版

3、安装路径:D:\ORACLE

* 卸载步骤:

1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务。

Oracle DBA 数据库日常维护手册 常用SQL 脚本

Oracle数据库日常维护 【版本整理日期:2011/02/26 】 版本整理人:1634068400@https://www.doczj.com/doc/b41781040.html, 本文档包含以下内容: 1.Oracle数据库日常维护 2.Oracle DBA 常用管理脚本 3.Oracle DB 常用SQL 语句

/******************************************************** https://www.doczj.com/doc/b41781040.html,(若跳转不成功,请复制到浏览器或联系Q) https://www.doczj.com/doc/b41781040.html,/item.htm?id=7437120468Metalink Sharing ********************************************************/

在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。 一、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: l数据库的启动、关闭,启动时的非缺省参数; l数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; l对数据库进行的某些操作,如创建或删除表空间、增加数据文件; l数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA -600)

DBA 应该定期检查日志文件,根据日志中发现的问题及时进行处理 问题 处理 启动参数不对 检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换 如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点 或归档操作的效率; 有人未经授权删除了表空间 检查数据库的安全问题,是否密码太简 单;如有必要,撤消某些用户的系统权 限 出现坏块 检查是否是硬件问题(如磁盘本生有坏 块),如果不是,检查是那个数据库对象 出现了坏块,对这个对象进行重建 表空间不够 增加数据文件到相应的表空间 出现ORA-600 根据日志文件的内容查看相应的TRC 文件,如果是Oracle 的bug ,要及时打 上相应的补丁 二、数据库表空间使用情况监控(字典管理表空间) 数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA 应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。 select tablespace_name,

Oracle数据库日常维护工作

文档编号
Oracle 数据库日常维护工作
凌群电脑有限公司 凌群电脑有限公司 2004 年 12 月 15 日

数据库日常维护工作》 《Oracle 数据库日常维护工作》

1.1 1.2 1.3 1.4 1.5 1.6

1. DBA 日常维护工作 ..................................................................................................................... 3 检查已经打开的所有实例 .................................................................................................... 3 检查最新的警告日志 ............................................................................................................ 7 检查数据库备份是否正确 .................................................................................................... 8 检查备份到磁带中的文件是否正确 .................................................................................... 9 检查数据库的性能是否合理,系统资源是否充足 ............................................................ 9 仔细阅读 ORACLE 标准文档 ............................................................................................... 10
2.晚间维护工作 晚间维护工作.............................................................................................................................. 10 晚间维护工作 2.1 收集相关表的统计数据 ....................................................................................................... 10 3.每周维护工作 每周维护工作.............................................................................................................................. 10 每周维护工作 3.1 检查异常的对象................................................................................................................... 10 3.1.1 检查现有的 NEXT_EXTENT 情况:............................................................................ 10 3.1.2 检查已有的 EXTENTS: .............................................................................................. 11 3.1.3 查看哪些表没有主键 .................................................................................................... 11 3.1.4 查找哪些主键是没有发挥作用的 ................................................................................ 12 3.1.5 所有作索引的主键都应是唯一的 ................................................................................ 12 3.2 检查是否有不安全的问题 ................................................................................................... 12 3.3 检查是否有错误 SQL*NET 日志 ....................................................................................... 13 3.4 归档当前告警日志 ............................................................................................................... 13 3.5 访问供应商站点................................................................................................................... 13 4.月维护工作 月维护工作.................................................................................................................................. 13 月维护工作 4.1 检查是否有异常的空间增长 ............................................................................................... 13 4.2 回顾以前数据库性能优化的调整 ....................................................................................... 14 4.3 检查 IO 瓶颈 ........................................................................................................................ 14 4.4 检查碎片的问题(8I 系统) ............................................................................................... 15
2

Oracle数据库日常维护手册

Oracle数据库日常维护手册 在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。 一、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动、关闭,启动时的非缺省参数; ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; ●对数据库进行的某些操作,如创建或删除表空间、增加数据文件; ●数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600) DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理 问题处理 启动参数不对检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; 有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限 出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 表空间不够增加数据文件到相应的表空间 出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁 二、数据库表空间使用情况监控(字典管理表空间)

数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。 select tablespace_name, count(*) chunks , max(bytes/1024/1024) max_chunk from dba_free_space group by tablespace_name; 个人收集整理 上面的SQL列出了数据库中每个表空间的空闲块情况,如下所示: TABLESPACE_NAME CHUNKS MAX_CHUNK -------------------- ---------- ---------- INDX 1 57.9921875 RBS 3 490.992188 RMAN_TS 1 16.515625 SYSTEM 1 207.296875 TEMP 20 70.8046875 TOOLS 1 11.8359375 USERS 67 71.3671875个人收集整理 其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle 数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合: alter tablespace 表空间名 coalesce; 然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。 MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。 对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。 三、查看数据库的连接情况

ORACLE数据库日常维护与管理手册

全球眼?(MEGAEYES)网络图像管理系统2.0 ORACLE日常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08

目录 全球眼?(MEGAEYES)网络图像管理系统2.0 (1) 1引言 (3) 1.1 目的 (3) 1.2 范围 (3) 1.3 参考资料 (3) 2日常维护与管理说明 (3) 2.1 运行环境 (3) 2.1.1硬件环境 (3) 2.1.2软件环境 (3) 2.2 数据库日常维护 (4) 2.2.1数据库初始设置 (4) 2.2.2每日工作内容 (5) 2.2.3每周工作内容 (6) 2.2.4每月工作内容 (7)

1引言 1.1目的 对于重要的商业系统来说,数据库系统的正常运行是保证商业应用平稳运行的关键。但是数据库在运行过程中可能会因为种种原因发生问题。这时,数据库的管理与日常维护工作将变得尤为重要。 为了指导数据库管理员做好日常维护工作,保证数据库系统的正常运行,特制定本文档。当然,数据库的日常维护是复杂和繁琐的,本文仅涉及一些常见的数据库日常维护的内容,在实际工作中,数据库管理员还需要做更多的工作。 1.2范围 本文档使用的人员:数据库维护管理人员和相关人员。 本文档涉及内容:oracle数据库的日常维护与管理解决方案。 1.3参考资料 中国电信网络视频监控技术(暂行)规范 2日常维护与管理说明 2.1运行环境 程序的运行环境包括硬件运行环境和软件运行环境。 2.1.1硬件环境 ◆CPU类型:Intel及其兼容系列CPU ◆内存容量:剩余内存要达2G以上 ◆硬盘容量:剩余硬盘容量要达1G以上 ◆网卡类型:100M网卡 2.1.2软件环境 ◆操作系统:RedHat Linux AS 3.0 ◆数据库:Oracle9i Database Release 2 (9.2.0.4.0) for Linux x86

Oracle数据库日常维护实施方案书

Oracle数据库日常维护方案书

————————————————————————————————作者:————————————————————————————————日期: 2

ORACLE数据库日常运行维护年度服务项目 方案书

目录 1 2 3 项目背景及目标 (5) 1.1项目背景 (5) 1.2项目目标 (5) 需求分析 (5) 项目总体方案 (7) 3.1数据库性能优化 (8) 3.1.1检查Oracle数据库性能 (8) 3.1.1.1 3.1.1.2 3.1.1.3 3.1.1.4 3.1.1.5 3.1.1.6 3.1.1.7 3.1.1.8 3.1.1.9 检查数据库的等待事件 (9) Disk Read 最高的SQL 语句的获取 (9) 查找前十条性能差的sql (9) 等待时间最多的 5 个系统等待事件的获取 (9) 检查运行很久的SQL (9) 检查消耗CPU 最高的进程 (10) 检查碎片程度高的表 (10) 检查表空间的I/O 比例 (10) 检查文件系统的I/O 比例 (10) 3.1.1.10 检查死锁及处理 (10) 3.1.1.11 检查数据库cpu、I/O、内存性能 (11) 3.1.1.12 查看是否有僵死进程 (12) 3.1.1.13 检查行链接/迁移 (13) 3.1.1.14 定期做统计分析 (13) 3.1.1.15 检查缓冲区命中率 (14) 3.1.1.16 检查共享池命中率 (14) 3.1.1.17 检查排序区 (14) 3.1.1.18 检查日志缓冲区 (15) 3.1.2性能调优及方法 (15) 3.1.2.1 3.1.2.2 3.1.2.3 3.1.2.4 3.1.2.5 寻找问题根源 (16) System_Event 事件 (16) Session_Event 事件 (16) Session_Wait (17) 应用优化 (17) 3.1.2.5.1 3.1.2.5.2 3.1.2.5.3 3.1.2.5.4 例程调优 (17) I-O 优化 (19) 竞争优化 (19) O-S 监控 (20) 3.2数据库备份恢复 (21) 3.2.1检查Oracle数据库备份结果 (21) 3.2.1.1 3.2.1.2 3.2.1.3 检查数据库备份日志信息 (21) 检查backup 卷中文件产生的时间 (22) 检查oracle 用户的email (22) 3.3数据库迁移 (22)

Oracle数据库维护手册

Oracle 数据库定期维护手册 定期备份任务计划执行检查 打开附件(系统工具(任务计划 查看状态,如果状态是未能启动,则打开菜单高级(查看日志,看未能执行任务计划的原因,并处理,处理完成后,右击任务计划运行。 使用DBA 图形工具(8.1.7 DBA Studio,9i Oracle Enterprise manager Console,10G 网页的EM )检查数据库状态 主要检查空间使用情况,重点对超过80%已使用的表空间进行检查,必要时增加数据文件或将相应的数据文件设为自动扩展,注意单个数据文件大小不要超过3.9G Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert.log或alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动、关闭,启动时的非缺省参数; ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; ●对数据库进行的某些操作,如创建或删除表空间、增加数据文件; ●数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600) DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理 问题处理 如提示启动参数不对,则检查初始化参数文件 因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; 有人未经授权删除了表空间则检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限 出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建 表空间不够增加数据文件到相应的表空间 出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁 数据库表空间使用情况检查 数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。 select tablespace_name, count(*) chunks , max(bytes/1024/1024) max_chunk from dba_free_space group by tablespace_name; 其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle 数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该

Oracle数据库日常维护手册

密级:保密编号: Oracle10g数据库 维护手册

日期: 编写: 核对: 更新: 目录1............................... 检查数据库基本状况9

1.1. ........................... 检查O RACLE实例状态 9 1.2. ........................... 检查O RACLE服务进程 11 1.3. ........................... 检查O RACLE监听状态 14 2........................ 检查系统和ORACLE日志文件16 2.1. ........................ 检查操作系统日志文件 16 2.2. ........................... 检查ORACLE日志文件 16 2.3. ....................... 检查O RACLE核心转储目录 18 2.4. .............. 检查R OOT用户和O RACLE用户的EMAIL 18 3.............................. 检查ORACLE对象状态18 3.1. ....................... 检查O RACLE控制文件状态

19 3.2. ....................... 检查O RACLE在线日志状态 19 3.3. ....................... 检查O RACLE表空间的状态 20 3.4. ................... 检查O RACLE所有数据文件状态 22 3.5. ................................ 检查无效对象 26 3.6. .......................... 检查所有回滚段状态 26 4.................... 检查ORACLE相关资源的使用情况27 4.1. ............. 检查O RACLE初始化文件中相关参数值 28 4.2. .......................... 检查数据库连接情况 31 4.3. ............................ 检查系统磁盘空间 34

Oracle管理员日常维护手册(pdf 68页)

Oracle管理员日常维护指南 概述 (2) 第一章. 事前阶段 (3) 一、日常工作-每天应做工作内容 (3) 1、工作内容-日常环境监控 (3) 1.1系统运行环境监控 (3) 1.2数据库运行状况监控 (3) 2、工作内容-日常性能监控 (4) 2.1 间隔一段时间使用操作系统top等工具监控系统资源动态运行状况 (4) 2.2间隔一段时间对数据库性能进行监控 (4) 3、工作内容-日常数据库管理 (13) 3.1一天内间隔一定时间运行 (13) 3.2 每天工作结束后、系统空闲时运行 (25) 二、日常工作-每隔一周工作内容 (52) 1. 文件整理工作 (52) 2. 数据库全量备份 (52) 2.1 Oracle 9i RMAN自动化脚本方式全量备份 (52) 2.2 Oracle 10g OEM 图形方式创建RMAN全量备份数据库任务 (52) 3. 根据一周数据增长率分析预留数据文件下一周所需增长空间 (53) 3.1 SQL脚本方式查看 (53) 3.2 Oracle 9i OEM 数据文件管理 (54) 3.3 Oracle 10g OEM 数据文件管理 (55) 4. 索引使用情况及碎片分析 (55) 4.1表包含的索引及相关列检查 (55) 4.2自动化脚本方式对索引进行碎片分析 (56) 4.3打开索引自动监控开关 (56) 5. 对用户所有表、索引进行统计分析 (57) 5.1 查询EAS用户所有表、索引的最新统计分析时间 (57) 5.2 自动化脚本方式对所有表、索引统计分析 (57) 5.3 Oracle 10g OEM图形化自定义对所有表、索引统计分析的自动化调度任 务 (57) 6. 导出表、索引最新统计分析数据 (63) 7. 性能报告分析 (64) 三、日常工作-每月应做工作内容 (64) 1.性能全面分析 (64) 全面分析一次STATSPACK报告 (64) 空间使用增长的全面分析 (64) 2.备份数据转备 (64) 四日常工作-数据库第一次安装部署后需做的工作 (64) 1. Statspack-系统快照采集工具初始化 (64) 2.创建统计信息导出表 (65)

ORACLE RAC日常管理和维护

ORACLE RAC日常管理 1、最常用、最重要的命令: 首先登陆的服务器然后执行su-oracle 关闭集群:$crs_stop–all ps–ef|grep ora 查看是否还有ora开头的进程,没有后方可关机。 启动集群:$crs_start-all 启动完集群后可以用如下命令检查集群状态,所有的服务都要是ONLINE才是正常的,如下[root@node1bin]$crs_stat-t Name Type Target State Host ------------------------------------------------------------ ora....w1.inst application ONLINE ONLINE node1 ora....w2.inst application ONLINE ONLINE node2 ora.cjw.db application ONLINE ONLINE node1 ora....SM1.asm application ONLINE ONLINE node1 ora....E1.lsnr application ONLINE ONLINE node1 ora.node1.gsd application ONLINE ONLINE node1 ora.node1.ons application ONLINE ONLINE node1 ora.node1.vip application ONLINE ONLINE node1 ora....SM2.asm application ONLINE ONLINE node2 ora....E2.lsnr application ONLINE ONLINE node2 ora.node2.gsd application ONLINE ONLINE node2 ora.node2.ons application ONLINE ONLINE node2 ora.node2.vip application ONLINE ONLINE node2 ps–ef|grep ora 下面是一些简介,了解一下就可以了,有时间可以深入研究。 一、Oracle RAC简介: Oracle RAC支持Oracle数据库在集群上运行真正的应用程序。此处的真正应用是指RAC能够支持所有类型的主流商业应用程序。这包括流行的封装产品,如SAP、PeopleSoft

Oracle11G日常维护手册

Oracle Database 日常维护手册 目录 1. 登陆到数据库 (3) . 服务器端配置Listener (3) . 客户端tnsnames (4) . 检查Oracle Listener (5) . 登陆数据库的方式 (5) . 数据库的启动 (5) . 关闭数据库 (6) 2. 用户管理 (6) . 检察用户profile (6) . 查看用户profile参数 (6) 3. 检查数据库基本状况 (7) . 检查数据库创建日期 (7) . 检查数据库版本信息 (7)

. 检查实例状态 (7) . 查看前台进程 (7) . 查看数据库连接的session (8) . 查看连接到数据库的模式 (8) . 查看并发连接数 (8) . 查看最大的连接'processes' (8) . 监控系统后台进程 (8) . 查看数据库初始化参数 (8) . 检查PGA使用情况 (8) . 检查SGA状态 (8) . 检查Oracle服务进程 (8) . 检查Oracle监听状态 (9) . 检查监听进程是否存在 (10) . 检查操作系统日志文件 (10) . 检查oracle日志文件 (10)

. 检查Oracle核心转储目录 (10) . 检查Root用户和Oracle用户的email (11) 4. 检查Oracle对象状态 (11) . 检查Oracle控制文件状态 (11) . 检查Oracle在线日志状态 (11) . 检查Oracle表空间的状态 (12) . 检查Oracle所有数据文件状态 (12) . 检查无效对象 (12) . 检查所有回滚段状态 (13) . 检查用户下的表 (13) . 检查用户默认表空间 (13) . 检查当前用户角色及权限 (13) . 检查用户下的各个表的大小 (13) . 检查一个表的创建时间 (13) . 检查某个表的大小 (13)

Linux日常操作及ORACLE日常维护(新手必备)

1、登陆linux 通过xshell工具使用ssh协议登录系统;2、查看系统时间:data 3、查看系统运行时间uptime 4、查看分区情况 5、查看磁盘使用情况:df -h 6、查看IP,及网络配置信息ficonfig、ip ad

7、重启命令shutdown -r now,reboot 8、查看防火墙状态service iptables status,以下状态防火墙已关闭 9、(su -)切换至oracle安装用户,以下YZFDJKITTP为oracle的安装用回, 10、查看oracle环境变量信息cat .bash_profile 11、查看oracle监听名称,首先使用cd命令切换到监听程序配置文件所在的目录,然后使用cat命令查看监听配置文件(listener.ora)内容

12 查看监听程序状态 13 查看数据库网路服务名(tnsnames.ora),此文件与监听配置文件在同一目录下 13 测试oracle数据库服务连接情况tnsping 服务名

14 通过操作系统认证登录oracle数据库 15、查看数据库启动情况,以下为正常打开模式,可读可写 16、查看oracle实例信息 17、查看是否开启归档 18、查看表空间使用情况 SELECT TABLESPACE_NAME "biao_kong_jian",

To_char(Round(BYTES / 1024, 2), '99990.00') || '' "gongyou", To_char(Round(FREE / 1024, 2), '99990.00') || 'G' "xianyou", To_char(Round(( BYTES - FREE ) / 1024, 2), '99990.00') || 'G' "shiyong", To_char(Round(10000 * USED / BYTES) / 100, '99990.00') || '%' "bili" FROM (SELECT A.TABLESPACE_NAME TABLESPACE_NAME, Floor(A.BYTES / ( 1024 * 1024 )) BYTES, Floor(B.FREE / ( 1024 * 1024 )) FREE, Floor(( A.BYTES - B.FREE ) / ( 1024 * 1024 )) USED FROM (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) A, (SELECT TABLESPACE_NAME TABLESPACE_NAME, Sum(BYTES) FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME) ORDER BY Floor(10000 * USED / BYTES) DESC;

ORACLE数据库日常维护手册(最全+最实用)

ORACLE 日常维护手册 查看数据库版本 SELECT*FROM V$VERSION; 查看数据库语言环境 SELECT USERENV('LANGUAGE')FROM DUAL; 查看ORACLE实例状态 SELECT INSTANCE_NAME,HOST_NAME,STARTUP_TIME,STATUS,DATABASE_STATUS FROM V$INSTANCE; 查看ORACLE监听状态 lsnrctl status 查看数据库归档模式 SELECT NAME,LOG_MODE,OPEN_MODE FROM V$DATABASE; 查看回收站中对象 SELECT OBJECT_NAME,ORIGINAL_NAME,TYPE FROM RECYCLEBIN; 清空回收站中对象 PURGE RECYCLEBIN; 还原回收站中的对象 FLASHBACK TABLE"BIN$GOZUQZ6GS222JZDCCTFLHQ==$0" TO BEFORE DROP RENAME TO TEST;

闪回误删除的表 FLASHBACK TABLE AAA TO BEFORE DROP; 闪回表中记录到某一时间点 ALTER TABLE TEST ENABLE ROW MOVEMENT; FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2009-10-15 21:17:47','YYYY-MM-DD HH24:MI:SS'); 查看当前会话 SELECT SID,SERIAL#,USERNAME,PROGRAM,MACHINE,STATUS FROM V$SESSION; 查看DDL锁 SELECT* FROM DBA_DDL_LOCKS WHERE OWNER ='FWYANG'; 检查等待事件 SELECT SID, https://www.doczj.com/doc/b41781040.html,ERNAME, EVENT, WAIT_CLASS, T1.SQL_TEXT FROM V$SESSION A, V$SQLAREA T1 WHERE WAIT_CLASS <>'Idle' AND A.SQL_ID = T1.SQL_ID; 检查数据文件状态 SELECT FILE_NAME,STATUS FROM DBA_DATA_FILES; 检查表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB -F.TOTAL_BYTES)/D.TOT_GROOTTE_MB *100, 2), '990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)",

数据库日常运维手册

神州数码信息系统有限公司 数据库日常运维手册 神州数码信息系统有限公司 2015/9/5 日常运维操作手册主要针对ORACLE数据库管理员对数据库系统做定期监控: (1)、每天对ORACLE数据库的运行状态、日志文件、备份情况、数据库的空间使用情况、系统资源的使用情况进行检查,发现并解决问题。并要有相关的人员负责每天查瞧,发现问题及时 上报分析。检查每天的数据库备份完成情况。 (2)、每周对数据库对象的空间扩展情况、数据的增长情况进行监控、对数据库做健康检查、对数据库对象的状态做检查。 (3)、每月对表与索引等进行Analyze、检查表空间碎片、寻找数据库性能调整的机会、进行数据库性能调整、提出下一步空间管理计划。对ORACLE数据库状态进行一次全面检查 (4)根据公司数据库的安全策略对ORACLE DB进行加固 一.日维护过程 1、1、确认所有的INSTANCE状态正常 登陆到所有数据库或例程,检测ORACLE后台进程: $ps –ef|grep ora 1、2、检查文件系统的使用(剩余空间) 如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。 #df –k 1、3、检查日志文件与trace文件记录 检查相关的日志文件与trace文件中就是否存在错误。 A、连接到每个需管理的系统 使用’telnet’命令 B、对每个数据库,进入到数据库的bdump目录,unix系统中BDUMP目录通常就是 $ORACLE_BASE//bdump #$ORACLE_BASE//bdump C、使用Unix ‘tail’命令来查瞧alert_、log文件 #tail $ORACLE_BASE//bdump/alert_、log

Oracle DBA数据库日常维护完全手册

Oracle DBA数据库日常维护 在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。 一、Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动、关闭,启动时的非缺省参数; ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因; ●对数据库进行的某些操作,如创建或删除表空间、增加数据文件; ●数据库发生的错误,如表空间不够、出现坏块、数据库内部错误 (ORA-600) 。 DBA应该定期检查日志文件,根据日志中发现的问题及时进行处理。 问题处理: 启动参数不对检查初始化参数文件; 因为检查点操作或归档操作没有完成造成重做日志不能切换如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率; 有人未经授权删除了表空间检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限; 出现坏块检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建; 表空间不够增加数据文件到相应的表空间; 出现ORA-600根据日志文件的内容查看相应的TRC文件,如果是Oracle的bug,要及时打上相应的补丁。 二、数据库表空间使用情况监控(字典管理表空间)

数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。以下为引用的内容: 其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL 命令进行表空间相邻碎片的接合: 然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。 MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、 ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。 对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。 三、查看数据库的连接情况 DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。 以下的SQL语句列出当前数据库建立的会话情况: 以下为引用的内容:

DBA数据库日常维护

1日常维护 1.1Oracle警告日志文件监控 Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况: ●数据库的启动、关闭,启动时的非缺省参数。 ●数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点 (checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因。 ●对数据库进行的某些操作,如创建或删除表空间、增加数据文件。 ●数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA-600)。 1.2数据库表空间使用情况监控(字典管理表空间) 数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,这时候需要对表空间进行清理。 然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。 MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。 1.3查看数据库的连接情况 DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。 1.4控制文件的备份 在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文

相关主题
文本预览
相关文档 最新文档