Linux系统在存储技术中的几项应用(转)
Linux系统在存储技术中的几项应用[@more@]数据复制和同步技术——InterMezzo 1.高可用性的复制文件系统 Web和文件服务器对大多数公司而言,具有战略和实践上的重要性。在WWW和其他服务器之间进行数据复制,以及在不同的数据中心之间同步数据是非常重要的。地理上分散的数据中心,可以通过服务器复制避免主干线上的交通阻塞,从而为客户提供高品质的服务。 美特尔科技有限公司推出的InterMezzo——分布式文件系统提供几个重要特性以达到以上目标: * 复制:InterMezzo使服务器上的文件夹集合镜像。 * 无连接下操作:在服务器
探索Linux 操作系统内存模型和管理8(转)
探索Linux 操作系统内存模型和管理8[@more@]这个物理内存区域的管理是通过一个 区域分配器(zone allocator) 实现的。它负责将内存划分为很多区域;它可以将每个区域作为一个分配单元使用。每个特定的分配请求都利用了一组区域,内核可以从这些位置按照从高到低的顺序来进行分配。 例如: ●对于某个用户页面的请求可以首先从“普通”区域中来满足(ZONE_NORMAL); ●如果失败,就从 ZONE_HIGHMEM 开始尝试; ●如果这也失败了,就从 ZONE_DMA 开始尝试。 这种分配的区域列表依次包括 ZONE_NORMAL、ZONE_HIGHMEM 和 ZONE_DMA
探索Linux 操作系统内存模型和管理-6(转)
探索Linux 操作系统内存模型和管理6[@more@]Linux 中的分页模型 虽然 Linux 中的分页与普通的分页类似,但是 x86 架构引入了一种三级页表机制,包括: ●页全局目录 (Page Global Directory),即 pgd,是多级页表的抽象最高层。每一级的页表都处理不同大小的内存 —— 这个全局目录可以处理 4 MB 的区域。每项都指向一个更小目录的低级表,因此 pgd 就是一个页表目录。当代码遍历这个结构时(有些驱动程序就要这样做),就称为是在“遍历”页表。 ●页中间目录 (Page Middle Directory),即 pmd,是页表的中间层。在 x86 架构上,pmd 在硬件
探索Linux 操作系统内存模型和管理-7(转)
探索Linux 操作系统内存模型和管理-7[@more@]如何启用分页 Linux 进程使用的分页机制包括两个阶段: ●在启动时,系统为 8 MB 的物理内存设置页表。 ●然后,第二个阶段完成对其余物理地址的映射。 在启动阶段,startup_32() 调用负责对分页机制进行初始化。这是在 arch/i386/kernel/head.S 文件中实现的。这 8 MB 的映射发生在 PAGE_OFFSET 之上的地址中。这种初始化是通过一个静态定义的编译时数组 (swapper_pg_dir) 开始的。在编译时它被放到一个特定的地址(0x00101000)。 这种操作为在代码中静态定义的两个页 —— pg0 和 pg1 ——
探索Linux 操作系统内存模型和管理-4(转)
探索Linux 操作系统内存模型和管理-4[@more@]每个 TSS 段 (TSS segment) 描述符都代表一个不同的进程。TSS 中保存了每个 CPU 的硬件上下文信息,它有助于有效地切换上下文。例如,在 U->K 模式的切换中,x86 CPU 就是从 TSS 中获取内核模式堆栈的地址。 每个进程都有自己在 GDT 中存储的对应进程的 TSS 描述符。这些描述符的值如下: ●Base = &tss (对应进程描述符的 TSS 字段的地址;例如 &tss_struct)这是在 Linux 内核的 schedule.h 文件中定义的 ●Limit = 0xeb (TSS 段的大小是 236 字节) ●Type = 9 或 11 ●DPL =
探索Linux 操作系统内存模型和管理-5(转)
探索Linux 操作系统内存模型和管理-5[@more@]在 Linux 中,分页单元的使用多于分段单元。前面介绍 Linux 分段模型时已提到,每个分段描述符都使用相同的地址集进行线性寻址,从而尽可能降低使用分段单元将逻辑地址转换成线性地址的需要。通过更多地使用分页单元而非分段单元,Linux 可以极大地促进内存管理及其在不同硬件平台之间的可移植性。 分页过程中使用的字段 下面让我们来介绍一下用于在 x86 架构中指定分页的字段,这些字段有助于在 Linux 中实现分页功能。分页单元进入作为分段单元输出结果的线性字段,然后进一步将其划分成以下
探索Linux 操作系统内存模型和管理-3(转)
探索Linux 操作系统内存模型和管理-3[@more@]Linux 中的段控制单元 Linux 对这个模型稍微进行了修改。我注意到 Linux 以一种受限的方法来使用这种分段模型(主要是出于兼容性方面的考虑)。 在 Linux 中,所有的段寄存器都指向相同的段地址范围 —— 换言之,每个段寄存器都使用相同的线性地址。这使 Linux 所用的段描述符数量受限,从而可将所有描述符都保存在 GDT 之中。这种模型有两个优点: 当所有的进程都使用相同的段寄存器值时(当它们共享相同的线性地址空间时),内存管理更为简单。 在大部分架构上都可以实现可移植性。某些 RIS
探索Linux 操作系统内存模型和管理-2(转)
探索Linux 操作系统内存模型和管理-2[@more@]段控制单元模型概述 这种分段模型背后的基本思想是将内存分段管理。从本质上来说,每个段就是自己的地址空间。段由两个元素构成: ●基址 (base address) 包含某个物理内存位置的地址 ●长度值 (length value) 指定该段的长度 分段地址还包括两个组件 —— 段选择器 (segment selector) 和段内偏移量 (offset into the segment)。段选择器指定了要使用的段(即基址和长度值),而段内偏移量组件则指定了实际内存位置相对于基址的偏移量。实际内存位置的物理地址就是这个基址值与偏移量之和。如
Oracle数据库密码文件的使用和维护(转)
Oracle数据库密码文件的使用和维护[@more@]在Oracle数据库系统中,用户如果要以特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle 数据库可以有两种身份验证的方法:即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件 进行身份验证。因此,管理好密码文件,对于控制授权用户从远端或本机登录Oracle数据库系统,执行 数据库管理工作,具有重要的意义。 Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令, 它一般存放在ORACLE_HOME\DATABASE目录下。 一、 密码文件的创建:
ORACLE应用经验(5)-表空间(转)
ORACLE应用经验(5)-表空间[@more@]一、进入oracle下 # su - oracle as4101> lsnrctl start as4101> svrmgrl svrmgrl> connect internal; svrmgrl> shutdown immediate; svrmgrl> startup 二、查看有哪些表空间 svrmgrl> SELECT * FROM DBA_TABLESPACES; SYSTEM RBS TEMP TOOLS USERS 三、将USERS表空间DROP svrmgrl> ALTER TABLESPACE USERS OFFLINE; svrmgrl> DROP TABLESPACE USERS; 四、查看表空间的空余大小 svrmgrl> SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024 M
在一台机器配置两个listener(Oracle)(转)
在一台机器配置两个listener(Oracle)[@more@]问题:一台机器同时装两套数据库时(实例名o8161,o8151),无法同时启动两个listener, 当启动第二个listener时,显示错误。 $ lsnrctl start LSNRCTL for IBM/AIX RISC System/6000: Version 8.1.5.0.0 - Production on 14-SEP-00 09:25:17 (c) Copyright 1998 Oracle Corporation. All rights reserved. TNS-01106: Listener using listener name LISTENER has already been started $ oerr tns 1106 01106, 00000, "Listener using listener name %s has already been started" //
ORACLE应用经验(4)-加密程序(转)
ORACLE应用经验(4)-加密程序[@more@]-------------1. 加密程序数据库触发子scjmmm---------------------- REM 对GHXXB制立数据库触发子(当INSERT OR UPDATE GHXXB时触发) drop trigger scjmmm; create or replace trigger scjmmm before insert or update of mm On ghxxb For each Row Begin :new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,'SS')); End; / -------------2. 密码的加密程序ENCRYPT---------------------- Create or Replace Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2) Re
ORACLE应用经验(3)-DBMS_SQL封装过程(转)
ORACLE应用经验(3)-DBMS_SQL封装过程[@more@]DBMS_SQL封装过程中主要函数 1、OPEN_CURSOR:返回新游标的ID值 2、PARSE:解析要执行的语句 3、BIND_VARIABLE:将给定的数量与特定的变量相连接 4、DEFINE_COLOUMN:定义字段变量,其值对应于指定游标中某个位置元素的值 (仅用于SELECT语句) 5、EXECUTE:执行指定的游标 6、EXECUTE_AND_FETCH:执行指定的游标并取记录 7、FETCH_ROWS:从指定的游标中取出记录 8、COLUMN_VALUE:返回游标中指定位置的元素 9、IS_OPEN:当指定的游标状态为OPEN时返回真值 10、C
ORACLE应用经验(2)(转)
ORACLE应用经验(2)[@more@]------谁正在访问数据库?Select c.sid, c.serial#,c.username,a.object_id,b.object_name,c.program,c.status,d.name,c.osuser from v$Locked_object a, All_objects b, v$session c, audit_actions dwhere a.object_id=b.object_id and a.session_id =c.sid(+) and c.command=d.action;alter system kill session '&1,&2'; Select a.sid,a.serial#,a.username,a.status,a.program,b.name,a.osuserfrom v$session a,audit_actions b where a.command=b.actionAnd username
ORACLE应用经验(1)(转)
ORACLE应用经验(1)[@more@]JAN-1(January) FEB-2(February) MAR-3(March) APR-4(April) MAY-5(May) JUN-6(June) JUL-7(July) AUG-8(August) SEP-9(September) OCT-10(October) NOV-11(November) DEC-12(December)******************************************************************** ****************************常用设置******************************** ---on-log 触发器编写示范 Declare flag varchar2(80):=null; cou number:=1; n number; Begin Loop
ORACLE SGA 的分配(转)
ORACLE SGA 的分配[@more@]ORACLE 8.0.X 版本 SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+log_buffers)+1MB ORACLE 8.1.X 版本 SGA=((db_block_buffers * block size)+(shared_pool_size+large_pool_size+java_pool_size+log_buffers)+1MB 理论上SGA可占OS系统物理内存的1/2——1/3,我们可以根据需求调整 SUN Solaris里/etc/system文件里的几个参数同样跟内存分配有关 ORACLE安装时缺省的设置: 建议修改的设置: set shmsys:shminfo_shmmax=4294967295 set shmsys:shminfo_shmmin=1 set shmsys
Oracle 基本知识(转)
Oracle 基本知识[@more@]一个表空间只能属于一个数据库 每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数据库最少有一个表空间(SYSTEM表空间) 建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率 每个数据库最少有两个联机日志文件 一个数据文件只能属于一个表空间 一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中 建立新的表空间需要建立新的数据文件 数据文件被ORACLE格式化为ORACLE块,
oracle8的ROWID结构(转)
oracle8的ROWID结构[@more@]1、为什么使用ROWID ORACLE把ROWID作为B-树和其内部算法标示ROW的唯一标示。 在ORACLE8以前的版本中,ROWID标示FILE、BLOCK、ROW NUMBER,只用一个数字代 表FILE号。 在ORACLE8中,一个DATAFILE有两个数字代表: 一个绝对值,是整个数据库唯一的。可以看DBA_DATA_FILES中的FILE_ID。 一个相对值,在TABLESPACE中是唯一的,可以看DBA_DATA_FILES中的RELATIVE_ FNO。 新的ROWID使用相对值,所以必须存放SEGMENT的标示,否则就会混淆。所以ORAC LE8在ROWID中加入对象的SEGMENT号,用来标示TABLE
ORACLE数据库的启动和关闭(转)
ORACLE数据库的启动和关闭[@more@]对于DBA们来说,关闭和重新启动数据库以便优化、调整应用的运行是经常碰到的事情。如果用 户已经log进如了数据库,你用SHUTDOWN IMMEDIATE 或SHUTDOWN ABORT命令来执行关闭数据库, 那用户将不能连接,直到数据库重新启动,用户时常会抱怨:怎么又要重起。其实,每次这样的 启动关闭都是为了数据库能更好的运做。这篇文章将具体介绍shutdown/startup操作时应想到的 步骤和许多注意事项,或许这些能对你有所帮助。 NOTE:在执行第一步前,SHUT DOWN 数据库,不要提前关闭SQL*NET,直到你确认关闭了SE
Oracle下的数据分片技术(转)
Oracle下的数据分片技术[@more@]Oracle公司出品的ORACLE Enterprise 8.0.5以其优越的性能博得了广大用户的青睐, 它以丰富的内嵌函数,PL/SQL支持,多平台,Application Server集成等,给开发人员提供 了极大的灵活性。 在ORACLE的用户权限分配中,只提供对表、函数、同义词、视图、包等的Insert,Update, Select,Delete,Execute等操作,并未提供字段级的权限设置(实际上,对大型数据库进行字段级的 权限设置虽然带来了安全性方面的好处,但对于性能的存在一定的影响),因此,对于大型 MIS系统,进行数据的分片是在所难免的。