跳至主要内容

Shell实际运用和Oracle DataGuard一天小结

在实际生产应用中,其实我可以这么些,首先判断这个人是不是ROOT
那么就需要在脚本中写上这么个判断语句:
#!/bin/sh

#ifroot
if [ "$LOGNAME" != "root" ]
then
echo "You
need to be
root to run this script" >&2
exit 1
else
echo "Yes
indeed
you are $LOGNAME proceed"
fi



return是函数返回,exit是结束进程.
exit(0); /*这个是正常的关闭所有程序 */
exit(1); /*这个就刚好相反,有错误的关闭 */

/dev/null #表示的是类似于windows的回收站,无限大 2>&1#表示将这些在后台处理

同样的语句在solaris下和RH下有点不同,当我使用exit语句时rh下会执行,而solaris直接就是跳出。也是是因为SHELL不同的缘故。

在for in中加” ”就是字符串,数字不加就是数字显示的是竖直排列,家了引号后就是横向排列了。
在使用的时候Sorlaris不支持$()这样的在shell中嵌套的写法,反而是支持``反引号的写法,RH测试两者都支持。

可以用ls wc –l显示文件夹的文件数,用shell的话是做个count
#!/bin/sh
#forcount
counter=0
for files in *
do
counter=`expr $counter + 1`
done
echo "count the `pwd` total files
is $counter"


要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS window”)并输入命令:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld
根据系统中MySQL安装位置的不同,前面的例子中使用的路径也不同。
在非NT版本的Windows中,在后台启动mysqld。也就是,服务器启动后,你应当可以看见后面的命令提示。如果你用该方法在Windows NT、2000、XP或2003中启动服务器,服务器则在前台运行,在服务器退出前,不会出现命令提示。因此,当服务器运行时,应当打开另一个控制台窗口来运行客户端程序。
下述命令可以停止MySQL服务器:
C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqladmin -u root shutdown
该命令调用MySQL管理工具mysqladmin连接服务器并告知它关闭服务。该命令使用MySQL root用户连接,这是MySQL权限系统中的默认管理账户。请注意MySQL权限系统中的用户完全独立于Windows下的登录用户。
如果mysqld不能启动,检查错误日志看看服务器是否写入了显示问题原因的任何消息。错误日志位于C:\Program Files\MySQL\MySQL Server 5.1\data目录中。是带后缀.err的文件。还可以尝试将服务器启动为mysqld --console;此时,可以从窗口中获得一些有用的信息,可以帮助解决问题。
最后选项是用--standalone --debug启动mysqld。此时,mysqld 写入日志文件C:\mysqld.trace,应当包含mysqld不启动的原因。
使用mysqld --verbose --help显示mysqld的所有选项。



