oracle笔记四DBA管理.docx

上传人:b****7 文档编号:9712579 上传时间:2023-02-06 格式:DOCX 页数:37 大小:39.30KB
下载 相关 举报
oracle笔记四DBA管理.docx_第1页
第1页 / 共37页
oracle笔记四DBA管理.docx_第2页
第2页 / 共37页
oracle笔记四DBA管理.docx_第3页
第3页 / 共37页
oracle笔记四DBA管理.docx_第4页
第4页 / 共37页
oracle笔记四DBA管理.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

oracle笔记四DBA管理.docx

《oracle笔记四DBA管理.docx》由会员分享,可在线阅读,更多相关《oracle笔记四DBA管理.docx(37页珍藏版)》请在冰豆网上搜索。

oracle笔记四DBA管理.docx

oracle笔记四DBA管理

1、通常oracle需要启动OracleServiceORCL,OracleStartORCL,OracleTNSListener任务

   在NT上至少要启动两个服务

      oraclestartID和oracleserverID

每个数据库都有一个系统标识符(SID),典型安装的数据库使用的系统标识符是ORCL

2、启动关闭数据库

 关闭:

  svrmgr>connectinternal/oracle

        >shutdown  --正常关闭数据库

  svrmgr>shutdown immediate --立即关闭数据库

  svrmgr>shutdownabort --一种最直接的关闭数据库的方式,执行之后,重新启动需要花6-8小时

 启动:

  svrmgr>startup --正常启动

        --等价于:

startupnomount;

                 alterdatabase mount;

                 alterdatabase open;

  svrmgr>startupmount;--安装启动:

用于改变数据库的归档或执行恢复状态

  svrmgr>startupnomount; --用于重建控制文件或重建数据库

  svrmgr>startup restrict;--约束启动,能启动数据库,但只允许具有一定特权的用户访问

  如果希望改变这种状态,连接成功后

    altersystemdisablerestrictedsession;

  svrmgr>startupforce;当不能关闭数据库时,可采用强制启动数据库来完成数据库的关闭操作。

  svrmgr>startuppfile=d:

\orant\database\initorcl.ora --带初始化参数文件的启动

3、缺省用户和密码

 <1>.Oracle安裝完成后的初始口令?

  internal/oracle

  sys/change_on_install

  system/manager

  scott/tiger

  sysman/oem_temp

 <2>.ORACLE9IASWEBCACHE的初始默认用户和密码?

  administrator/administrator

4、让定义自己的回滚段生效

 在initorcl.ora中加入rollback_segments=(rb0,rb1,...)

 其中rb0,rb1为自己定义的回滚段,可使这些回滚段在启动时生效

5、查看修改数据库的字符集

<1>数据库服务器字符集 

  在表props$中

  updateprops$setvalue$='ZHS16CGB231280'

    wherename='NLS_CHARACTERSET'

  然后重新启动数据库,而不需要重新安装

  8i以上版本可以通过alterdatabase来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。

Startupnomount;

Alterdatabasemountexclusive;

Altersystemenablerestrictedsession;

Altersystemsetjob_queue_process=0;

Alterdatabaseopen;

Alterdatabasecharactersetzhs16gbk;

  

  

  sql>showparameterNLS

  查看数据库字符集:

 SELECT* FROMNLS_DATABASE_PARAMETERS;

 SELECT* FROMV$NLS_PARAMETERS;

<2>

客户端字符集环境select*fromnls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

会话字符集环境select*fromnls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是altersession完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。

如果多个设置存在的时候,altersession>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。

如字符集是zhs16gbk,则nls_lang可以是American_America.zhs16gbk。

<3>有时候用crontab发起的时候,由于执行的shell脚本的不同,导致很多的环境变量不同。

常常看到插入到数据库中的汉字变成乱码。

   比如shell脚本cai.sh如下内容。

#!

/bin/ksh

exportORACLE_BASE=/u01/oracle/app/oracle

exportORACLE_HOME=${ORACLE_BASE}/product/9.2.0

exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:

$ORACLE_HOME/rdbms/lib:

$LD_LIBRARY_PATH

exportSHLIB_PATH=$ORACLE_HOME/lib32:

$ORACLE_HOME/rdbms/lib32:

/app/prepay/lib

/u01/oracle/app/oracle/product/9.2.0/bin/sqlplusaicbs/aicbs@busi_cs<

insertintookcaivalues('okcai是个大好人呀');

commit;

quit

!

在crontab中定时每天20:

19执行一次

1920***/bin/sh/app/prepay/cai.sh>/dev/null2>&1&

则可以看到数据库中数据变成了:

2LQSJY

当前数据库的字符集是

SELECT* FROMNLS_DATABASE_PARAMETERS

AMERICAN.ZHS16GBK

为了正常,必须保持客户端和数据库一致的字符集

改脚本如下即可

#!

/bin/ksh

exportORACLE_BASE=/u01/oracle/app/oracle

exportORACLE_HOME=${ORACLE_BASE}/product/9.2.0

exportORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:

$ORACLE_HOME/rdbms/lib:

