存档

‘解决方案’ 分类的存档

Oracle 11g 密码设置为不过期

2015年12月1日 没有评论

过期的原因一般有两种可能:一.由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致。二.由于oracle11g中默认在default概要文件中设置了“FAILED_LOGIN_ATTEMPTS=10次”,当输入密码错误次数达到设置值将导致此问题。

如果是第一种情况解决方法如下: 1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile=’DEFAULT’ AND resource_name=’PASSWORD_LIFE_TIME’;
3、将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;
已经被提示的帐户必须再改一次密码,举例如下:
$sqlplus / as sysdba
sql> alter user smsc identified by <原来的密码> —-不用换新密码
oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。

第二种情况的话你可以这样操作 1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile=’DEFAULT’ AND resource_name=’FAILED_LOGIN_ATTEMPTS’;
3、将尝试登录失败次数由默认的10次修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
4、修改后,还没有被提示ORA-28000警告的用户不会再碰到同样的提示;
已经被锁定的帐户必须解除锁定,举例如下:
$sqlplus / as sysdba
sql> alter user smsc identified by oracle account unlock;
5、修改后default profile应该如下:
sql> select * from dba_profiles WHERE dba_profiles.profile=’DEFAULT’;
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
—————————— ——————————– ————- ———————-
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED
修改之后不需要重启动数据库,会立即生效。
如果出现ORA-28000 the account is locked.错误
alter user 用户名 account unlock;

分类: 解决方案, 软件使用 标签:

PPTP和L2TP/IPSec的区别

2015年11月26日 没有评论

选择远程访问VPN协议
PPTP和L2TP/IPSec的区别主要有:
PPTP使用MPPE进行加密,L2TP/IPSec和IPSec隧道模式使用IPSec ESP进行加密。
PPTP加密在PPP身份验证通过后处理连接时开始,因此,身份验证过程没有被MPPE加密。L2TP/IPSec会先进行安全协商再进行身份验证,并对PPP身份验证数据包进行加密,因此L2TP/IPSec比PPTP提供了更高的安全性。
PPTP使用MMPE和RC4,而L2TP/IPSec使用DES或3DES;
PPTP和L2TP/IPSec均要求用户使用基于PPP的身份验证协议进行身份验证;
L2TP/IPSec还要求使用计算机证书进行计算机验证。因此,L2TP/IPSec提供了更强壮的身份验证过程。但是,带来的不便之处是L2TP/IPSec需要公共密钥基础服务(PKI)或预共享的连接密钥,而PPTP则无需PKI。
IPSec ESP要求基于数据包的数据源验证和数据完整性验证,另外,IPSec ESP提供了中继保护,这防止了数据包的重现攻击;而PPTP没有提供这些保护。
IPSec ESP和PPTP(通过使用MPPE)提供了基于每个数据包的加密。
你可以将基于PPTP的VPN服务器部署在NAT网关后,但是不建议将基于L2TP/IPSec、IPSec的VPN服务器部署在NAT网关后。
L2TP/IPSec比PPTP更耗费CPU性能。
在选择VPN协议时,你应考虑以下几点:
是否存在公共密钥基础服务(PKI),如果不存在则选择PPTP;强烈建议不要在商用网络中通过预共享的连接密钥来使用L2TP,这样会极大的降低L2TP的安全性;
如果要求最高的安全级别,选择L2TP/IPSec;
只有在特别需要时才使用IPSec隧道模式;
如果企业安全策略要求DES或3DES,则使用L2TP/IPSec;
如果使用IPSec导致CPU负荷过重,使用PPTP;
如果VPN服务器部署在NAT网关后,选择PPTP;
部署PPTP比部署IPSec更为简单。

ubuntu下单网卡绑定多个IP

2015年11月20日 没有评论

修改ubuntu的网卡IP地址可以通过两种方式来修改.

第一种方式静态修改.

进入 /etc/network/ 目录下.修改interfaces文件.

# The primary network interface
auto eth0
iface eth0 inet static
address 110.25.*.*
netmask 255.255.255.0
gateway 110.25.*.1

#auto eth0:0
#iface eth0:0 inet static
#address 110.25.*.*
#netmask 255.255.255.0

蓝字部分是我添加的.eth0:0类似于数组下标.接下来想绑定多个就可以以此类推eth0:1,eth0:2,eth0:3……..

