当前位置:  数据库>其它
本页文章导读:
    ▪DBCA建库偶遇ORA-27125      OS:Rhel -5.8- 64bit Oracle version: oracle 10g-64bit #uname -a Linux test 2.6.32-300.10.1.el5uek #1 SMPWed Feb 22 17:37:40 EST 2012 x86_64 x86_64 x86_64 GNU/Linux   在使用dbca建库时包错   解决方法:注意用户为root root@test .........
    ▪使用PowerPivot建立简单的分析模型      数据透视表是一个很灵活的工具,通过这个工具用户可以很容易的生成自己需要的报表。无论是对于专业的IT用户还是业务部门的用户,他们都很熟悉Excel这个工具,并且对于PowerPivot的使用方.........
    ▪Linux/Unix shell 自动发送AWR report             观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们.........

[1]DBCA建库偶遇ORA-27125
    来源: 互联网  发布时间: 2013-11-07

OS:Rhel -5.8- 64bit

Oracle version: oracle 10g-64bit

#uname -a

Linux test 2.6.32-300.10.1.el5uek #1 SMPWed Feb 22 17:37:40 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

 

在使用dbca建库时包错

 

解决方法:注意用户为root

root@test ~]# id oracle10g

uid=610(oracle10g) gid=54321(oinstall)groups=54321(oinstall),54322(dba)

[root@test ~]# more/proc/sys/vm/hugetlb_shm_group

0

 [root@test~]# echo 54322 > /proc/sys/vm/hugetlb_shm_group

[root@test ~]# more/proc/sys/vm/hugetlb_shm_group

54322

 

 

以下内容摘自:http://dotaddjj.itpub.net/post/43172/528658

 

ORA-27125: unable to create shared memory segment

无法分配创建共享内存段,这点开始以为是/etc/sysctl.conf中的设置问题,不过查看其实问题不在这儿。

正确的办法是修改/proc/sys/vm/hugetlb_shm_group中的记录

[root@server119 security]# id oracle

uid=500(oracle) gid=500(oinstall) groups=500(oinstall),501(dba)context=user_u:system_r:unconfined_t:s0

[root@server119 security]# more /proc/sys/vm/hugetlb_shm_group

0

[root@server119 security]# echo 501 > /proc/sys/vm/hugetlb_shm_group

[root@server119 security]# more /proc/sys/vm/hugetlb_shm_group

501

而后正常运行可以运行dbca建库。

摘要下Hugepage/Big page

系统进程是通过虚拟访问内存page table,那么cpu就需要将虚拟地址转换为物理内存地址ram+swap才能真正访问,cpu会缓存最近的虚拟内存地址和物理内存地址的映射关系(有点像lru list的管理),保存在由一个cpu维护的映射表中(linux在cpu申请固定大小buffer称为TLB用来管理page table),当然如果物理内存很大,越来越多的虚拟内存地址和物理地址被映射,当然对cpu检索还是会有一定的影响。

在linux环境下,内存都是以页 4kb的单位来定义的,如果要减少映射关系,需要使用大的内存页,相对来说hugepage也就是所谓的巨页内存,hugepage会一直keep在内存中,不会被交换出去,减少频繁的page in和page out,不能被其进程存占用,当使用大量物理内存的服务器时(8g下就建议使用hugepage),还是建议使用hugepage,对于oracle服务器来说,直接设置器hugepage pool等于sga即可。

可以通过如下方式查看Hugepage页的相关信息

[root@server119 security]# cat /proc/meminfo |grep Huge

HugePages_Total: 0 –Hugepage的页面数量

HugePages_Free: 0 --剩余的页面数量

HugePages_Rsvd: 0 --被分配预留但是没有使用的page数量

Hugepagesize: 2048 kB --Hugehuge的单个页面的大小

默认是没有开启Hugepage的。

Oracle 10g可以通过设置sysctl.conf的vm.nr_hugepages参数来启用hugepage,vm.nr_hugepages相当于普通页内存的参数kernel.shmall的功能。设置vm.nr_hugepages参数后重启系统。