$LD_LIBRARY_PATH

exportSHLIB_PATH=$ORACLE_HOME/lib32:

$ORACLE_HOME/rdbms/lib32:

/app/prepay/lib

####下面就是增加的

exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBK

/u01/oracle/app/oracle/product/9.2.0/bin/sqlplusaicbs/aicbs@busi_cs<

insertintookcaivalues('okcai是个大好人呀');

commit;

quit

!

6、svgmgr>showsga

7、查询锁的原因

  如果进程被死锁,可以按下面方式查询

 <1>从v$session或者v$locked_object找到此session

 <2>如果有lockwait,查询v$lock,

   select*fromv$lockwherekaddr='C00000024AB87210'

    如果没有,根据sid

    select*fromv$lockwheresid=438

 <3>查看v$lock

    lmode>0,表示已经得到此锁

    request>0表示正在请求此锁

    根据id1和id2的值可以判断请求哪个锁的释放。

    select*fromv$lockwhereid1=134132andid2=31431

8.查询锁的状况的对象

 V$LOCK, V$LOCKED_OBJECT, V$SESSION, V$SQLAREA, V$PROCESS;

  查询锁的表的方法:

SELECTS.SIDSESSION_ID,S.USERNAME,

DECODE(LMODE,0,'None',1,'Null',2,'Row-S(SS)',3,'Row-X(SX)',4,'Share',5,'S/Row-X(SSX)',6,'Exclusive',TO_CHAR(LMODE))MODE_HELD,

DECODE(REQUEST,0,'None',1,'Null',2,'Row-S(SS)',3,'Row-X(SX)',4,'Share',5,'S/Row-X(SSX)',6,'Exclusive',TO_CHAR(REQUEST))MODE_REQUESTED,

O.OWNER||'.'||O.OBJECT_NAME||'('||O.OBJECT_TYPE||')',S.TYPELOCK_TYPE,L.ID1LOCK_ID1,L.ID2LOCK_ID2

FROMV$LOCKL,SYS.DBA_OBJECTSO,V$SESSIONS

WHEREL.SID=S.SIDANDL.ID1=O.OBJECT_ID;

9.怎样查得数据库的SID?

selectnamefromv$database;

也可以直接查看init.ora文件

10、管理回滚段:

   存放事务的恢复信息

   建立回滚段

     createpublic rollbacksegmentSEG_NAME tabelspaceTABLESPACE_NAME;

     alter  rollbacksegmentSEG_NAME online;

   删除回滚段

     首先改变为offline状态

   直接使用回滚段

   sql>settransaction use rollback segment SEG_NAME;

11.计算一个表占用的空间的大小

selectowner,table_name,

NUM_ROWS,

BLOCKS*AAA/1024/1024"SizeM",

EMPTY_BLOCKS,

LAST_ANALYZED

fromdba_tables

wheretable_name='XXX';

Here:

AAAisthevalueofdb_block_size;

XXXisthetablenameyouwanttocheck

12.表在表空间中的存储情况

  selectsegment_name,sum(bytes),count(*)ext_quanfromdba_extentswhere

  tablespace_name='&tablespace_name'andsegment_type='TABLE'groupby      tablespace_name,segment_name;

13.索引在表空间中的存储情况

  selectsegment_name,count(*)fromdba_extentswheresegment_type='INDEX'and      owner='&owner'

  groupbysegment_name;

14.查看某表/索引的大小

 表

    SQL>selectsum(bytes)/(1024*1024)as"size(M)"fromuser_segments

       wheresegment_name=upper('&table_name');

      索引

    SQL>selectsum(bytes)/(1024*1024)as"size(M)"fromuser_segments

       wheresegment_name=upper('&index_name');

15、确定可用空间

   selecttablespace_name,sum(blocks),sum(bytes)fromsys.dba_free_spacegroupbytablespace_name;

16、程序中报错:

maxinumcursorexceed!

 <1>查看当前的opencursor参数

  sql>showparameteropen_cursors

 <2>如果确实很小,应该调整数据库初始化文件

  加如一项 open_cursors=200

 <3>如果很大,则

selectsid,sql_text,count(*)fromv$open_cursor

groupbysid,sql_text

havingcount(*)>200

 其中200是随便写一个比较大的值。

查询得到打开太多的cursor.

17、查看数据库的版本信息

SQL>select *fromv$version;

包含版本信息,核心版本信息,位数信息(32位或64位)等

至于位数信息,在linux/unix平台上,可以通过file查看,如

file$ORACLE_HOME/bin/oracle

18.查看最大会话数

 SELECT*FROMV$PARAMETERWHERENAMELIKE'proc%';

 SQL>

 SQL>showparameterprocesses

 NAMETYPEVALUE

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

 aq_tm_processesinteger1

 db_writer_processesinteger1

 job_queue_processesinteger4

 log_archive_max_processesinteger1

 processesinteger200

 

 这里为200个用户。

 select*fromv$license;

 其中sessions_highwater纪录曾经到达的最大会话数

19.以archivelog的方式运行oracle。