第二种方式是动态修改.

这里直接使用 ifconfig 命令

sudo ifconfig eth0:0 110.25.*.* broadcast 110.25.*.255 netmask 255.255.255.0

注:

第一种方式在你修改重启之后不会失效.这种方式稍微操作不当,则会造成远程无法连接。
第二种方式虽然只对当前生效,重启之后就会失效.但是不会因为操作不当给自己造成的不便。

修改成功之后用ifconfig命令看一下
eth0
eth0:0 (多出一个eth0:0,查看与eth0的网关是否一样)
lo

分类: Linux, 解决方案 标签:

关闭SSH终端程序继续运行(转)

2015年11月17日 没有评论

问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问。

解决方法:使用nohup命令让程序在关闭窗口(切换SSH连接)的时候程序还能继续在后台运行。

Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用& 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:

/usr/local/mysql/bin/mysqld_safe –user=mysql &

但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用& 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:

nohup /root/test.php &
  提示:
  [~]$ appending output to nohup.out
  嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的nohup.out 文件中去。
nohup命令说明:

  用途:不挂断地运行命令。
  语法:nohup Command [ Arg ... ] [ & ]
  描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
  退出状态:该命令返回下列出口值:
  126 可以查找但不能调用 Command 参数指定的命令。
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
  nohup命令及其输出文件
  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
  该命令的一般形式为:nohup command &
  使用nohup命令提交作业
  如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:(也就是说自定义输出的文件名)
  nohup command > myout.file 2>&1 &
  在上面的例子中,输出被重定向到myout.file文件中。
  使用 jobs 查看任务。
  使用 fg %n 关闭。
  另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样我就可以利用这些命令在后台上传和下载文件了。
思考:问题1为什么ssh一关闭,程序就不再运行了?
元凶:SIGHUP 信号
让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。

在Linux/Unix中,有这样几个概念:

进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。

根据POSIX.1定义:

挂断信号(SIGHUP)默认的动作是终止程序。

当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。

如果会话期首进程终止,则该信号发送到该会话期前台进程组。

一个进程退出导致一个孤儿进程组中产生时,如果任意一个孤儿进程组进程处于STOP状态,发送SIGHUP和SIGCONT信号到该进程组中所有进程。(关于孤儿进程参照:http://blog.csdn.net/hmsiwtv/article/details/7901711 )

结论:因此当网络断开或终端窗口关闭后,也就是SSH断开以后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。

简而言之:就是ssh 打开以后,bash等都是他的子程序,一旦ssh关闭,系统将所有相关进程杀掉!! 导致一旦ssh关闭,执行中的任务就取消了

例子:
我们来看一个例子。打开两个SSH终端窗口,在其中一个运行top命令。

1
[root@tivf09 root]# top
在另一个终端窗口,找到top的进程ID为5180,其父进程ID为5128,即登录shell。

1
[root@tivf09 root]# ps -ef|grep top
2
root 5180 5128 0 01:03 pts/0 00:00:02 top
3
root 5857 3672 0 01:12 pts/2 00:00:00 grep top
使用pstree命令可以更清楚地看到这个关系:

1
[root@tivf09 root]# pstree -H 5180|grep top
2
|-sshd-+-sshd—bash—top
使用ps-xj命令可以看到,登录shell(PID 5128)和top在同一个会话期,shell为会话期首进程,所在进程组PGID为5128,top所在进程组PGID为5180,为前台进程组。

1
[root@tivf09 root]# ps -xj|grep 5128
2
5126 5128 5128 5128 pts/0 5180 S 0 0:00 -bash
3
5128 5180 5180 5128 pts/0 5180 S 0 0:50 top
4
3672 18095 18094 3672 pts/2 18094 S 0 0:00 grep 5128
关闭第一个SSH窗口,在另一个窗口中可以看到top也被杀掉了。

1
[root@tivf09 root]# ps -ef|grep 5128
2
root 18699 3672 0 04:35 pts/2 00:00:00 grep 5128
问题2 为什么守护程序就算ssh 打开的,就算关闭ssh也不会影响其运行?

因为他们的程序特殊,比如httpd –k start运行这个以后,他不属于sshd这个进程组 而是单独的进程组,所以就算关闭了ssh,和他也没有任何关系!

1
[root@CentOS5-4 ~]# pstree |grep http
2
|-httpd
3
[root@CentOS5-4 ~]# pstree |grep top
4
|-sshd-+-sshd—bash—top
结论:守护进程的启动命令本身就是特殊的,和一般命令不同的,比如mysqld_safe 这样的命令 一旦使用了 就是守护进程运行。所以想把一般程序改造为守护程序是不可能,

问题3 使用后台运行命令& 能否将程序摆脱ssh进程组控制呢 也就是ssh关闭,后台程序继续运行?

我们做一个试验:

1
find / -name ‘*http*’&
利用ctrl+d 注销以后 再进入系统 会不会看见这个命令再运行?
答案是 :命令被中止了!!

因为他依然属于这个ssh进程组 就算加了&也无法摆脱!!
[root@CentOS5-4 ~]# pstree |grep find
|-sshd-+-sshd—bash—find

结论就是:只要是ssh 打开执行的一般命令,不是守护程序,无论加不加&,一旦关闭ssh,系统就会用SIGHUP终止

问题4 nohup能解决的问题

但是为了能够再注销以后 依然能后台运行,那么我们就可以使用nohup这个命令,我们现在开始查找find / -

1
name ‘*http*’&
,并且希望在后台运行,

那么就使用nohup:nohup find / -name “*httpd*”

此时默认地程序运行的输出信息放到当前文件夹的nohup.out 文件中去

加不加&并不会影响这个命令 只是让程序 前台或者后台运行而已

延伸:Linux命令nohup+screen命令

如果想在关闭ssh连接后刚才启动的程序继续运行怎么办,可以使用nohup。但是如果要求第二天来的时候,一开ssh,还能查看到昨天运行的程序的状态,然后继续工作,这时nohup是不行了,需要使用screen来达到这个目的。

虽然nohup很容易使用,但还是比较“简陋”的,对于简单的命令能够应付过来,对于复杂的需要人机交互的任务就麻烦了。

其实我们可以使用一个更为强大的实用程序screen。流行的Linux发行版(例如Red Hat Enterprise Linux 4)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。

1)使用