[root@server119 security]# cat /proc/meminfo |grep Huge

HugePages_Total: 300 –Hugepage的页面数量

HugePages_Free: 20 --剩余的页面数量

HugePages_Rsvd: 0 --被分配预留但是没有使用的page数量

Hugepagesize: 2048 kB --Hugehuge的单个页面的大小

Oracle 11g由于启用amm管理,amm和hugepgae不兼容,需要先关闭

    
[2]使用PowerPivot建立简单的分析模型
    来源: 互联网  发布时间: 2013-11-07

数据透视表是一个很灵活的工具,通过这个工具用户可以很容易的生成自己需要的报表。无论是对于专业的IT用户还是业务部门的用户,他们都很熟悉Excel这个工具,并且对于PowerPivot的使用方法也相当的"炉火纯青"。

传统透视表的数据来源可以是Excel工作表,也可以是分析服务中的多维数据集这两种主要的方式。相对前者由于数据是存储在Excel的工作表中,所以业务操作人员很容易上手,很适合小规模的数据统计分析。后者分析服务的多维数据集这种方式,由于数据是以一种特殊的方式聚合在独特的文件系统中,所以适合大规模的数据量分析,缺点是分析服务的开发对于IT的要求比较高,只能由IT人员完成,所以业务人员的一个需求往往会等待很长的时间才会得到响应。

那么,业务操作人员是否可以有一种高性能的去分析稍微大一点的规模的数据呢?PowerPivot就是微软提供的一个方案。在这个方案中,数据直接加载到内存当中,并且经过一定的优化,保证了通过透视表的统计有一个很高的性能。

 

 

首先,在Excel 2013之前的版本中,这个工具是需要单独下载的。如果你没有Office 2013,那么我建议你的版本不要低于2010,在这个版本之中PowerPivot的版本得以演化。

下载地址:

http://www.microsoft.com/en-us/download/details.aspx?id=29074

下载需要留意Excel对应的语言版本还有是32位版还是64位版。

还有需要注意的一个地方是,这个是PovitTable是针对 Excel 2010的第二个版本,之前还有一个版本,在微软目前的教程以及本文的介绍中缺失了部分功能。所以如果你已经先前安装了PowerPivot,请务必确认这个版本是否正确。

安装完毕后,打开Excel后,可以看到Ribbon菜单中多了一项:

使用这个工具前,需要先准备数据。你可以直接使用在 Excel工作表里面的数据,也可以使用SQLServer等其它数据源的数据。

这里假定一个销售部门的数据,已经在IT部门的数据仓库中存在了,而销售分析人员,只需要把相关的数据导入到PowerPivot中,然后通过简单的设置就可以生成自己的分析模型了。

在PowerPivot选项卡中单击PowerPoint Window,会打开PowerPivot工具:

假定IT部门已经授予了销售分析部门的数据仓库系统部分响应表的访问权限,那么这里分析人员需要做的就是把相应的表导入到PivotTable工具中。

点击上图工具栏中的From Database:

选择From SQL Server。从这里可以看到,PowerPivot支持的数据源很多,还有Access和SSAS等。

在弹出的表导入工具中,输入数据仓库所在的服务器名称和数据仓库的名称。

这里我们使用微软的示例数据库Adventure Works来做演示,关于如何获取和部署这些示例,可以参考我的这篇随笔。

设置好连接信息后,点击Next。

接下来的界面会指定如何导入数据,是通过选取表或者视图的方式,还是一个查询的方式。这里选择第一个,点Next。

在数据仓库下的所有表被列了出来。在这个界面中,可以通过Friendly Name来指定一个友好名称,然后通过Filter Details指定需要表里的哪些列。

这里假定销售人员要做Internet Sales分析,在列表里直接找到FactInternetSales表:

这张表是分析用的事实表,然后需要指定相关的维度表。

在PowerPivot有一个很赞的功能就是Selected Related Tables,选择相关表。假如在数据仓库中已经定义好了主外键关系(现在似乎很少有人愿意这么做,但我觉得定义好还是一个不错的习惯),那么在这里面会直接检测到,并且自动勾选上那些维表。点击这个按钮后,可以发现很多Dim开头的维表已经都被选中了。

