存档
配机手记
自从第一次接触电脑到现在整整10年历史了,还记得第一台电脑是8000多买来的,堂哥帮我配的,那个时候就开始自己查字典摸索BIOS里面的东东了,那个时候是赛扬677M的,硬盘8个G,华硕的主板,SIS的显卡,15寸肥嘟嘟的飞利浦显示器,当时配好真是带劲啊,玩着星际争霸爽死了。
第二台电脑就是伴随我一直到现在的笔记本,6年前(大一)买来将近1W3,是一个台湾的牌子,具体都忘记了,汗死,当时迅驰一代刚出不久,价格高的要死,还是ATI的独显,这在当时的笔记本算是超级顶级的配置了,1.2G的迅驰一代就这样一直伴随着我学习成长,以后死也要留着它了,它可是我改变一生的重要工具之一啊,呵呵,一定要留着纪念。
进入研究生阶段,接触电脑越来越多,主要也是导师的原因,把整个物流实验室让我管,总共30来台电脑,联想8000来块的配置,都是进入双核时代的产物了,也没啥好说的了,另外还接触了几台IBM的大型服务器,在上面折腾来折腾去的……
说到头来,自己都没有好好配过一台电脑,本着120%够用就是极品配置的原则,我最终选择了如下配件:
E5200散片 441RMB
阅读全文…
用IIS配置FTP的帐户权限总结
首先在计算机管理这里,新建一个帐户,最好删除所在分组,也就是说让这个帐户不属于任何分组,系统默认属于USERS组,可能会出现思路的混乱
建立好FTP服务器之后,然后开始修改权限

按高级选项,将允许父类的继承那个选项勾掉,然后点击“删除”,这时应该就只剩下administrators了,然后点击“添加”,输入刚才我们建立的帐户, OK,之后就开始分配权限了。完成这一步出来之后,还有一步也是比较重要的,就是“所有者”那个选项卡,将那个帐户也加到这里来。
至此,FTP服务器的权限分配步骤就这些了。
达到的功能有比如:用户用新建立的帐户登陆上传文件,但是不能修改和删除,而我们的管理员帐户可以修改所有的文件。
最开始的时候,配置的一塌糊涂,出现了很多死文件,甚至乱码,显示异常等等,一些文件再也无法删除了,而且那些无法删除的文件还会感染,搞得服务器上一团糟糕,其实步骤很简单,只要思路清晰慢慢来就好了。
Oracle存储层次体系总结
数据库由一个或者多个表空间组成。
表空间由一个或者多个数据文件组成,里面存放着就是段。
段由一个或多个区段组成,一个区段肯定只在一个数据文件中,并且逻辑地址是连续的,然而段可以存在与多个数据文件中。
区段是由最小单位块组成的,是Oracle最小的I/O单位。
所谓的数据库,其实就是Oracle中的实例,本机有2个实例,一个是orcl一个是crab,因此会有2个文件夹,分别代表了2个数据库,如下图所示:

这2个数据库都是由表空间组成的,进去看看

里面的DBF后缀就是我们的数据表空间,SYSAUX,SYSTEM,TEMP,USERS,UNDOTBS
这些表空间随着时间的推移,会越来越大,因此会存在多个数据表空间文件,以01 02 03结尾
增大到一定程度,虽然表空间被多个数据文件隔开了,里面的段可能也因为数据表文件的隔开而分家,比如:有一张表格EMP,由于它太大了,可能一半在USERS01.DBF上,而另一半在USERS02.DBF上,这里的表格就是指表格段,段的其中一种。但是,区段不同,一个段由多个区段组成,这是由Oracle来管理的,不是我们看得见的,它不会存在于2个数据表文件中。
Oracle参数文件
大家口中常说的Oracle参数文件,其实是指Oracle的初始化参数文件。在早期的版本中,初始化参数文件是init.ora,而且一般都是放在客户端,因为管理员经常会在客户端去维护服务器,当从客户端发出启动远程数据库服务器指令的时候,Oracle客户端就会去读取init.ora,把初始化参数文件中的参数传入服务器中,这样就会导致存在大量的init.ora副本,管理员每用一个不同的客户端登陆,就会有一份init.ora。为什么不干脆放在服务器上呢?可能是Oracle开发初期,设计师们为了让管理员维护更方便写吧,所以用了这种方式,毕竟init.ora是一个普通的字符文本,修改维护都非常方便,如果放在服务器端,还得借用ftp等传输,就麻烦了。
不过现在的init.ora已经不常用了,取而代之的是SPFILE,这是最近版本新引入的一种保存参数的文件,它只有一份,并且是存放在服务器端,只有一份。我们可以用select * from V$parameter where name like ‘%spfile%’;这个命令去找存放它的位置,并且V$parameter就是从这个文件读取的。要修改参数也不像以前那样直接修改文件了,而是用命令行ALTER SYSTEM 命令了。
实验中可以发现SPFILE在客户端是没有的
谈谈Oracle的SessionId和SID
当我用sys登陆时,查询’sessionid’,得到的是4294967295
select userenv(‘sessionid’) from dual;
USERENV(‘SESSIONID’)
——————–
4294967295
接着我在同一台机子上用另外一个终端继续登陆,得到的还是4294967295
select userenv(‘sessionid’) from dual;
USERENV(‘SESSIONID’)
——————–
4294967295
我换一台机子,继续用此用户名登陆,得到的还是4294967295
我将OracleOraDb10g_home1TNSListener服务重启,SESSIONID仍旧是4294967295
最后干脆将Oracle数据库服务重启,SESSIONID仍旧是4294967295
从这个实验可以看出,SESSIONID和登录者是关联的,是唯一的。
接下来,我用sys登陆2次,用scott登陆2次
SQL> select SID, AUDSID, USER#, USERNAME from V$Session;
SID AUDSID USER# USERNAME
———- ———- ———- ——————————
150 244 57 SCOTT
151 242 57 SCOTT
152 4294967295 0 SYS
153 4294967295 0 SYS
155 0 0
157 0 0
可以看到,V$Session中的AUDSID其实就是SESSIONID,虽然我创建了4个会话,而AUDSID唯一的就只有2个,这2个恰恰标示了有多少个用户登陆,而不管登陆的次数;而SID则是唯一的标识,只要终端登陆一次,就分配给它唯一的SID,这个SID才是真正的会话标识。有一点要注意,SID是递减的,难道只有150来个可以登陆吗?有待考证(翻阅相关资料,的确是这样的,Oracle默认就是允许150个进程访问)
Oracle的数据字典
以前用数据库几乎没有数据字典这个概念,但是在Oracle中,这是一个非常重要的概念,它包含了
- 数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
- 数据库为一个方案对象分配了多少空间,以及该对象当前使用了多少空间
- 列的默认值
- 完整性约束(integrity constraint)信息
- 数据库用户名
- 每个用户被授予(grant)的权限(privilege)与角色(role)
- 监控(audit)信息,例如哪个用户对某个方案对象进行了访问或更新操作
- 数据库中的其他概要信息
可以这么说,Oracle的数据字典,相当与XML的Schema,Schema定义了XML的具体结构,数据字典定义了数据库里面的各种结构,比如有哪些表,表的约束有哪些,等等。
现在,如果我想查看我用了哪些约束,思路应该是,约束–constrai…
于是我查 select * from dictionary where table_name like ‘%CONSTR%’; 注意,这里的dictionary就是数据字典,里面包含了大量定义数据库的表格,结果为:
TABLE_NAME COMMENTS ——————————————————————————–
USER_CONSTRAINTS Constraint definitions on user’s own tables
ALL_CONSTRAINTS Constraint definitions on accessible tables
于是我知道,USER_CONSTRAINTS里面含有我所登陆的用户的约束信息
继续查: select * from USER_CONSTRAINTS;
出来的结果就是一些主键、是否为空、外键等等信息了。
值得注意的是USER_CONSTRAINTS其实是SYS内建的视图,权限是大家都可以访问,想看USER_CONSTRAINTS是如何定义的吗?呵呵,还是用刚才的思路,查:select * from dictionary where table_name like ‘%VIEWS%’; 可以找到
USER_VIEWS Description of the user’s own views
ALL_VIEWS Description of views accessible to the user
ALL_MVIEWS All materialized views in the database
USER_MVIEWS All materialized views in the database
ALL_BASE_TABLE_MVIEWS All materialized views with log(s) in the database that the user can see
USER_BASE_TABLE_MVIEWS All materialized views with log(s) owned by the user in the database
ALL_REGISTERED_MVIEWS Remote materialized views of local tables that the user can see
USER_REGISTERED_MVIEWS Remote materialized views of local tables currently using logs owned by the user
ALL_XML_VIEWS Description of the all XMLType views that the user has privileges on
USER_XML_VIEWS Description of the user’s own XMLType views
这里当然是用ALL_VIEWS ,继续看看ALL_VIEWS 的结构,desc ALL_VIEWS ;
Name Type Nullable Default Comments
—————- ————– ——– ——- ———————————————————–
OWNER VARCHAR2(30) Owner of the view
VIEW_NAME VARCHAR2(30) Name of the view
TEXT_LENGTH NUMBER Y Length of the view text
TEXT LONG Y View text
TYPE_TEXT_LENGTH NUMBER Y Length of the type clause of the object view
TYPE_TEXT VARCHAR2(4000) Y Type clause of the object view
OID_TEXT_LENGTH NUMBER Y Length of the WITH OBJECT OID clause of the object view
OID_TEXT VARCHAR2(4000) Y WITH OBJECT OID clause of the object view
VIEW_TYPE_OWNER VARCHAR2(30) Y Owner of the type of the view if the view is an object view
VIEW_TYPE VARCHAR2(30) Y Type of the view if the view is an object view
SUPERVIEW_NAME VARCHAR2(30) Y Name of the superview, if view is a subview
好了,接着输出TEXT就可以看到了
把WordPress拿到本地运行的步骤
在新装的电脑上,打算重新把我的网站拿到本地调试运行,一些步骤都忘记差不多了,现在记下来
1.安装phpnow
2.ftp所有的文件到phpnow的根目录htdoc
3.用mysql-GUITool连接到我的主站mysql服务器,从我的主站先备份一份数据库出来
4.然后连接到本地数据库,用刚才备份出来的sql文件恢复到本地数据库
5.修改其中wp_option表,将siteurl和home都改为http://localhost
OK,可以在浏览器里面看看了。
遇到的问题
一开始,crabone全部拷贝到htdocs里面后,打开ie浏览器居然什么都没有报错,但是页面也打不开,好像网络没有连接好一样,用firefox干脆就是一个空白页。于是我怀疑是php没有执行报错,运行phpinfo()查看php的配置文件,发现是php-apache2handler.ini,查看到display_errors=On,说明报错是开着的,这样就可能是我的博客程序屏蔽了错误。但是我查了下资料,WordPree貌似没有什么屏蔽调试的功能,在wp-config.php中我试着注释了一些代码,加入一些故意出错的代码,错误是会在浏览器中显示的。那么现在的问题应该不是程序出错。既然是这样,就应该考虑到是否网页被重定向之类了,因为重定向到一个错误的地址,即使整个站点程序没有出错,那么浏览器中也是会有刚才找不到页面那种错误的,很可能是这点迷惑了我,一开始还以为是数据库没有连接好造成的。有了这个思路之后,就回想起,WordPree中要设置本站地址的,于是想到了上面的第五步骤。