• OCP 11g 第一章练习


    练习 1-1 研究所在环境的DBMS

    这是一个书面练习,没有具体的解决方案.

    确定自己所在环境使用的应用程序, 应用服务器 , 和数据库. 然后集中精力研究数据库, 体验一下数据库的规模和忙碌程度. 考虑用户数量,数据易失性以及数据量.

    最后考虑他们对组织的重要程度: 就每个应用程序和数据库而言, 允许多长的停机时间? 允许损失多少数据? 可以使用财务数字定量分析吗?

    利用研究结果,可以了解DBA角色的重要性.

    练习 1-2 确定数据库是单实例,还是分布式系统的一部分

    在本练习中,读者将运行查询来确定数据库是独立系统,还是更大的分布式环境的一部分. 可以使用Sql Developer 或 SQL & Plus. 如果您还不能使用Oracle数据库,但又要做此练习, 那么可以调至第二章,在完成安装后再回到此练习.

    1. 作为用户SYSTEM连接到数据库

    2. 确定实例是否是RAC数据库的一部分

    SQL> select parallel from v$instance;
    PARALLEL 
    ---------
    NO
     如果是单实例数据库,那么将返回NO.
     
    3.  确认数据库是否通过备用数据库的保护来防止数据丢失, UNPROTECTED 表示未受到保护.
    SQL> select protection_level from v$database;
    PROTECTION_LEVEL 
    ------------------------------------------------------------
    UNPROTECTED
     
    如果数据库的确未受到保护,那么将返回UNPROTECTED
     
    4. 确认数据库中是否配置了流 , 没配置则不会有row被选择 
    SQL> select * from dba_streams_administrator;
    no rows selected
    如果尚未配置流, 那么将不返回任何行.
     
     
    练习 1-3  了解实例的内存结构
    在本练习中,将运行查询来确定构成实例的不同内存结构的当前大小. 可以使用SQL Developer或SQL * Plus
    1. 作为用户SYSTEM连接到数据库
    2. 显示可以动态设置大小的SGA组件的当前,最小和最大容量:
    SQL> SELECT COMPONENT, CURRENT_SIZE, MIN_SIZE,MAX_SIZE FROM V$SGA_DYNAMIC_COMPONENTS;
    此示例现实的实例不包含流,因此流池大小为零. 自从自从启动实例后,大池和Java池都未发生变化,但共享池和数据库缓冲区缓存的大小发生了变化. 仅配置了数据库缓冲区缓存的默认值,除进行大量调整的数据库外,通常都是这样配置的.
    3. 确定已为(以及当前为)程序全局区分配了多少内存;
    SQL> select name,value from v$pgastat where name in ('maximum PGA allocated','total PGA allocated');

    NAME
    --------------------------------------------------------------------------------
         VALUE
    ----------
    total PGA allocated
      69312512
    maximum PGA allocated
     319397888
     
    练习 1-4 了解在实例中运行的进程
    在本练习中,将运行查询来查看在实例中运行的后台进程. 可以使用SQL Developer或SQL* Plus.
    1. 作为SYSTEM 登录
    2. 确定哪些进程正在运行,以及每个进程的数量有多少.
    select program from v$session order by program;
    select program from v$process order by program;
    这些查询将得到相似的结果: 每个进程必须有会话(即使是后台进程,也同样如此),而每个会话必须有进程. 可多次出现的进程将有一个数字后缀,但支持用户会话的进程除外: 它们都使用同一个名称.
    3. 通过计算服务器进程数量(Linux,或任何Unix平台)或Oracle线程数量(Windows上) , 演示会话生成后启动的服务器进程. 这两个平台上的技术有所不同, 这是因为,在Linux/Unix上,Oracle进程是独立的操作系统进程, 而在Windows上,它们是一个操作系统进程中的多个线程.
      a. 在Linux上, 从操作系统提示符可以运行一下命令:
        ps -ef| grep oracle | wc -l 
      该语句将计算出名称中包含oracle 字符串的运行进程的数量, 将包括所有会话服务器进程(或许还包括其他进程).
      启动SQL*plus 会话, 然后重新运行上面的命令. 可以使用此主机命令,在SQL*Plus会话中启动shell程序. 我们将看到,进程数量增加了. 如果退出会话, 重新运行命令将看到数量又少了.
      
      b. 在Windows上,启动任务管理器. 对其进行配置,以便显示每个进程中的线程数量: 在View菜单中,选择Select Columns 选项, 然后选中Thread Count复选框. 查看oracle.exe进程, 看一下现成的数量.
     
    练习 1-5 了解数据库的存储结构
     
    在本练习中,将创建一个表段,然后计算出它的物理位置. . 可以使用SQL Developer或SQL* Plus.
    1. 使用登录
    2. 创建一个未知表空间的表(将在默认表空间中创建它), 并包含一个区间:
        create table tab24 (c1 varchar2(10 byte));
    3. 确定表所在的表空间, 区间大小, 区间所在的文件编号, 以及作为区间开始位置的文件块
      selelct tablespace_name, extent_id,  bytes, file_id , block_id  from dba_extents where owner='SYSTEM'  and segment_name = 'TAB24';  ( 默认情况下SEGMENT CREATION DEFERRED,因此无法找到extent);
    4. 根据名称确定文件: 在看到提示时,替代前面查询中的file_id:
         select name from v$datafile where file#=&file_id;
    5. 精确计算出区间在文件中的位置,按它在文件中的开始字节数,这要求找到表空间的块大小,在看到提示时,输入步骤3中的查询返回的BLOCK_ID和TABLESPACE_NAME.
        select block_size * &BLOCK_ID from dba_tablespaces where tablespace_name ='&TBS_NAME';
     
     
  • 相关阅读:
    461. Hamming Distance
    Myeclipse中WebServlet cannot be resolved to a type报错
    注解方式配置Servlet(Servlet3.0)
    Oracle连接池操作
    最短路径算法
    编写学生类Stu
    编写程序,统计某旅馆住宿客人的总数,要求输入客人姓名,输出客人编号(按先后顺序自动生成),姓名以及总人数。
    货物管理系统
    c# 利用动态库DllImport("kernel32")读写ini文件(提供Dmo下载)
    shut
  • 原文地址:https://www.cnblogs.com/javabugs/p/4196512.html
Copyright © 2020-2023  润新知