执行screen , 按任意键进入子界面;

我用ping命令开始执行,如果下班了,但是想关闭ssh以后ping继续运行,那么按ctrl+a 再按d 这样暂停了子界面,会显示[detached]的字样,这时候 我回到了父界面;

用screen –ls查看目前子界面的状态screen -ls

There is a screen on: 22292.pts-3.free (Detached)

1 Socket in /tmp/screens/S-root,这里的22292其实是子界面的pid号;

如果回到子界面 用screen –r 22292,一下子弹到了ping 的子界面;

2)更多帮助

可以通过C-a(ctrl+a)?来查看所有的键绑定,常用的键绑定有:

C-a ?

显示所有键绑定信息

C-a w

显示所有窗口列表

C-a C-a

切换到之前显示的窗口

C-a c

创建一个新的运行shell的窗口并切换到该窗口

C-a n

切换到下一个窗口

C-a p

切换到前一个窗口(与C-a n相对)

C-a 0..9

切换到窗口0..9

C-a a

发送C-a到当前窗口

C-a d

暂时断开screen会话

C-a k

杀掉当前窗口

C-a [

进入拷贝/回滚

其他常用选项:

-c file

使用配置文件file,而不使用默认的$HOME/.screenrc

-d|-D [pid.tty.host]

不开启新的screen会话,而是断开其他正在运行的screen会话

-h num

指定历史回滚缓冲区大小为num行

-list|-ls

列出现有screen会话,格式为pid.tty.host

-d -m

启动一个开始就处于断开模式的会话

-r sessionowner/ [pid.tty.host]

重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要指定sessionowner,需要setuid-root权限

-S sessionname

创建screen会话时为会话指定一个名字

-v

显示screen版本信息

-wipe [match]

同-list,但删掉那些无法连接的会话

分类: Linux, 解决方案 标签: , ,

xampp 1.8.1 开启Gzip方法(apache 2.4不同于2.2)

2015年11月10日 没有评论

网上搜索xampp+开启Gzip,方法一大堆,不过都是基于apache 2.2的,当前最新的xampp 1.8.1使用的apache 2.4,httpd.conf完全不同,自然开启Gzip的方法也不同。

要使用Gzip网站压缩,在xampp 1.8.1 httpd.conf 除了要开启mod_deflate外,还要开启mod_filter。
其次Gizp的设置(httpd.conf的末尾增加代码),我用的是这段:

1
2
3
4
5
<IfModule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</IfModule>

使用Linux命令行测试网速Speedtest.net

2015年11月4日 没有评论

当发现上网速度变慢时,人们通常会先首先测试自己的电脑到网络服务提供商(通常被称为“最后一公里”)的网络连接速度。在可用于测试宽带速度的网站中,Speedtest.net也许是使用最广泛的。

Speedtest.net的工作原理并不复杂:它在你的浏览器中加载JavaScript代码并自动检测离你最近的Speedtest.net服务器,然后向服务器发送HTTP GET and POST请求来测试上行/下行网速。

但在没有图形化桌面时(例如,当你通过命令行远程登陆服务器或使用没有图形界面的操作系统),基于flash、界面友好的Speedtest.net将无法工作。幸运的是,Speedtest.net提供了一个命令行版本——speedtest-cli。下面我将向你演示如何在Linux的命令行中使用speedtest-cli来测试宽带连接速度。

安装speedtest-cli

speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。它基于Speedtest.net的基础架构来测量网络的上/下行速率。安装speedtest-cli很简单——只需要下载其Python脚本文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@HMX1026 ~]# wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
--2015-11-04 21:49:14--  https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
Resolving raw.github.com... 103.245.222.133
Connecting to raw.github.com|103.245.222.133|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py [following]
--2015-11-04 21:49:17--  https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest_cli.py
Resolving raw.githubusercontent.com... 103.245.222.133
Connecting to raw.githubusercontent.com|103.245.222.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24994 (24K) [text/plain]
Saving to: “speedtest_cli.py”
 