init.ora

log_archive_start=true

RESTARTDATABASE

20.unix下调整数据库的时间

su-root

date-u08010000

21.P4电脑的安裝方法

 将SYMCJIT.DLL改为SYSMCJIT.OLD

22.如何查询SERVER是不是OPS?

SELECT* FROMV$OPTION;

如果PARALLELSERVER=TRUE则有OPS能

23.查询每个用户的权限

SELECT* FROMDBA_SYS_PRIVS;

24.将表/索引移动表空间

ALTERTABLETABLE_NAMEMOVETABLESPACE_NAME;

ALTERINDEXINDEX_NAMEREBUILDTABLESPACETABLESPACE_NAME;

25.在LINUX,UNIX下启动DBASTUDIO?

OEMAPP DBASTUDIO

26.LINUX下查询磁盘竞争状况命令?

Sar -d

27.LINUX下查询磁盘CPU竞争状况命令?

sar  -r

28.查询表空间信息?

SELECT* FROM DBA_DATA_FILES;

29.看各个表空间占用磁盘情况:

SQL>coltablespaceformata20

     SQL>select

     b.file_id                                                         文件ID号,

     b.tablespace_name                                                    表空间名,

     b.bytes                                                          字节数,

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

     sum(nvl(a.bytes,0))                                                    剩余空间,

     sum(nvl(a.bytes,0))/(b.bytes)*100                    剩余百分比

     fromdba_free_spacea,dba_data_filesb

     wherea.file_id=b.file_id

     groupbyb.tablespace_name,b.file_id,b.bytes

     orderbyb.file_id

 

30.如把ORACLE设置为MTS或专用模式?

#dispatchers="(PROTOCOL=TCP)(SERVICE=SIDXDB)"

加上就是MTS,注释就是专用模式,SID是指你的实例名。

31.如何才能得知系统当前的SCN号?

selectmax(ktuxescnw*power(2,32)+ktuxescnb)fromx$ktuxe;

32.修改oracel数据库的默认日期

 altersessionsetnls_date_format='yyyymmddhh24miss';

  OR

 可以在init.ora中加上一行

 nls_date_format='yyyymmddhh24miss'

33.将小表放入keep池中

altertablexxxstorage(buffer_poolkeep);

34.如何检查是否安装了某个patch?

 checkthat oraInventory

35.如何修改oracle数据库的用户连接数?

修改initSID.ora,将process加大,重启数据库.

36.如何创建SPFILE?

SQL>connect/assysdba

 SQL>select*fromv$version;

 SQL>createpfilefromspfile;

SQL>CREATESPFILEFROMPFILE='E:

\ora9i\admin\eygle\pfile\init.ora';

文件已创建。

SQL>CREATESPFILE='E:

\ora9i\database\SPFILEEYGLE.ORA'FROMPFILE='E:

\ora9i\admin\eygle\pfile\init.ora';

文件已创建。

37.內核参数的应用

   shmmax

  含义:

这个设置并不决定究竟Oracle数据库或者操作系统使用多少物理内存,只决定了最多可以使用的内存数目。

这个设置也不影响操作系统的内核资源。

  设置方法:

0.5*物理内存

  例子:

Setshmsys:

shminfo_shmmax=10485760

  shmmin

  含义:

共享内存的最小大小。

  设置方法:

一般都设置成为1。

  例子:

Setshmsys:

shminfo_shmmin=1:

  shmmni

  含义:

系统中共享内存段的最大个数。

  例子:

Setshmsys:

shminfo_shmmni=100

  shmseg

  含义:

每个用户进程可以使用的最多的共享内存段的数目。

  例子:

Setshmsys:

shminfo_shmseg=20:

  semmni

  含义:

系统中semaphoreidentifierer的最大个数。

  设置方法:

把这个变量的值设置为这个系统上的所有Oracle的实例的init.ora中的最大的那个processes的那个值加10。

  例子:

Setsemsys:

seminfo_semmni=100

  semmns

  含义:

系统中emaphores的最大个数。

  设置方法:

这个值可以通过以下方式计算得到:

各个Oracle实例的initSID.ora里边的processes的值的总和(除去最大的Processes参数)+最大的那个Processes×2+10×Oracle实例的个数。

  例子:

Setsemsys:

seminfo_semmns=200

  semmsl:

  含义:

一个set中semaphore的最大个数。

  设置方法:

设置成为10+所有Oracle实例的InitSID.ora中最大的Processes的值。

  例子:

Setsemsys:

seminfo_semmsl=-200

38.怎样查看哪些用户拥有SYSDBA、SYSOPER权限?

SQL>connsys/change_on_install

SQL>select*fromV_$PWFILE_USERS;

 

39.如何查看数据文件放置的路径?

colfile_nameformata50

SQL>selecttablespace_name,file_id,bytes/1024/1024,file_namefromdba_data_filesorderbyfile_id;

40.如何查看现有回滚段及其状态?

SQL>colsegmentformata30

SQL>SELECTSEGMENT_NAME,OWNER,TABLESPAC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1