ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

《Oracle DBA工作笔记》第二章 常用工具和问题分析(1)--删库、orabase、sqlplus

2021-04-15 15:07:30  阅读:213  来源: 互联网

标签:DBA 删库 Plus oracle SQL SGA PLUS 常用工具 sga


《Oracle DBA工作笔记》第二章 常用工具和问题分析

 

1  BLOG文档结构图

 

 

2  本文简介

建荣的新书《Oracle DBA工作笔记》第二章的目录如下图,主要讲解了SQL*Plus、exp/imp、expdp/impdp以及常见的问题分析,第二章的目录如下:

 

 

下边小麦苗将自己阅读完第二章后整理的一些内容分享给大家。

3  第一章内容修改

3.1  删除数据库的几种方式

这个内容是第一章(http://blog.itpub.net/26736162/viewspace-2121930/)小麦苗列出来的,但是中间发现一个问题,就是当要删除的库是rac库的时候,采用dbca -silent静默方式删除数据库是可以的,但是使用drop database的方式就不行了,报错:ORA-01586: database must be mounted EXCLUSIVE and not open for this operation,这个时候需要我们关闭集群参数cluster_database才可以删除,命令为:alter system set cluster_database=false sid='*' scope=spfile;,所以小麦苗还是推荐静默的方式,无论建库还是删库静默方式把很多内容自动完成,不用我们做太多。

1、dbca静默删库:dbca -silent -deleteDatabase -sourceDB mydb

2、SQL窗口:

alter database close;

alter system enable restricted session;

drop database;

3、SQL窗口:

sql > startup force mount restrict;

sql > drop database;

注意:强烈推荐第一种办法,以上2和3的办法若是rac库需要设置cluster_database为false后才可以执行drop database,命令为:alter system set cluster_database=false sid='*' scope=spfile;

 

4  第二章内容

4.1  orabase命令

简单点说,这个命令可以打印$ORACLE_BASE的值。

[ZFZHLHRDB1:oracle]:/oracle>which orabase

/oracle/app/11.2.0/grid/bin/orabase

[ZFZHLHRDB1:oracle]:/oracle>orabase

/oracle/app/oracle

[ZFZHLHRDB1:oracle]:/oracle>

 

 

4.2  SQL*Plus的使用

4.2.1  登录配置

小麦苗的配置一般是这样的:

[ZFZHLHRDB1:oracle]:/oracle>more $ORACLE_HOME/sqlplus/admin/glogin.sql

--

-- Copyright (c) 1988, 2011, Oracle and/or its affiliates.

-- All rights reserved.

--

-- NAME

--   glogin.sql

--

-- DESCRIPTION

--   SQL*Plus global login "site profile" file

--

--   Add any SQL*Plus commands here that are to be executed when a

--   user starts SQL*Plus, or uses the SQL*Plus CONNECT command.

--

-- USAGE

--   This script is automatically run

--

set sqlprompt "_user'@'_connect_identifier> "

[ZFZHLHRDB1:oracle]:/oracle>

[ZFZHLHRDB1:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 2 14:45:02 2016

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SYS@test1>

4.2.2  得到show sga的定义语句

建荣这个章节讲的很详细,小麦苗直接列出最终的结果吧。我们运行命令vi $ORACLE_HOME/bin/sqlplus打开sqlplus文件,匹配SGA可以发现这么一行代码:

SELECT DECODE(NULL, '', 'Total System Global Area', '') NAME_COL_PLUS_SHOW_SGA,

       SUM(VALUE),

       DECODE(NULL, '', 'bytes', '') UNITS_COL_PLUS_SHOW_SGA

  FROM V$SGA

UNION ALL

SELECT NAME NAME_COL_PLUS_SHOW_SGA,

       VALUE,

       DECODE(NULL, '', 'bytes', '') UNITS_COL_PLUS_SHOW_SGA

  FROM V$SGA;

该行代码的结果和执行show sga可以得到一样的结果。

SYS@omflhr> show sga

 

Total System Global Area 1068937216 bytes

Fixed Size                  2253216 bytes

Variable Size             771755616 bytes

Database Buffers          289406976 bytes

Redo Buffers                5521408 bytes

SYS@omflhr> SELECT DECODE(NULL, '', 'Total System Global Area', '') NAME_COL_PLUS_SHOW_SGA,

  2         SUM(VALUE),

  3         DECODE(NULL, '', 'bytes', '') UNITS_COL_PLUS_SHOW_SGA

  4    FROM V$SGA

  5  UNION ALL

  6  SELECT NAME NAME_COL_PLUS_SHOW_SGA,

  7         VALUE,

  8         DECODE(NULL, '', 'bytes', '') UNITS_COL_PLUS_SHOW_SGA

  9    FROM V$SGA;

 

NAME_COL_PLUS_SHOW_SGA   SUM(VALUE) UNITS_COL_PLUS_

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

Total System Global Area 1068937216 bytes

Fixed Size                  2253216 bytes

Variable Size             771755616 bytes

Database Buffers          289406976 bytes

Redo Buffers                5521408 bytes

 

show sga的官方解释:

Displays information about the current instance's System Global Area. You need SELECT ON V_$SGA object privileges otherwise you will receive a message

ORA-00942: table or view does not exist

show sga中,各部分的含义如下:

1. Total System Global Area:Fixed Size、Variable Size、 Database buffers和Redo Buffers的大小总和

2. Fixed Size: 这部分是Oracle内部使用的一个区,包括了数据库与实例的控制信息、状态信息、字典信息等,启动时就被固定在SGA中,不会改变。Oracle通过这个区找到SGA其他区,类似一个SGA各个组件的索引,里面存储了SGA 各部分组件的信息,可以看作引导建立SGA的区域,不同平台和不同版本下这部分的大小可能不一样。

3. Variable Size: 包括Shared Pool ,Java Pool ,Large Pool,stream pool、游标区和其他结构。 

4. Database Buffers: 数据库中数据块缓冲的地方,是SGA中最大的地方,决定数据库性能。为db_cache_size、db_keep_cache_size、db_recycle_cache_size、 db_nk_cache_size的总大小,当然这是sga_target为0的情况,也就是手动SGA管理模式下,如果是自动SGA管理(sga_target>0),则这个值根据sga的分配情况自动进行调整。

5. Redo Buffers:这部分是实际分配的Redo log buffer的大小,由初始化参数log_buffer根据SGA的最小分配单位granule 向上取整得到。提供REDO缓冲的地方,在OLAP中不需要太大。在这里要额外说明一点的是,对于v$parameter、v$sgastat、v$sga查询值可能不一样。v$parameter 里面的值,是指用户在初始化参数文件里面设置的值,v$sgastat是oracle 实际分配的日志缓冲区大小(因为缓冲区的分配值实际上是离散的,也不是以block 为最小单位进行分配的),v$sga 里面查询的值,是在oracle 分配了日志缓冲区后,为了保护日志缓冲区,设置了一些保护页,通常我们会发现保护页大小是8k(不同环境可能不一样)                                                                                                                                                                                                                                                                          

4.2.3  SQL*Plus命令设置

关于更多SQL*Plus的命令设置请参考:【OH】SET System Variable Summary SQLPLUS 系统变量设置: http://blog.itpub.net/26736162/viewspace-2121072/

 

4.2.4  SQL*Plus无法正常启动

1、linux环境需要禁用SELinux,禁用方式:setenforce 0

2、环境变量设置不当,可以查看.bash_profile或.profile文件,确保有export;切换用户;ORACLE_HOME的值最后是没有反斜杠“/”的;还有从windows到Linux拷贝的时候是否有^M乱码字符等问题。

 

4.2.5  使用strace来诊断SQL*Plus的登录问题

若sqlplus有一些特殊的问题,我们可以使用strace来跟踪命令,跟踪的命令很简单:

--------------linux 跟踪sqlplus进程

strace -o /tmp/output.txt -T -tt -e trace=all  sqlplus / as sysdba

------------- Unix 跟踪sqlplus进程

truss -dfaie -o /tmp/sched_trace.out.02271 sqlplus '/as sysdba'

 

不过生成的文件需要调用操作系统的很多函数,看起来比较云里雾里的。


标签:DBA,删库,Plus,oracle,SQL,SGA,PLUS,常用工具,sga
来源: https://blog.51cto.com/lhrbest/2708393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有