实际的操作中,还是建议这里给每一个表都指定一个Friendly Name,并且做适应的Filter。但这里为了演示方便直接点Finish开始导入数据。

工具开始把数据仓库里的数据加载到PowerPivot中。完成后点击Close关闭这个界面。

然后就可以看到被导入进来的表。

在实际环境中,数据仓库里额数据是每天都在发生变化的,那么如何保持PowerPivot里的数据跟数据仓库的数据保持同步呢?

如图单击Refresh All,PowerPivot就会根据先前的连接设置重新加载这些数据。

导入完毕后,把界面切换到Diagram模式:

界面会从数据视图切换到Diagram模式(顺便说一下,Excel 的第一个PowerPivot版是没有这个Diagram功能的,这也就是为什么前边提到一定要确定是第二版):

在这个关系视图里继承了数据仓库中定义的主外键结构(熟悉SSAS的同学可以把这里理解为数据源视图的定义)。

假如实际环境中,数据仓库没有定义这部分内容,就需要自己来指定表之间的关系(这个过程对于开发SSAS的朋友来说,更像是在指定"维度用法")。而方法很简单,假如我要建立FactInternetSales表中ProductKey和DimProduct中的ProductKey列的主外键关系,只需拖拽FactInternetSales表中的ProductKey字段到DimProduct表中的ProductKey字段就可以了。

接下来指定一个层次结构。建立层次结构的好处在于,可以方便在后续的透视表操作中,方便维度属性的导航,比如对于区域维度的,从大洲到国家到省再到市,或者一个时间维度的从年到半年再到季度然后月份和天的导航。这里我们在DimDate表中定义一个年月日的层次结构导航关系。

右键DimDate表,选择Create Hierarchy:

然后,可以看到在表的后面加入了一个新"列"。

重命名这个Hierarchy的名称为DateHierarchy。

然后,一次拖拽表中的如下列到这个新建的层次中:

CalendarYear

EnglishMonthName

DayNumberOfMonth

为了显示的友好性,右键层次中的CalendarYear,选择Rename将其重命名为Year,然后依次命名其它层次为Month和Day。

基本的分析模型建立完毕之后,就可以在透视表中浏览这些数据了。

如图,在PivotTable界面中Home标签点击PivotTable然后选择其下的PivotTable。

系统会提示问透视表在新建一个工作表中还是在现有工作表的一个区域,这里选择新建。

然后,可以看到熟悉的透视表,并且这个透视表自动连接到了PowerPivot里的数据。

实际上这种模式中还有一个PowerPivot Filed List,点击上图中的Filed List:

可以看到PowerPivot的Filed List要比传统的透视表Filed List多了两个切片器。通过它们可以更明了的进行数据切片分析。

比如,要分析销售出去的产品中,各个颜色的数据以分析用户对于颜色的偏好:

拖拽DimProduct的Color到Slicers Vertial,DimDate的DateHierarchy到Ro

    
[3]Linux/Unix shell 自动发送AWR report
    来源: 互联网  发布时间: 2013-11-07

       观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告。不过awrrpt.sql脚本执行时需要我们提供一些交互信息,因此可以将其整合到shell脚本中来实现自动产生指定时段的awr报告并发送给相关人员。本文即是描述linux shell脚本来实现此功能。    
   
1、shell脚本

robin@SZDB:~/dba_scripts/custom/awr> more autoawr.sh
#!/bin/bash
# --------------------------------------------------------------------------+
#                  CHECK ALERT LOG FILE                                     |
#   Filename: autoawr.sh                                                    |
#   Desc:                                                                   |
#       The script use to generate AWR report and send mail automatic.      |
#       The sql script autoawr.sql call by this shell script.               |                          
#       Default, the whole day AWR report will be gathered.                 |  
#       Deploy it to crontab at 23:30                                        |
#       If you want to change the snap interval,please change autoawr.sql   |
#          and crontab configuration                                        |
#   Usage:                                                                  |
#       ./autoawr.sh $ORACLE_SID                                            |  
#                                                                           |
#   Author : Robinson                                                       | 
#   Blog   : http://blog.csdn.net/robinson_0612                             |
# --------------------------------------------------------------------------+
#
# --------------------------
#   Check SID
# --------------------------

