裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被Linux通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作,不经过文件系统的缓冲.
1.裸设备的创建
裸设备的分区可以是没有格式化的普通分区,也可以是LVM中没有格式化的LV
#vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/vg01/lv02
其中/dev/raw/raw1为裸设备,/dev/vg01/lv02为对应分区
2.激活裸设备
#service rawdevices restart
3.裸设备在 oracle 中的使用
1).更改权限
如果是供 oracle 使用,则需修改/dev/raw/*的权限:
#chown root:dba /dev/raw/*
#chmod g+w /dev/raw/*
2).在裸设备上创建数据文件
create tablespace raw_ts
datafile ‘/dev/raw/raw1’ size 100m,
‘/dev/raw/raw2’ size 100m;
1.LVM(Logical Volume Management): 是一种把硬盘驱动器空间分配成逻辑卷的方法,可以动态的改变分区的大小,而不用重新分区.
2.几个概念:
1). Physical Volume (PV):物理卷,可以是一个硬盘或一个标准分区或RAID卷
2). Physical Extent (PE):物理区域,物理卷中最小的可分配储存单元,默认为4M
3). Logical Extent (LE):逻辑区域,逻辑卷中可用于分配的最小储存单元每个LE对应一个PE
4). Logical Volume (LV):逻辑卷,由众多LE组成,可动态改变大小
5). Volume Group (VG):卷组,由众多LV组成
6). Volume Group Descriptor Area (VGDA): 卷组描述区域, 用于描述物理卷,卷组,逻辑卷分配的所有信息
3.几种关系:
1).一个LE对应一个PE
2).一个VG物理上由一个或多个PV组成,逻辑上由一个或多个LV组成
3).PE大小由创建VG时指定,也就是说一个VG只能有一种PE
4).创建逻辑卷的顺序是:PV-VG-LV
4.使用LVM
1).#vgscan –生成配置文件(/etc/lvmtab,/etc/lvmconf)
2).创建PV
如果要将整个硬盘做成PV,可以直接:
#pvcreate /dev/sdd
如果是将分区做成PV,则:
#fdisk /dev/sdd
Command(m for help):n
Command action:
e extended
p primary partition(1-4)
p
partition number(1-4):1
…
Command (m for help):t
Selected partition 1
Hex code (type L to list codes):8e —将分区标识为LVM
…
w
#pvcreate /dev/sdd1
3).创建VG
#vgcreate –s 8m vg01 /dev/sdc1 /dev/sdd1
4).创建LV
#lvcreate –L100m –nlv01 vg01 /dev/sdc1
5).使用LV
将刚创建的LV格式化:
#mkfs –j /dev/vg01/lv01
或直接当作裸设备使用:
#vi /etc/sysconfig/rawdevices
添加如下内容:
/dev/raw/raw1 /dev/vg01/lv01
#service rawdevices restart
5.管理LVM
1).激活VG
#vgchange –ay vg01
2).关闭VG
#vgchange –an vg01
3).扩展VG
#vgextend vg01 /dev/sdd2
4).缩小VG
#vgreduce vg01 /dev/sdd1 —若要移除sdd1,则要求sdd1上没有LV
5).重命名VG
#vgrename vg01 vg01
6).改变LV大小
–增大
#lvextend –L+10M /dev/vg01/lv01
–减小
#lvreduce –L-10M /dev/vg01/lv01
7).重命名LV
#lvrename vg01 lv01 lv02
8).删除LV
如果LV有mount,则需unmount
#lvremove –f /dev/vg01/lv02
9).删除VG
删除VG,需先删除LV,然后先Deactive VG,最后删除VG
#vgremove vg01
6.检查LVM
1).pvscan
2).lvscan
3).vgscan
4).pvdisplay
5).lvdisplay
6).vgdisplay
一. 修改instance name
1. Windows环境
1).用oradim新建一个instance,比如:TEST
oradim –NEW –SID TEST –STARTMODE m
oradim –EDIT –SID TEST –STARTMODE a
2).建立相关目录
A) 在%ORACLE_BASE%\admin下新建TEST目录
B) 在TEST下建bdump,cdump,udump,pfile,create等目录
3).修改或新建初始化参数文件,并设定如下参数:
instance_name=TEST
core_dump_dest=’d:\ oracle \admin\test\cdump’
user_dump_dest=’d:\ oracle \admin\test\udump’
4).将修改过的参数文件命名为:
spfileTEST.ORA(SPFILE)
initTEST.ORA(PFILE)
5).设置环境变量,指定新的SID
set ORACLEL_SID=TEST (more…)
今天一客户执行如下命令时报错:
SQL> connect john/wanghong@john
ERROR: ORA-01034: oracle not available
ORA-27101: shared memory realm does not exist
该错误多数是由于ORACLE_HOME或ORACLE_SID设置不当造成的,如果是Windows,则多半是由于多个instance造成的,解决方法如下:
1.设定好正确的ORACLE_HOME和ORACLE_SID
在Unix&Linux下,在profile里设置正确的ORACLE_HOME和ORACLE_SID或者手工临时指定:
export ORACLE_HOME=/opt/ oracle /8.1.7
export ORACLE_SID=test
在Windows中在注册表里添加ORACLE_HOME及ORACLE_SID,并设置正确,也可以手工临时指定:
set ORACLE_SID=TEST (more…)
问题描述:
—————
MSCS一个节点的Cluster Service无法启动,这时在另一节点上的sql server的resource一直处于online pending状态,查看windows event发现event id 1145错误,该event id建议调整该resource的pend timeout时间,但调整后还是处于online pending…系统重起后状况依旧,但启动时提示:
At least one service or driver failed during system startup. Use Event
Viewer to examine the event log for details
解决过程:
————-
1.在网上查找关于event id 1145的解决方法,未果;
2.将其中一节点关掉,单节点进行测试,发现本节点上的service可以起来,原本属于另一节点的service无法起来;
3.查看 cluster.log,没发现异常状况;
4.最后该公司DBA(lm.lv)发现其中一节点上的event viewer上有如下错误:
Event ID 7022 Source: Service Control Manager
Description: The Messenger Service hung on startup
在微软网站上查找,提供如下解决方法:
CAUSE
This behavior can occur if a file that is associated with the NetBIOS interface is missing or has become corrupted.
RESOLUTION
To resolve this issue:
1. Click Start, point to Settings, click Control Panel, and then double-click Networking.
2. Click the Services tab.
3. Uninstall the NetBIOS interface.
4. Reboot your computer.
5. Click Start, point to Settings, click Control Panel, and then double-click Networking.
6. Install the NetBIOS interface.
7. Restart your computer.
8. Reapply your current service pack (if any).
重起后问题解决!
启示:
1.解决问题时多看看event viewer,从中可以发现很有用的线索;
2.该问题虽然是发生在sql server 2000的MSCS中,但对于居于MSCS的 oracle fail safe也有参考意义
今天有一客户在编译一proc*c application时发生如下错误:
“libclntsh.so is up to date”
在metalink上查找该内容,解决方法如下:(Note:153677.1)
fix:Build your Pro*C application using the “build” target as
follows:
make -f demo_proc.mk build OBJS=progname.o EXE=progname(For c++ use the “cppbuild” target)
这是从CSDN上转移过来的帖子,问题发生的时间是:2004/9/22
——————————————————————————————–
Table error: Database ID 20, object ID 5575058, index ID 0. Chain linkage mismatch. (1:1617)->next = (1:1618), but (1:1618)->prev = (1:356)..
Error: 8908, Severity: 22, State: 6
查了一下online book,解释如下:
Message Text
Table error: Database ID %d, object ID %d, index ID %d. Chain linkage mismatch. %S_PGID->next = %S_PGID, but %S_PGID->prev = %S_PGID.
Explanation
This error occurs when Microsoft® SQL Server™ detects an inconsistency in the page linkage of one of the page chains associated with a table, for example, when a page’s next pointer points to a page whose previous pointer points back to a different page. There is one doubly-linked page chain for the table data as well as one for each index level.
Important This is a serious error and must be corrected immediately.
If DBCC statements detect this error during run-time processing, error 605 will also occur.
Action
Determine which table is corrupt by examining the current page in the error message. Execute DBCC CHECKDB without a repair clause to determine the extent of the corruption. Then, execute DBCC CHECKDB with the appropriate repair clause to repair the corruption. If the page is associated with an index, it is sometimes possible to resolve the problem by dropping the index. In most cases, you must recover the database from a known clean backup.
If the error involves an index page, use the REPAIR_REBUILD clause. If the error involves a data page, it may be necessary to use the REPAIR_ALLOW_DATA_LOSS clause. In the likely event that you cannot allow the loss of data, you will need to restore from a known clean backup. If the problem persists, contact your primary support provider. Have the output from DBCC CHECKDB available for review
到master中找到Database ID 20对应的DB是distribution, object ID 5575058对应为MSrepl_commands,然后在distribution中执行DBCC CHECKDB,结果显示没有任何错误,然后再执行同步复制就ok了….
由于出现问题到执行DBCC CHECKDB有5个小时的间隔,这期间有执行过publication db的Transaction log的备份,这会不会有影响呢?困惑中….各位有没有碰到这样的问题?或有什么解决方法,欢迎留言…
Linux和Unix中用于排程的工具是crontab,以下为Linux中的详细用法:
1.cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以将这个服务在系统启动的时候也自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
2.现在cron这个服务已经在进程里面了,我们就可以用这个服务了,cron服务提供以下几种接口供大家使用:
2.1.直接用crontab命令编辑
cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置:
crontab -u root -l
再例如,root想删除fred的cron设置:
crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:
crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:
*/1 * * * * ls >> /tmp/ls.txt
这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:
分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天
除了数字还有几个个特殊的符号就是”*”、”/”和”-”、”,”,*代表所有的取值范围内的数字,”/”代表每的意思,”*/5″表示每5个单位,”-”代表从某个数字到某个数字,”,”分开几个离散的数字。以下举几个例子说明问题:
每天早上6点
0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
每两个小时
0 */2 * * * echo “Have a break now.” >> /tmp/test.txt
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * * echo “Have a good dream:)” >> /tmp/test.txt
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line
1月1日早上4点
0 4 1 1 * command line
每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
2.2.编辑/etc/crontab 文件配置cron
cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每个小时去执行一遍/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天去执行一遍/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期去执行一遍/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每个月去执行一遍/etc/cron.monthly内的脚本
大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。
2.3. Cron 的存取控制
/etc/cron.allow 与 /etc/cron.deny 档案是用来限制使用者对 cron 的存取权限。 这两个存取控制档案的格式是在每一行放置一个使用者名称,两个档案中都不允许有空格符。 假如在修改存取控制档案后,并不需要重新启动 cron 系统程序 (crond),这些存取控制档案将在使用者试着要增加或删除一个 cron 工作时被读取。
root 使用者随时都可以使用 cron,不管使用者的名称是否有列在存取控制档案中。
假如 cron.allow 档案存在的话,只有在其中列出的使用者允许使用 cron,而 cron.deny 档案便会被忽略。
假如 cron.allow 档案不存在的话,所有在 cron.deny 档案中列出的使用者都不允许使用 cron
在管理 oracle 的过程中经常会出现swap空间不足的情况,这时就要考虑扩展swap空间,以下为在linux中扩展swap的几种方法,供各位参考:
一.增加一个swap分割区
1.在root用户下执行fdisk
[root@OCS_Test root]#fdisk /dev/hda
然后选择n,新增一个分区:/dev/hda3,分配其大小,比如512M
然后选择t,改变该分区的system id为82
退出fdisk
2.[root@OCS_Test root]#mkswap /dev/hda3 –指定该SWAP分区
3.[root@OCS_Test root]#swapon /dev/hda3 –启用该swap分区
4.如需在开机时启用该swap,则在/etc/fstab添加如下内容:
/dev/hda3 swap swap defaults 0 0
6.确认swap已经被使用:
用free或cat /proc/swaps可察看哪个swap在使用
7.关闭swap
swapoff /dev/hda3
二.增加一个文件
1. 先决定SWAP文件的大小,然后指定区块大小:bs,再指定区块数量count,则SWAP文件的大小是:count*bs
2. 在root用户下执行如下命令:
[root@OCS_Test root]#dd if=/dev/zero of=/swapfile bs=1024 count=65536
则产生的文件大小为64M
3. [root@OCS_Test root]#mkswap /swapfile
4. [root@OCS_Test root]#swapon /swapfile
5. 如需在开机时启用该swap,则在/etc/fstab添加如下内容:
/swapfile swap swap defaults 0 0
6.确认swap已经被使用:
用free或cat /proc/swaps可察看哪个swap在使用
7.关闭swap
swapoff /swapfile
Recent Comments: