awei84072012-08-14 15:18
创业团队容易出现哪些问题?
之所以要写这一篇文章,是因为目前所在的团队存在很多问题。总结下来,和大家共勉。首先要说明的是,我很欣赏互联网精神:自由、开放、包容。并且认为这也是创业团队需要具备的理念 。 如果不能认同这一条理念,下面的内容就不必再浪费时间了。
团队不是一群人在一起,然后各自做自己的事情!
创业团队,人是第一位的,事儿都是人做的。最近几年的互联网业界内,很少有单靠项目的优势取胜的团队,一个项目,一个好的创意,往往会有几个甚至更多公司在做。 更重要的是团队的协作能力,投资人在决定是否投资的时候看中的往往也是团队。
我和一个同事聊天的时候讨论过这个问题:并不是一个Leader随便招来一群人,就是一个Team。当然,也不是老板招来了几个大牛,就能称得上是一个好的团队。更重要的是,团队的凝聚力,和团队成员的协作能力。
那么怎么样的团队才是好的团队呢?或者如何避免团队协作出现问题?
1、团队成员价值观相同
团队成员价值观要一致,未必完全相同,但大的方向要一致。价值取向要统一。统一并不是价值取向单一,而是,能够相互理解。这样彼此才能够相互信任和支持。
理论上来讲这里有两种情况:
1)大家的目标一致,每个人的价值观人生观也完全一致,其他人几乎是另外一个自己,所以可以做到相互认同和支持。这个是不现实的。
2) 另外一种,大家各有自己的思考方式,但每个人的大致目标一致,都有团队意识,而且大部分成员能够做到求同存异,这样的团队,成员之间也能够认可彼此的做事方式。
如果不能解决团队价值观一致的问题,团队很可能要面临以下问题:很多成员无团队意识,如一盘散沙,各自心怀鬼胎,勾心斗角,各谋其利。久而久之,有理想有想法的成员忍受不了选择离开,混日子的反而都留下了,团队的整体质量越来越差。
古人云,事出有因。
这样的团队,必然是因为有一个不合格的Leader。招人的时候未考虑企业文化(团队文化)的问题,或者leader本人对“团队”的理解也只是停留在字面意思。招聘的时候鱼龙混杂甚至未经筛选。
2. .项目进度公开
个人认为这个事情对于互联网公司很重要,每个人都希望做的事儿有价值并可以很快被看到。对于互联网创业团队,短时间就盈利很难;那么就要让团队成员看到小组的项目的进度以及整个团队的项目完成状况,了解其他成员的进度,同时能够督促自己。
如果项目进度不公开,团队成员长期处于不知情,对项目进展不了解,很容易失去信心,没了士气。
这个前提是作为leader 要有较好的大局观和执行力。前期把总体目标规划好、项目分工明确、各阶段目标量化、执行目标细化!
切忌:
需求不明确
分工不明确
信息不公开,部门(小组)之间沟通存在障碍
赶时间完成项目
项目进度把控/执行 出现问题,一再延迟。
3.团队成员流动
如果团队成员流动过快,不停地换人接手前人遗留的工作,这个成本是相当高的:对项目的了解需要时间,同相关工作人员的沟通时间,另外对其他团队成员造成的心理负面情绪更是不可估计的。
人事不稳定的原因:待遇,制度,项目,团队文化。
如果团队成员没有安全感和归属感,那么背后一定有一个失败的Leader。
关于待遇,有个段子:
对于有价值的员工,不要去在乎那点小钱!一个值8000元的人,就别讨价还价只愿…相反,痛痛快快付他10000元,他会拿出两倍的能耐为你卖命干。
作为leader,如果有一个得力的员工作为助手,对leader所带的团队本身的帮助应该也是很大的,如果自己有能力帮助员工提升待遇,为什么不呢?
4.让每个成员感觉到自身的进步和成长。
除了待遇之外,创业团队每个人都有对个人发展提升的期望,也许他们希望通过一个项目提升锻炼自己,这一点也无可厚非。不想成长的人才最无药可救!
互联网精神就是自由、开放、包容。同样,创业团队也要尽可能做到这几点。
团队不是一群人在一起,然后各自做自己的事情!
awei84072012-05-26 11:48
DBA面临新环境要了解的
面对一个全新的环境,作为一个Oracle DBA,首先应该了解什么?
在这里,不谈那些大的方面,比如了解整个IT环境整体情况,假设你已经知道了这些,接下来需要面对的就是这些一个个活生生的database了.这里总结了一些一般的思路来面对一个全先的database,从而快速了解你面对的环境概要.
这也不是教科书,只是一些心得和体会,对于这种问题,每个人的认识的角度是不一样的.欢迎大家继续补充完善.
1、先要了解当前的Oracle数据库的版本和平台和相关信息
这个很重要,忙乎了半天还知道你的数据库是哪个版本,跑在什么系统上,那岂不是很悲哀,所以我个人认为这是第一步需要了解的。下面的这些脚本可以帮助你获取你需要的相关信息。
select * from v$version;
select * from dba_registry_database;
select dbid, name, open_mode, database_role, platform_name from v$instance;
select dbms_utility.port_string from dual;
set serveroutput on
declare
ver VARCHAR2(100);
compat VARCHAR2(100);
begin
dbms_utility.db_version(ver, compat);
dbms_output.put_line('Version: ' || ver ||' Compatible: ' || compat);
end;
/
2、其次要了解你的数据库中装了哪些组件
select * from dba_registry;
3、搞清楚这个环境是单机还是集群?
这个判断方法很多,我这里给出一个借助dbms_utility来判断的方法。
set serveroutput on
declare
inst_tab dbms_utility.instance_table;
inst_cnt NUMBER;
begin
if dbms_utility.is_cluster_database then
dbms_utility.active_instances(inst_tab, inst_cnt);
dbms_output.put_line('-' || inst_tab.FIRST);
dbms_output.put_line(TO_CHAR(inst_cnt));
else
dbms_output.put_line('Not A Clustered Database');
end if;
end;
/
4、是否配置了DataGuard?
select protection_mode, protection_level, remote_archive, database_role, dataguard_broker,guard_status
from v$database;
5、是否起用了归档模式?
conn /as sysdba
archive log list;
select log_mode from v$database;
6、是否起用了flashback database特性?
select flashback_on from v$database;
如果是,再进一步查看FRA的配置情况
7、是否起用了force logging和补充日志?
select force_logging,supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui,
supplemental_log_data_fk, supplemental_log_data_all
from v$database;
8、了解控制文件的组成
select * from v$controlfile;
9、了解日志文件的组成
select l.group#, lf.type, lf.member, l.bytes, l.status LOG_STATUS, lf.status LOGFILE_STATUS
from v$log l, v$logfile lf
where l.group# = lf.group#
order by 1,3;
10、了解参数文件的组成和位置
show parameter spfile
create spfile from pfile...
create pfile from spfile;
create spfile from memory;
create pfile from memory;
11、了解instance的相关信息
select instance_name, host_name, status, archiver, database_status, instance_role, active_state
from v$instance;
12、用户和密码相关
是否使用了缺省密码?
是否使用了profile?
是否起用了密码验证函数?
用户身份验证的方法?
密码是否区分大小写等。
select name, value from gv$parameter where name = 'resource_limit';
select profile, resource_name, limit from dba_profiles order by 1,2;
select username, profile from dba_users where account_status = 'OPEN' order by 1;
select d.username, u.account_status
from dba_users_with_defpwd d, dba_users u
where d.username = u.username and account_status = 'OPEN'
order by 2,1;
13、是否打开了BLOCK CHANGE TRACKING
select filename, status, bytes from v$block_change_tracking;
14、起用了那些特性(Feature)?
DBMS_FEATURE_USAGE_REPORT
15、表空间和数据文件的规划
这个大家都很熟悉,就不写了
16、字符集相关
select * from database_properties;
17、系统中是否存在invalid对象
select owner, object_type, COUNT(*)
from dba_objects
where status = 'INVALID'
group by owner, object_type;
18、更进一步的
是否使用了ASM?
当前系统的备份方法和策略是什么?
网络文件的配置是如何的?
19、查看一下最近的alert日志,获取一些有用的信息
20、跑几个性能分析报告,看看最近系统的运行状态如何
21、跑一个RDA报告,收集完整的系统状态报告
awei84072012-04-12 17:55
Nagios的安装配置
一、服务器端安装
1.下载软件
链接地址:
http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
或在http://www.nagios.org/download这里可以下载Nagios的主程序、插件、附加的软件把Nagios的主程序和插件都下载好
2.安装Nagios
A、安装环境要求
Apache
PHP
GCC compiler
GD development libraries
需要有root权限
B、建立Nagios用户和组
/usr/sbin/useradd -m nagios
passwd nagios
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache
C、安装Nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
tar zxvf nagios-3.2.1.tar.gz
cd nagios-3.2.1
./configure --prefix=/usr/local/nagios --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
3.安装Nagios插件
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure--enable-redhat-pthread-workaround
4.安装NRPE服务
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure --prefix=/usr/local/nagios
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
添加nrpe服务到xinetd:
vi /etc/services
nrpe 5666/tcp # nrpe
重新启动Xinetd服务:
service xinetd restart
测试Nrpe是否能正常工作:
/usr/local/nagios/libexec/check_nrpe -H localhost
二、Nagios配置
1.Nagios配置
A、修改Nagios的配置文件
vi /usr/local/nagios/etc/nagios.cfg
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg //注释此行
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件路径
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg //监控命令配置文件路径
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg //主机组配置文件路
cfg_file=/usr/local/nagios/etc/objects/services.cfg //服务配置文件路径
check_external_commands=1 //允许在web接口下执行重启Nagios
command_check_interval=60s //改成60s,命令检查时间间隔
因为默认的nagios配置文件没有hosts.cfg、hostgroups.cfg等档,因此在检查的时候会报错,这时需要手工的去创建这些档:
cd /usr/local/nagios/etc/objects
touch hosts.cfg
touch hostgroups.cfg
..........
B、配置cgi.cfg
vi /usr/local/nagios/etc/cgi.cfg //修改cgi脚本控制档
use_authentication=1 //确保值为1
default_user_name=nagios //修改为认证用户
后面修改内容如下:
authorized_for_system_information=nagiosadmin,nagios
authorized_for_configuration_information=nagiosadmin,nagios
authorized_for_system_commands=nagios //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,nagios
authorized_for_all_hosts=nagiosadmin,nagios
authorized_for_all_service_commands=nagiosadmin,nagios
authorized_for_all_host_commands=nagiosadmin,nagios
C、配置command.cfg,定义通知方式
需要定义notify-service-by-email与notify-host-by-email两个通知
# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mailx -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mailx -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
D、配置contacts.cfg,定义联系人
vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email XXX@YY.COM;
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
然后检查配置文件是否出错
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果正常就显示如下信息
Total Warnings: 0
Total Errors: 0
启动Nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
设置开机自动启动
echo "/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg" >> /etc/rc.local
2.配置Apache
配置httpd.conf使用nagios在httpd.conf后面加入如下内容
vi /etc/httpd/conf/httpd.conf
#Setting for nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
对增加后的参数进行验证
/usr/sbin/apachectl -t //检查配置文件是否正确
创建apache目录验证文件
htpasswd -c /usr/local/nagios/etc/htpasswd nagiosadmin
New password: (输入密码)
Re-type new password: (再输入一次密码)
生成apache访问的认证档并启动apache进行验证
service httpd restart //启动apache
到目前为止,监控主机上的nagios的所有安装配置已经全部完成,接下来就是要配置具体的监控项目了,在此可以输入:http://10.192.28.245/nagios/登陆WEB监控接口了,登陆账号输入刚才建立的认证账号
三、客服端的实施
1.监控Linux主机
Client端配置:
A.建用户:
useradd nagios //可以在/etc/password里修改此账户的shell为/sbin/nologin
passwd nagios
B.安装插件:
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --prefix=/usr/local/nagios --enable-redhat-pthread-workaround
make all
make install
C.修改权限:
chown nagios:nagios /usr/local/nagios -R
D.安装NRPE服务:
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --enable-ssl
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
E.添加服务器IP:
vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 10.192.28.245
F.添加NRPE服务:
vi /etc/services
nrpe 5666/tcp # nrpe
G.定义要检查的项目
vi /usr/local/nagios/etc/nrpe.cfg
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 2,2,2 -c 2,2,2
command[check_data]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /data
command[check_u01]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /u01
command[check_var]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /var
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
H.重新启动Xinetd服务:
service xinetd restart
I.查看NRPE服务是否开启:
netstat -ant|grep 5666
J.测试Nrpe是否能正常工作:
/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12 (这表示在本地用check_nrpe连接nrpe daemon是正常的)
Server端配置:
A.在hosts.cfg中添加主机定义
vi /usr/local/nagios/etc/objects/hosts.cfg
添加以下内容
define host {
host_name wmssty
alias wmssty
address 10.192.29.32
contact_groups admins
check_command check-host-alive
max_check_attempts 5
notification_interval 1
notification_period 24x7
notification_options d,u,r
}
B.将监控主机划分到指定组中
vi /usr/local/nagios/etc/objects/hostgroups.cfg
define hostgroup {
hostgroup_name Linux DBSTY
alias Linux DBSTY
members wmssty,multidb,emdi_sty,dt2_sty,dt8sty,pdmsty,rac_sty
}
C.定义要检查的项目
vi /usr/local/nagios/etc/objects/services.cfg
#########wms_sty check begin##########
define service {
host_name wmssty
service_description check-data
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 1
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_data
}
define service {
host_name wmssty
service_description check-u01
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 1
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_u01
}
define service {
host_name wmssty
service_description check-load
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 1
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
define service {
host_name wmssty
service_description check-host-alive
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive
}
define service {
host_name wmssty
service_description check-var
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_var
}
#########wms_sty check end#########
D.验证配置文件是否正确,并重启
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/object/nagios.cfg
service nagios restart //重启nagios使配置生效
E.查看naigios监控页面,发现主机已经被正常添加
2、监控windows主机
Client端配置:
Nagios监控windows需要在被监控Windows主机上安装NSClient++
A.安装NSClient++
到http://nsclient.org/nscp/downloads下载最近版本的NSClient++并安装
B.配置NSClient++
编辑C:\NSClient++下的NSC.ini檔,修改以下地方:
[modules]
所有的.dll注释都全都去掉,CheckWMI.dll和RemoteConfiguration.dll两个仍保留注释装套
[Settings]
'password'这个项目是在设置密码,作用是在nagios监控主机进行联机时,要求提供密码才能进一步进行联机,这里为了方便起见,跳过它,不要设定密码。
'allowed_hosts'选项的注释去掉,并且加上nagios的监控主机的IP,修改如下allowed_hosts=127.0.0.1/32,10.192.28.245以逗点相隔。
[NSClient]
'port'选项的注释须要拿掉,并且它的值是'12489',这是NSClient的预设port
设定完成之后,启动NSClient++
在cmd中C:\NSClient++下,执行NSClient++ /start
在cmd下,执行netstat -an,检查port 12489是否开启
启动完后,在windows上的操作就结束了
Server端配置:
A.在hosts.cfg与hostgroup.cfg中添加主机定义
此步操作与监控Linux主机一致
B.定义要检查的项目
以/usr/local/nagios/etc/objects/windows.cfg档为蓝本,修改usr/local/nagios/etc/objects
/services.cfg文件,添加必要的监控项目
vi /usr/local/nagios/etc/objects/services.cfg
##################tstfox01 check begin#############################
define service {
host_name tstfox01
service_description check-host-alive
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check-host-alive
}
define service{
use generic-service
host_name tstfox01
service_description CPU Load
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!CPULOAD!-l 5,80,90
}
define service{
use generic-service
host_name tstfox01
service_description Memory Usage
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!MEMUSE!-w 80 -c 90
}
define service{
use generic-service
host_name tstfox01
service_description C:\ Drive Space
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!USEDDISKSPACE!-l c -w 90 -c 95
}
define service{
use generic-service
host_name tstfox01
service_description D:\ Drive Space
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!USEDDISKSPACE!-l d -w 80 -c 90
}
define service{
use generic-service
host_name tstfox01
service_description E:\ Drive Space
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
check_command check_nt!USEDDISKSPACE!-l e -w 80 -c 90
}
define service{
use generic-service
host_name tstfox01
service_description WEB
check_period 24x7
max_check_attempts 1
normal_check_interval 1
retry_check_interval 1
contact_groups admins
notification_interval 10
notification_period 24x7
check_command check_http_status!$HOSTADDRESS$!8080
}
##################tstfox01 check end#############################
C.验证配置文件是否正确,并重启
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios restart //重启nagios使配置生效
D.查看naigios监控页面,发现主机已经被正常添加
awei84072012-03-16 15:14
逻辑DG模式下,在主库创建表空间时,备库是无法成功创建表空间的
因此要让备库和主库保持物理和逻辑上的一致性,必须先在备库上创建好和主库一样的表空间,
然后再在主库上面创建一样的表空间,之后会出现数据同步不了的问题,因为主库和备库的文件
存放路径不一致,会导致在备库上面创建不成功,这个错误会影响到之后的数据同步,因此需要
通过DBA_LOGSTDBY_EVENTS视图查出最近的日志信息
------------------------------------------------------
SELECT EVENT_TIMESTAMP, xidusn, xidslt, xidsqn, EVENT, STATUS event_status FROM DBA_LOGSTDBY_EVENTS
查看 当前 事务中 的 三个 信息 (XIDUSN , XIDSLT , XIDSQN)
XIDUSN:就是事务的回滚段号
XIDSLOT:就是ITL列表中,slot的号
XIDSQN:就是表示这个slot被重复使用的次数
以下操作需在服务端下执行!
然后 先停止 应用
alter database stop logical standby apply;
忽略该事务,为了可以正常同步数据。
exec dbms_logstdby.skip_transaction(26,14,152015); ---- XIDUSN , XIDSLT , XIDSQN 需更改
启动应用
alter database start logical standby apply immediate;
---------------------此步骤可能需要反复执行,直到可以同步为止---------------------------------
awei84072012-03-12 19:52
ORACLE数据库日常维护
首先要说的是,不同版本数据库提供的系统表会有不同,你可以根据数据字典查看该版本数据库所提供的表
select * from dict where table_name like '%SESSION% ';
就可以查出一些表,然后根据这些表就可以获得会话信息。
像这样就是 查询当前正在操作的会话:
SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER,TERMINAL, MACHINE,
PROGRAM, A.NAME FROM V$SESSION S, AUDIT_ACTIONS A WHERE S.COMMAND = A.ACTION;
一、查看数据库的连接情况
DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。
以下的SQL语句列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status
from v$session;
其中,
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果DBA要手工断开某个会话,则执行:
alter system kill session 'SID,SERIAL#';
注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。
二、常用命令
select count(*) from v$session #连接数
Select count(*) from v$session where status='ACTIVE' #并发连接数
show parameter processes #最大连接
alter system set processes = value scope = spfile;重启数据库 #修改连接
1:oracle中怎样查看总共有哪些用户
select * from all_users;
2:查看oracle当前连接数
怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。
select * from v$session where username is not null
select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数
select count(*) from v$session #连接数
Select count(*) from v$session where status='ACTIVE' #并发连接数
show parameter processes #最大连接
alter system set process
3:列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status from v$session;
三、 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数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:
执行SQL语句:
alter database
backup controlfile to '/home/backup/control.bak';
或:
alter database
backup controlfile to trace;
这样,会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的SQL命令。
六、 检查数据库文件的状态
DBA要及时查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:
select file_name,status
from dba_data_files;
如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。
七、 检查数据库定时作业的完成情况
如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:
select job,log_user,last_date,failures
from dba_jobs;
如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。
八、 数据库坏块的处理
当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:
ORA-01578: ORACLE data block corrupted (file # 7, block # <BLOCK>)
ORA-01110: data file <AFN>: '/oracle1/oradata/V920/oradata/V816/users01.dbf'
其中,<AFN>代表坏块所在数据文件的绝对文件号,<BLOCK>代表坏块是数据文件上的第几个数据块
出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。
1. 确定发生坏块的数据库对象
SELECT tablespace_name,
segment_type,
owner,
segment_name
FROM dba_extents
WHERE file_id = <AFN>
AND <BLOCK> between block_id AND block_id+blocks-1;
2. 决定修复方法
如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;
如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;
如果有数据库的备份,则恢复数据库的方法来进行修复;
如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据块上的记录取出来,然后对这个表进行重建。
3. 用Oracle提供的DBMS_REPAIR包标记出坏块
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>','<tablename>');
4. 使用Create table as select命令将表中其它块上的记录保存到另一张表上
create table corrupt_table_bak
as
select * from corrupt_table;
5. 用DROP TABLE命令删除有坏块的表
drop table corrupt_table;
6. 用alter table rename命令恢复原来的表
alter table corrupt_table_bak
rename to corrupt_table;
7. 如果表上存在索引,则要重建表上的索引
九、 操作系统相关维护
DBA要注意对操作系统的监控:
文件系统的空间使用情况(df -k),必要时对Oracle的警告日志及TRC文件进行清理
如果Oracle提供网络服务,检查网络连接是否正常
检查操作系统的资源使用情况是否正常
检查数据库服务器有没有硬件故障,如磁盘、内存报错