if [ -z "${1}" ];then
    echo "Usage: "
    echo "      `basename $0` ORACLE_SID"
    exit 1
fi

# -------------------------------
#  Set environment here 
# ------------------------------

if [ -f ~/.bash_profile ]; then
    . ~/.bash_profile
fi

export ORACLE_SID=$1
export MACHINE=`hostname`
export MAIL_DIR=/users/robin/dba_scripts/sendEmail-v1.56
export MAIL_LIST='Robinson.cheng@12306.com'
export AWR_CMD=/users/robin/dba_scripts/custom/awr
export AWR_DIR=/users/robin/dba_scripts/custom/awr/report
export MAIL_FM='oracle@szdb.com'
RETENTION=31

# ----------------------------------------------
# check if the database is running, if not exit
# ----------------------------------------------

db_stat=`ps -ef | grep pmon_$ORACLE_SID | grep -v grep| cut -f3 -d_`
if [ -z "$db_stat" ]; then
    #date >/tmp/db_${ORACLE_SID}_stauts.log
    echo " $ORACLE_SID is not available on ${MACHINE} !!!"   # >>/tmp/db_${ORACLE_SID}_stauts.log 
    MAIL_SUB=" $ORACLE_SID is not available on ${MACHINE} !!!"
    MAIL_BODY=" $ORACLE_SID is not available on ${MACHINE} at `date` when try to generate AWR."
    $MAIL_DIR/sendEmail -u $MAIL_SUB -f $MAIL_FM -t $MAIL_LIST -m $MAIL_BODY 
    exit 1
fi;

# ----------------------------------------------
# Generate awr report
# ----------------------------------------------
$ORACLE_HOME/bin/sqlplus /nolog<<EOF
connect / as sysdba;
@${AWR_CMD}/autoawr.sql;
exit;
EOF

status=$?
if [ $status != 0 ];then
    echo " $ORACLE_SID is not available on ${MACHINE} !!!"   # >>/tmp/db_${ORACLE_SID}_stauts.log
    MAIL_SUB=" Occurred error while generate AWR for ${ORACLE_SID}  !!!"
    MAIL_BODY=" Some exceptions encountered during generate AWR report for $ORACLE_SID on `hostname`."
    $MAIL_DIR/sendEmail -u $MAIL_SUB -f $MAIL_FM -t $MAIL_LIST -m $MAIL_BODY
    exit
fi

# ------------------------------------------------
# Send email with AWR report
# ------------------------------------------------
dt=`date -d yesterday +%Y%m%d`
filename=`ls ${AWR_DIR}/${ORACLE_SID}_awrrpt_?_${dt}*`
if [ -e "${filename}" ];then
    MAIL_SUB="AWR report from ${ORACLE_SID} on `hostname`."
    MAIL_BODY="This is an AWR report from ${ORACLE_SID} on `hostname`."
    $MAIL_DIR/sendEmail -u $MAIL_SUB -f $MAIL_FM -t $MAIL_LIST -m $MAIL_BODY -a ${filename}
    echo ${filename}
fi

# ------------------------------------------------
# Removing files older than $RETENTION parameter 
# ------------------------------------------------

find ${AWR_DIR} -name "*awrrpt*" -mtime +$RETENTION -exec rm {} \;
exit    

2、产生awr report 的sql脚本

robin@SZDB:~/dba_scripts/custom/awr> more autoawr.sql
SET ECHO OFF;
SET VERI OFF;
SET FEEDBACK OFF;
SET TERMOUT ON;
SET HEADING OFF;

VARIABLE rpt_options NUMBER;
DEFINE no_options = 0;

define ENABLE_ADDM = 8;

REM according to your needs, the value can be 'text' or 'html'

DEFINE report_type='html';

BEGIN
   :rpt_options := &no_options;
END;
/

VARIABLE dbid NUMBER;
VARIABLE inst_num NUMBER;
VARIABLE bid NUMBER;
VARIABLE eid NUMBER;

BEGIN
  SELECT MIN (snap_id) INTO :bid
    FROM dba_hist_snapshot
   WHERE TO_CHAR (end_interval_time, 'yyyymmdd') = TO_CHAR (SYSDATE, 'yyyymmdd');

   SELECT MAX (snap_id) INTO :eid FROM dba_hist_snapshot;

   SELECT dbid INTO :dbid FROM v$database;

SELECT instance_number INTO :inst_num FROM v$instance;
END;
/

COLUMN ext NEW_VALUE ext NOPRINT
COLUMN fn_name NEW_VALUE fn_name NOPRINT;
COLUMN lnsz NEW_VALUE lnsz NOPRINT;
SELECT 'txt' ext
  FROM DUAL
 WHERE LOWER ('&report_type') = 'text';

SELECT 'html' ext
  FROM DUAL
 WHERE LOWER ('&report_type') = 'html';

SELECT 'awr_report_text' fn_name
  FROM DUAL
 WHERE LOWER ('&report_type') = 'text';

SELECT 'awr_report_html' fn_name
  FROM DUAL
 WHERE LOWER ('&report_type') = 'html';

SELECT '80' lnsz
  FROM DUAL
 WHERE LOWER ('&report_type') = 'text';

SELECT '1500' lnsz
  FROM DUAL
 WHERE LOWER ('&report_type') = 'html';

set linesize &lnsz;
COLUMN report_name NEW_VALUE report_name NOPRINT;

SELECT instance_name || '_awrrpt_' || instance_number || '_' || b.timestamp || '.' || '&ext'
          report_name
  FROM v$instance a,
       (SELECT TO_CHAR (begin_interval_time, 'yyyymmdd') timestamp
          FROM dba_hist_snapshot
         WHERE snap_id = :bid) b;

SET TERMOUT OFF;
SPOOL $AWR_DIR/&report_name;

SELECT output
  FROM TABLE (DBMS_WORKLOAD_REPOSITORY.&fn_name (:dbid,
                                                 :inst_num,
                                                 :bid,
                                                 :eid,
                                                 :rpt_options));
SPOOL OFF;
SET TERMOUT ON;
CLEAR COLUMNS SQL;
TTITLE OFF;
BTITLE OFF;
REPFOOTER OFF;

UNDEFINE report_name
UNDEFINE report_type
UNDEFINE fn_name
UNDEFINE lnsz
UNDEFINE no_options 

3、补充说明
a、shell脚本中首先判断指定的实例是否处于available,如果不可用则退出
b、接下来调用autoawr.sql脚本来产生awr report
c、产生awr report后,如果文件存在则自动发送邮件
d、autoawr.sql脚本中是产生awr report的主要部分,主要是调用了DBMS_WORKLOAD_REPOSITORY.&fn_name过程
e、该脚本是生成一整天awr report,即从当天的零点至第二天零点
f、sql脚本的几个参数需要确定的是dbid,实例号,以及snap的开始与结束id,rpt_options用于确定报告是否带addm项
g、可以根据需要定制所需的snap的起止id,需修改SQL来获取正确的snap id,来生成所需的报告
h、根据需要修改fn_name定制生成awr报告为txt或html类型,report_name则是确定最终文件名
i、AWR 报告的两个snap 之间不能有重启DB的操作,否则有可能错误(未测试过)
j、该脚本支持Oracle 10g/11g,有关详细的产生awr report脚本说明请参考oracle自带的awrrpt.sql,awrrpti.sql

 

更多参考:

有关Oracle RAC请参考
     使用crs_setperm修改RAC资源的所有者及权限
     使用crs_profile管理RAC资源配置文件
     RAC 数据库的启动与关闭
     再说 Oracle RAC services
     Services in Oracle Database 10g
     Migrate datbase from single instance to Oracle RAC
     Oracle RAC 连接到指定实例
     Oracle RAC 负载均衡测试(

    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3