100%[======================================>] 24,994      --.-K/s   in 0s
 
2015-11-04 21:49:18 (454 MB/s) - “speedtest_cli.py” saved [24994/24994]
 
[root@HMX1026 ~]# chmod a+rx speedtest_cli.py
[root@HMX1026 ~]# mv speedtest_cli.py /usr/local/bin/speedtest-cli
[root@HMX1026 ~]# chown root:root /usr/local/bin/speedtest-cli
[root@HMX1026 ~]# speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from New Century InfoComm Tech Co. (123.51.171.86)...
Selecting best server based on latency...
Hosted by Asia Pacific Telecom (Taipei) [5.43 km]: 2.141 ms
Testing download speed........................................
Download: 57.70 Mbit/s
Testing upload speed..................................................
Upload: 81.65 Mbit/s

如果你愿意分享测试结果,你可以使用参数“–share”。它将会把你的测试结果上传到Speedtest.net服务器并以图形的方式分享给其他人。

1
2
3
4
5
6
7
8
9
10
11
12
[root@HMX1026 ~]# speedtest-cli --share
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from New Century InfoComm Tech Co. (123.51.171.86)...
Selecting best server based on latency...
Hosted by Asia Pacific Telecom (Taipei) [5.43 km]: 2.109 ms
Testing download speed........................................
Download: 58.23 Mbit/s
Testing upload speed..................................................
Upload: 77.47 Mbit/s
Share results: http://www.speedtest.net/result/4803520528.png
[root@HMX1026 ~]#