使用脚本中的函数参数作为shell命令,一开始不是很明白现在有点明白了,在刚刚开始的使用你如同平时写脚本一般将函数写进去,例如
findit(){
if [ $# -lt 1 ]
then
echo "usage :findit file"
return
1
fi
find / -name $1
}


然后写完chmod后,在执行下. ./XXX,当你在命令行下用set命令后你会发现他已经被加载到你的用户下,当然了在你退出这个session后,会自动消失的。那么这个使用你在使用这个函数类似于findit他就不会报错,而且也不需要向刚刚执行脚本一样,而他直接已经加载到你的bin下,所以当我使用findit main的时候他会全盘搜索,但是用于我是用其他用户的所以不能找到,因为权限不够。
当使用了unset命令后则可以将已经加载的这个函数去除。Set后他已经不再了

参数输入没怎么细看,有些用的找有些用不着 -、-

scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root 也就是说可以基于SSH进行文件的传输
ssh 下如果我登陆别的服务器或者说是被改变了端口的服务器那么我需要用到的是
ssh –p 10088 192.168.18.91 假如我91的SSH端口是10088

Oracle DATAGUARD
-------------------------------------------------------------------------
我在备份服务器上MOUNT的时候只用了一个CONTROLFILE所以我alter system mount database;的时候怎么也MOUNT不起来。


我在做采用ARCH归档日志的最大性能
SQL>alter system set log_archive_dest_2='SERVICE=dbstandby REOPEN=300'
scope=both;
SQL> alter system set log_archive_dest_state_2=enable
scope=both;
SQL>alter system archive log current;

在做第一句的时候提示不能写pfile,然后用show parameter spfile以后发觉我果然是用pfile启动的,那么之后我就直接修改目前pfile的语句,而
SQL>alter system set log_archive_dest_2='SERVICE=dbstandby REOPEN=300'
scope=both

也改成

SQL>alter system set log_archive_dest_2='SERVICE=dbstandby REOPEN=300'
scope=memory;
在vi中编辑
*.log_archive_dest_2='SERVICE=dbstandby REOPEN=300'
*.log_archive_dest_state_2=enable scope=both



关于如何检查和校验是否备用服务器设置成功
[3] STANDBY_ARCHIVE_DEST
*.standby_archive_dest='/oracle/oracle9i/oradata/archive' 这段在备库的文件中添加表示的是你将传过来的log存放的位置,那么还可以在你ORACLE安装的admin/cdump下找到,alert_log..这个文件中找到,当你在主库做一次log切换的时候例如说你alter system switch logfile;之后那么就会从主库传log到备库上去,而且同时在上面提到的两个log文件中出现。
以上是我白天做了一天的DG的一些错误解析,那么我晚上小小的来解析下。
这个做完大概是MAXIMIZE PERFORMANCE。由于是练手,那么其实在练习过程前,领导已经练习过了做好了大概的pfile,所以在使用之前我并没有自己建立属于自己的PFILE,在我做
SQL>SHOW PARAMETER SPFILE
则显示的空字段,那么我是以PFILE启动的,将文档设为强制
SQL>ALTER DATABASE FORCE LOGGING;
两台机子的环境要设成一样。然后将进行以下步骤
$cd $ORACLE_BASE
$mkdir -p oradata/tbdb/archiv
$mkdir -p
admin/tbdb/bdump
$mkdir -p admin/tbdb/cdump
$mkdir -p admin/tbdb/udump
我因为篇幅的关系我下面就不写了,但是我现在环境下$diff initora9i.ora_pri initora9i_std比较了一下其中
#if change controlfile then edit this
*.control_files='/u01/oracle/oradata/tbdb/control01.ctl',
'/u01/oracle/oradata/tbdb/control02.ctl',
'/u01/oracle/oradata/tbdb/control03.ctl'
#standby database parameter
*.standby_file_management=AUTO
*.remote_archive_enable=TRUE
*.standby_archive_dest='/u01/oracle/oradata/tbdb/archive'
*.fal_server='DBPRIMARY'
*.fal_client='DBSTANDBY'
大概的差距如何具体解释下,在写的过程中,如果你把controlfile改写了后需要把位置改下,同时把备课的时间改写,特别要注意的是fal_server和fal_client的改写,在fal_client这里很重要的就是你以后再实行找到备库的名字。
在主库rman下backup database和logfile,在备库中Oracle

$rm $ORACLE_HOME/dbs/orapw$ORACLE_SID
$orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=test entries=4
我在做的时候按照教程设了两个listener一个1521一个1522端口。在备库上较复杂在主库上则比较简单。
下一步就需要在主库上生成控制文件SQL> alter database create standby controlfile as '路径和控制文件名'在做一次$ scp,例如今天的环境下$scp 路径和名称 192.168.18.92:'路径和名称'。
在备库中启动
SQL> connect / as sysdba Connected to an idle instance.
SQL>startup nomount pfile=路径
SQL>alter database mount standby database;

之后rman了以后进行restore database和restore archivedlog all.
在arch模式下用
SQL>alter system set log_archive_dest_2='SERVICE=dbstandby REOPEN=300'
scope=both;
SQL>alter system set log_archive_dest_state_2=enable scope=both;
SQL>alter system archive log current;
如何验证呢
SQL>SELECT SEQUENCE#,FIRST_TIME,NEXT_TIME FROM V$ARCHIVED_LOG;
这样可以看

当我在tail -10 $ORACLE_BASE/ora9/admin/dbump/alter_.....log这个的时候可以看出他现在正在等哪个,第一次我没有做成功的原因是我不知道如何将日志穿到备库上。而这时候需要老师点播了,在主库上做一次SQL>alter system switch logfile;这时候tail的时候你可以看到已经传到备库了。今天就到这里了。明天最剩下的工作。

评论

此博客中的热门博文

Python学习笔记20100117

映射list   Dictionary 是用{}. list 是一那个[]. turple是用() 当你定义过dictionary后,你可以使用d.keys(), d.values(),d.items()将定义后的时候分别显示出来 当然可以将list里的值加减乘除,也可以如一般的定义直接重新复制这个list. 链接与分割字符串的 li=";", join(li) 则显示的就是 分隔符为;的数 如果使用li=li.split(";")则将刚刚;的分隔符删除,而split里也可定义域,如li.split(";",1)   自省 <---这是啥 之前在使用的时候发觉有些书本上的模块不能调用,很多是py脚本定义过的函数。 下载该脚本s,然后上传至指定位置。 >>>import sys >>>sys.path >>>sys.path.append("绝对位置")然后就能调用这些脚本和参数了。 删除 >>>sys.path.pop() 定义一个参数是 def info(test, test1=10.test2=12): info是函数名,test是必备参数,因为没有定义值,test1和test2是可选参数,定义了初始值   以上是外部函数的调用,下面转到内部函数 内部函数有type,str,dir及其他   ---type 返回任意字符的类型,模块也可以。types模块 >>> type(1) <type 'int'> >>> li=[] >>> type(li) <type 'list'> >>> import odbchelper >>> type(odbchelper) <type 'module'> >>> type(sys) <type 'module'> >>> import types ...

投名状

昨天晚上实在无聊,就屁颠屁颠的去看了《投名状》,本来去奥斯卡的,发觉已经只有9点以后的场次,还特别的翘,我说那九点看了直接去看《集结号》首映算了,别人不愿意,那行,然后出来瞎晃悠,还好几个周围的电影院还近,去了胜利,人那还没上片,看来没希望,突然想去唱歌,行,反正金歌也进,就那么走过去吧,突然眼前豁然开朗,这不是西湖电影院么,一阵小跑,发觉上片,最近的场次还只有头牌了,虽然头牌脖子有点罩不住,但是至少看看片子还可以的。 网上大概了解了下《投名状》,陈可辛翻拍的《刺马》,加上了几个现代的演员。故事的大概是:姜午阳、赵二虎本为草莽,在一次争斗中与庞青云结识。三人惺惺相惜,结为异姓兄弟。不料日就生变,赵二虎的妻子莲生爱上了大哥庞青云,庞青云也对莲生心生爱慕。不久后,庞青云升为两江总督,欲望逐渐膨胀,变得心狠手辣。他的道德防线也逐渐崩溃,霸占莲生,还要对兄弟下手…… 剧情也就那么个回事情,其实故事梗概不然,一个从死人堆里爬出来的人,什么都失去过了 。已经改变了他的原有个性,他已经从开始就知道什么是他要的,而唯一觉得真是的就是老徐那一次,其实古时候也挺简单的,说得好就上了。只是一种人性做本质的释放。受苦挨饿无非就是为了有着一日飞黄腾达,为了生活隐姓埋名,别人都在抢军粮的时候什么都不做,唯一的只是在金城武快要被杀掉的时候救助,然后直接取了押送大将的首级。擒贼先擒王。。。。 而刘德华的出场也特别犀利,从他的眼神看出他已经被锻炼的很老练,已经是一个大将之才,错的地方就是信错了人,在后面苏州一役的时候,从为了一个被困一年的军队,只身一人去刺城主。被困一年无论对于城内还是城外都是极大的考验,心里防线都已经到了崩溃的边缘。而城主以他的解脱来换大众的解脱,这是很等的伟大,而战争是残酷的,不能收编的俘虏虽然答应了别人,可没有粮食来养活那么多人。敌军的气节也让人唏嘘不已。 刘德华的演绎的性格有情有义,到最后死也不认为是李连杰派人杀的他。李连杰演绎的则是在战场上全军覆没后,心里从此极大改变,为了目的不择手段,从始至终就是在利用刘和金,但也为曾经的战场情了矛盾,权还是义一直是在他的心理纠结着,当苏州一役,李看到刘走出城那种又喜又悲的感情时,看出了他心理是多的纠结。金城武么,唉,演技确实很好,但是角色赋予的他是个傻蛋的角色,只为了情谊,一心想挽回情谊,而在战场上也为了情谊能甘当敢死队,同时也为了情谊...