如果你对目前所有可用的Speedtest.net服务器感兴趣,你可以使用参数“–list”。它会打印出所有的Speedtest.net服务器(按照离你的地理距离由近及远排序)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@HMX1026 ~]# speedtest-cli --list |more
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
3967) Chief Telecom (Taipei, Taiwan) [5.43 km]
2133) Taiwan Fixed Network (Taipei, Taiwan) [5.43 km]
5056) Taipei Fiber (Taipei, Taiwan) [5.43 km]
2181) kbro Co., Ltd. (Taipei, Taiwan) [5.43 km]
5008) Asia Pacific Telecom (Taipei, Taiwan) [5.43 km]
5661) NCIC Telcom (Taipei, Taiwan) [5.43 km]
2327) Far Eastone Telecommunications Co., Ltd. (Taipei, Taiwan) [5.43 km]
2188) TFN Media Co., Ltd. (Taipei, Taiwan) [5.43 km]
5315) Taiwan Star Telecom Co., Ltd. (Taipei, Taiwan) [5.43 km]
4505) Chief Telecom (New Taipei, Taiwan) [11.92 km]
5219) Taiwan Fixed Network (New Taipei, Taiwan) [11.92 km]
5067) Far Eastone Telecommunications Co., Ltd. (New Taipei, Taiwan) [11.92 km]
5660) NCIC Telcom (New Taipei, Taiwan) [11.92 km]
5334) Taiwan Star Telecom Co., Ltd. (New Taipei, Taiwan) [11.92 km]
3921) Taiwan Fixed Network (Taoyuan, Taiwan) [31.28 km]
4938) Chief Telecom (Taoyuan, Taiwan) [31.28 km]
2589) Far EasTone Telecommunications Co., Ltd (Taoyuan, Taiwan) [31.28 km]
2187) TFN Media Co., Ltd. (Yilan, Taiwan) [49.53 km]
4947) Chief Telecom (Yilan, Taiwan) [49.53 km]
5194) Taiwan Fixed Network (Yilan, Taiwan) [49.53 km]
5068) Far Eastone Telecommunications Co., Ltd. (Yilan, Taiwan) [49.53 km]

在上面的列表中,每个服务器的前面都有一个与其对应的ID。如果想使用指定的服务器来测试你的网速,你只需要在speedtest-cli命令后指定其ID即可。例如,如果想使用在Taiwan的服务器,你只需要指定相对应的服务器ID(如5068)。

1
2
3
4
5
6
7
8
9
[root@HMX1026 ~]# speedtest-cli --server 5068
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from New Century InfoComm Tech Co. (123.51.171.86)...
Hosted by Far Eastone Telecommunications Co., Ltd. (Yilan) [49.53 km]: 4.448 ms
Testing download speed........................................
Download: 59.02 Mbit/s
Testing upload speed..................................................
Upload: 82.67 Mbit/s

错误3456:未能恢复日志记录 SQL2000数据库置疑解决方法

2015年9月28日 没有评论

一次客户由于硬盘损坏,种种原因下,我当时仅仅只拿到了备份了的mdf文件,那么恢复起来就是一件很麻烦的事情了。

SQL2000数据库置疑解决方法
按下面的步骤处理:
1.新建一个同名的数据库
2.再停掉sql server服务
3.用备份的数据库MDF的文件覆盖掉这个新建的同名数据库文件
4.再重启sql server服务
5.此时打开企业管理器时新建的同名数据库会出现”置疑”,先不管,执行下面的语句(注意修改其中的数据库名)

?View Code SQLSERVER
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='数据库名'
Go
sp_dboption '数据库名', 'single user', 'true'
Go
DBCC CHECKDB('数据库名')
Go
update sysdatabases set status =28 where name='数据库名'
Go
sp_configure 'allow updates', 0 reconfigure with override
Go
sp_dboption '数据库名', 'single user', 'false'
Go

ok数据能访问了


操作一下发现有部分表不能select不能写入操作错误:“发生错误:-2147467259,未能在数据库 ‘XXX’ 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式”
这时,数据库本身一般还有问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
企业管理器–右键你的数据库–所有任务–导出数据
–目标标数据库选择新建
–选择”在两个sql数据库之间复制对象和数据”
–把”包含扩展属性”选上,其他的根据需要选择
–最后完成

注:以上如果失败,一般会提示xxx用户不在。在sql用户管理里建立附于新数据库权限再导一次数据即可。

以下是转别人的一些处理过的办法和经验,给于大家参考。

SQLSERVER数据库文件损坏处理2例
WINDOWS2000
SQLSERVER2000
这段时间遇到了好几起由于数据库文件损坏,而造成客户系统暂停使用的情况。在恢复过程中查阅参考了几篇网上的技术文章,实际操作过后感觉有必要承前启后一下,因此将恢复过程做个记录。
案例1:
客户报告中午正常使用的系统,下午无法打开,报告的是连接数据库错误。电话中初步判断是数据库启动失败。首先告知客户无法立即恢复,先转成手工操作。
到达客户处,首先检查“事件查看器”,发现系统日志文件损坏,事件查看器无法显示系统日志。只能首先删除清空,并重建事件日志文件。然后再启动sqlserver,这时候就可以在事件查看器中看到sqlserver启动失败的错误信息了。错误大概是说 “启动过程中master数据文件损坏,数据库无法恢复”。由于master是系统数据库,因此SQLSERVER无法启动。
此服务器以前曾经发生过windows2000操作系统崩溃,曾经备份过SQLSERVER的 DATA 目录,万幸,把master的两个数据文件覆盖过来(master.mdf,mastlog.ldf)后,数据库就可以启动了。
测试一下,怎么程序还是不能打开,都快出汗了。一看,客户数据库居然是“质疑”的。再看事件查看器有”Disk”错误,连忙找备份,好在管理员在前一天中午做过数据备份。恢复并将数据文件转移到另一个硬盘分区上,至此系统操作正常。至于丢失的一天数据让客户找时间再补入系统。
分析原因:客户表示没有非法关机,停电等故障。因此有可能是硬盘出现坏道,或者是内存品质不良。因此与客户协商,准备先更换一块硬盘,再跟踪使用情况。
案例二:
某天给客户升级报表,第二天早上,客户打电话来说系统不能打开。初步判断也是数据库启动失败。询问客户也没有修改过机器名,管理员密码。通过VNC连上客户服务器发现,还是MASTER数据库损坏。
这时候情况比较复杂,由于是新安装的系统,运行还不满一个月。实施时由于疏忽没有做过任何备份。只能尝试将其他电脑上的master数据文件拷贝过来。我笔记本上的SQLSERVER是desktop版,与服务器上安装的不符。没办法,只能死马当活马医了。压缩,发送,折腾了半个小时才把文件发送到客户服务器上。覆盖… 启动… ,绿色箭头出来了。居然成功了。
打开企业管理器,这时,客户数据库的属性都变成和我笔记本上的数据库一样了。密码,用户数据库。当然由于部分数据文件不一样,所有的用户数据库都是质疑的。删除不存在的用户数据库,然后附加客户自己的数据库。
通常,附加数据库后,系统应该就可以使用了。但没想到的是这个客户数据文件也是损坏的,附加数据库失败。这下恢复过程陷入僵局。虽然数据没用多少天,但库中有关键数据必须恢复。
附加数据库错误提示:
“错误3456:未能恢复日志记录(***:***:x)事务 ID(0:***xx)……等等”
怀疑是日志文件损坏,只能寄希望于数据文件没有损坏。删除数据库日志文件,单独附加数据库文件,结果还是失败,报告“日志文件不符”。
由于远程操作过于缓慢,只能将客户数据文件压缩传回本地,再想办法进行修复。
首先上网找了几篇丢失数据库日志文件的恢复数据的文章。
http://www.jaron.cn/chs_db/20/20 … ticle_view_1587.htm
由于数据日志中还有活动事务,文中第一种方法显然不适用我这种情况。遂按照第二种方法将数据库设置为紧急模式。当做到 DBCC CHECKDB 时。结果就与文章表示的不同了。
服务器: 消息 3908,级别 16,状态 1,行 2
未能在数据库 ‘sttzjg’ 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。
此时网上的文章都没有提示找不到进一步的处理方法了。这时直接做DTS数据导出也是报错:DTS Wizard报告说“初始化上下文发生错误”。
不过万幸的是,这时候已经可以SELECT数据了。但有几个表 SELECT的时候报告:
服务器: 消息 601,级别 12,状态 3,行 1
由于数据移动,未能继续以 NOLOCK 方式扫描。
不能使用DTS, 常用的mssql2工具也不行。没有办法了,只能用SELECT手工恢复数据。首先新建一个新的业务数据库new,然后使用 “insert into new.dbo.table select * from *** “一个一个拷贝数据表。化了一个多小时,最后只剩下那三个SELECT也报错的表了。
试试bcp,也报错,不过数据倒是导出来了,这下就好办了。用bcp把能导出的数据导到新库。至此数据库基本恢复。检查报表,发现也是丢失了一天的数据。时间节点上看,大概就是增加报表之后的一天的数据全部丢失,主要就是那三张SELECT报错的表中。
继续检查事件查看器中的内容,没有发现严重的磁盘错误。开关机的日志也很正常,很奇怪,不知道什么情况会造成一整天的事务日志没有完成,而且还造成master数据库损坏。想不出来原因,还是先给客户设置好每日的数据自动备份。以后再出现这种情况也好处理一些。
总结:我们的客户使用的服务器都很一般,数据库备份相当重要,培训客户做好备份,减少由于系统故障造成的数据损失。

Linux Centos配置yum源(163源、sohu源、cd源)

2015年9月26日 没有评论

收录架构

i386
x86_64
SRPMS
收录版本

所有版本

更新时间

每4小时更新一次

使用说明

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份)

运行以下命令生成缓存

yum clean all
yum makecache
相关链接

官方主页: http://www.centos.org/
邮件列表: http://www.centos.org/modules/tinycontent/index.php?id=16
论坛: http://www.centos.org/modules/newbb/
文档: http://www.centos.org/docs/
Wiki: http://wiki.centos.org/
镜像列表: http://www.centos.org/modules/tinycontent/index.php?id=32

分类: Linux, 解决方案 标签: , ,

数据库主体在该数据库中拥有架构无法删除解决方法

2015年9月23日 没有评论

先删除此用户对应的架构,然后在删除对应的用户
步骤
1。SQL SERVER MANAGEMENT STUDIO > 数据库 > 安全性 > 构架,先删除对应的构架

2。SQL SERVER MANAGEMENT STUDIO > 数据库 > 安全性 > 用户,删除对应的用户 其它方法: SQL2005删除用户的时候,产生“数据库主体在该数据库中拥有架构,无法删除”的解决办法 –执行如下SQL语句 ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo; –然后手动删除就可以了。

但在删除的过程中,可能会出现删除不了的情况,这时候需要手动将已经引用过的架构用户改为系统帐户,以下是相关SQL语句:

?View Code SQLSERVER
1
2
3
4
5
6
7
8
9
10
11
12
13
14
declare @name sysname
declare csr1 cursor 
for
select name from sysobjects where xtype ='TF'
open csr1
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
    SET @name='bbsdata.' + @name
    exec ('ALTER SCHEMA dbo TRANSFER ' +  @name)
    fetch next from csr1 into @name
END
    CLOSE csr1
    DEALLOCATE csr1
?View Code SQLSERVER
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
declare @name sysname
declare csr1 cursor 
for
select name from sysobjects where xtype ='U'
//请注意上下一行不同点,我们用Xtype来定义我们需要查找的表//
open csr1
FETCH NEXT FROM csr1 INTO @name
while (@@FETCH_STATUS=0)
BEGIN
    SET @name='bbsdata.' + @name
    exec ('ALTER SCHEMA dbo TRANSFER ' +  @name)
    fetch next from csr1 into @name
END
    CLOSE csr1
    DEALLOCATE csr1

代码很简单,就是一个简单的循环操作,但比手动去将每个表的架构改回来却是省了很多功夫的!

希望对大家有所帮助

分类: 解决方案 标签: ,

windwos server 2003 做好了群集,但是使用不了大于2TB 的磁盘分区如何解决

2015年9月18日 没有评论

使用ibm磁盘阵列柜分出来个6tb的硬盘,映射到win2003时。发现个问题。这个分区自动变成一个2tb和一个3.58tb的奇怪分区。查了后才知道默认win2003的32位系统只支持到2tb硬盘分区。所以只能自动认到2tb。查询资料得出以下解决办法。

首先必须先打一下KB919117做集群使用的补丁。高可用支持GPT分区,支持高达10T一分区。
Windows 2003做群集时,不支持仲裁盘和共享盘为GPT磁盘,安装KB919117就可以支持GPT磁盘,和大于2T的共享盘。安装补丁后必须重启!

方法如下:
打开DOS 命令行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\>diskpart
 
Microsoft DiskPart Copyright (C) 1999-2001 Microsoft Corporation.
On computer: NODE1
 
DISKPART> list disk
 
  磁盘 ###  状态        大小     可用     动态 Gpt
  --------  ----------  -------  -------  ---  ---
  磁盘 0    联机         136 GB      0 B
  磁盘 1    联机         494 MB      0 B
  磁盘 2    联机        5587 GB  2048 GB
 
DISKPART> select disk 2
 
磁盘 2 现在是所选磁盘。
 
DISKPART> convert gpt
 
DiskPart 已将所选磁盘成功地转换成 GPT 格式。
 
DISKPART>

完成后,建议重启服务器。就可以认到正确的分区,如图所示:

分类: Windows, 解决方案 标签: