纯好人不用打:白羊
没人防:双子(迷宫)、天平(卡妙的冰箱)、射手(迷宫)
打死:巨蟹(紫龙)、山羊(紫龙自曝)、双鱼(阿瞬)、水瓶(冰河)
没打过,放水:狮子(星矢)、天蝎(冰河)、金牛(星矢)、处女(一辉)
这样看来紫龙是最NB的,一个人干掉2个,而且靠他师傅走后门天平不用打,还用天平的武器救了冰河。
冰河和他师傅干了2仗
冰河那段也挺NB,先是在天平被冻个半死,然后在天蝎被针扎个半死,最后到了水瓶还能把他师傅干掉
冰河和他师傅是最体现实力的一仗,纯实力对扣
合着星矢谁也没杀,就TM来打酱油的。。。
posted @
2011-10-21 14:29 Jcat 阅读(543) |
评论 (1) |
编辑 收藏
简单过一遍,详细的以后遇到慢慢研究。
主要的更新在几个方面:
1. OUI的改进
2. Oracle Restart
3. ASM的增强!!!
New Grid Infrastructure Installation Option
1. 单点包括:ASM、listener和Oracle Restart(监控、管理并自动重启各个组件)
2. 集群包括:ASM、listener和Clusterware
New Desktop and Server Class Options 1. Desktop Class:适用于笔记本、台式机
2. Server Class:适用于服务器(功能上没区别,多一些高级配置选项)
Daylight Savings Time Upgrade of Timestamp with Timezone Data Type 新的DBMS_DST包,优化对TIMESTAMP WITH TIMEZONE数据的管理
SYSASM Privilege 管理ASM需要SYSASM权限,旨在分清ASM管理和DB管理
Fixup Scripts and Prerequisite Checks 安装前检查时,如果遇到不符合要求的配置,OUI会对一些检查项自动生成fixup脚本,用root执行就可以解决相应问题。
New Tool to Configure Custom Installation Options OUI不在提供对单个组件的配置功能,如果需要只能用$ORACLE_HOME/bin/chopt命令行进行配置。
我想Oracle的趋势就是为了让更多已经成熟的配置自动化,简化使用。Deinstallation Tool OUI不再用来删除oracle软件,请使用$ORACLE_HOME/deinstall
Intelligent Data Placement 指定ASM磁盘的磁盘范围,旨在将高频访问的数据放在HOT region(比如磁盘的外道)
Oracle Automatic Storage Management Cluster File System (Oracle ACFS) 为其它文件提供ASM的存储功能
Data Pump Export and Data Pump Import Data Pump兼容Export/Import
Use Oracle Restart to Automatically Restart Your Database 1. 针对单点环境
2. 自动重启又问题的组件,如:db instance、listener、asm instance
New Method of Installing Oracle Automatic Storage Management 以前,ASM的安装是伴随着DB的安装;现在是伴随着Software的安装。
其实,就是把ASM上升到一个软件的高度(以前只是db的一个组件)
SRVCTL Support for Single Instance Database in a Cluster SRVCTL统一管理单点(with Restart)和集群数据库(with Clusterware)
Deprecated in Oracle Database 11g Release 2 不支持裸设备了:要么用文件系统、要么用ASM,说白了,
企业环境就必须用ASM 不支持Oracle Ultra Search(9i的一个什么鸟功能)
posted @
2011-06-17 15:35 Jcat 阅读(802) |
评论 (0) |
编辑 收藏
重装完系统,mysql不需要重装,直接当绿色版使用,还更干净
//启动MYSQL
cd $MYSQL_HOME/bin
D:\JAVA\MYSQL\mysql-5.1.53-win32\bin>
mysqld --console 110616 1:26:26 [Note] Plugin 'FEDERATED' is disabled.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
110616 1:26:26 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
110616 1:26:26 InnoDB: Started; log sequence number 0 44233
110616 1:26:27 [Note] Event Scheduler: Loaded 0 events
110616 1:26:27 [Note] mysqld: ready for connections.
Version: '5.1.53-community' socket: '' port: 3306 MySQL Community Server (GPL
)
//简单使用mysql>
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.03 sec)
mysql>
use mysqlDatabase changed
mysql>
show tables;+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
登陆D:\JAVA\MYSQL\mysql-5.1.53-win32\bin>mysql.exe -uroot
创建数据库mysql> create database testdb;
posted @
2011-06-16 01:40 Jcat 阅读(917) |
评论 (1) |
编辑 收藏
--主键是非分区索引,也可以看作是全局
create table test_par1
(
tdate varchar2(8)
primary key)
partition by range ( tdate )
(
partition p1 values less than ('20090201'),
partition p2 values less than ('20090301'),
partition pm values less than (MAXVALUE)
) tablespace test;
--主键是分区索引create table test_par2
(
tdate varchar2(8)
)
partition by range ( tdate )
(
partition p1 values less than ('20090201'),
partition p2 values less than ('20090301'),
partition pm values less than (MAXVALUE)
) tablespace test;
create index i_tdate2 on test_par2(tdate)
local;
alter table test_par2
add constraint pk_tdate2
primary key(tdate);
--查看test_par2的DDL
select dbms_metadata.get_ddl( 'TABLE', 'TEST_PAR2' ) from dual;
--整理如下create table test_par3
(
tdate varchar2(8),
constraint pk_tdate3 primary key (tdate)
using index local)
partition by range ( tdate )
(
partition p1 values less than ('20090201'),
partition p2 values less than ('20090301'),
partition pm values less than (MAXVALUE)
) tablespace test;
这个案例也告诉我们,在做DDL时,尽量还是显示的写出属性,一些简易语法会引起不可知的定义。最后都用 get_ddl 再查一下,这才是Oracle真正执行的DDL。
posted @
2010-09-15 15:26 Jcat 阅读(1273) |
评论 (0) |
编辑 收藏
列出所有实例
[db2inst1@dcm ~]$ db2ilist
db2inst1
列出当前实例下的所有数据库[db2inst1@dcm ~]$ db2 list db directory
System Database Directory
Number of entries in the directory = 1
Database 1 entry:
Database alias = SAMPLE
Database name = SAMPLE
Local database directory = /home/db2inst1
Database release level = d.00
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
Alternate server hostname =
Alternate server port number =
启动实例[db2inst1@dcm ~]$ db2start
07/09/2010 14:24:36 0 0 SQL1063N DB2START processing was successful.
SQL1063N DB2START processing was successful.
连接到数据库[db2inst1@dcm ~]$ db2 connect to sample
Database Connection Information
Database server = DB2/LINUX 9.7.1
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
执行SQL[db2inst1@dcm ~]$ db2
db2 => select * from staff where dept=20
ID NAME DEPT JOB YEARS SALARY COMM
------ --------- ------ ----- ------ --------- ---------
10 Sanders 20 Mgr 7 98357.50 -
20 Pernal 20 Sales 8 78171.25 612.45
80 James 20 Clerk - 43504.60 128.20
190 Sneider 20 Clerk 8 34252.75 126.50
4 record(s) selected.
退出db2 => quit
DB20000I The QUIT command completed successfully.
断开连接(不断开就不能db2stop)[db2inst1@dcm ~]$ db2 connect reset
DB20000I The SQL command completed successfully.
关闭实例[db2inst1@dcm ~]$ db2stop
07/09/2010 14:29:32 0 0 SQL1064N DB2STOP processing was successful.
SQL1064N DB2STOP processing was successful.
posted @
2010-07-09 14:32 Jcat 阅读(244) |
评论 (0) |
编辑 收藏
最近初探了一下DB2,发现关于“数据库”、“实例”的概念及其关系容易把人弄晕,这里小小总结一下,并把Oracle也拉进来一起整。
另外,发现Oracle和IBM老搞一些理论上就针锋相对的事情,如RAC vs DPF (database partitioning feature),很是有趣。
基本概念还是相同的
数据库软件(下面简称软件):软件本身,一台主机安装一套就可以了。(抛开你故意在一台服务器上安装2遍Oracle/DB2这种不正常思维)
实例:数据库
软件启动后的“进程+内存”
软件+实例的关系:一台电脑只需要按照一套QQ(软件),但是我们可以多用户登录(实例)。换到哲学的角度,就是抽象和具体的关系。
数据库(狭义,下面简称库):一堆文件(数据文件、控制文件、日志文件、参数文件)
它和软件的区别:软件是厂商卖给你的东西;
库是你自己的东西(业务、应用)
它和实例的关系:用户需要借助实例(所提供的各种手段)来访问
库库就相当于是QQ聊天记录
最后:数据库(广义)= 软件 + 实例 + 库一台服务器(即一套数据库软件)可以建多个实例,多个库,且互不相干
体系结构的不同之处Oracle 实例和库一一对应
DB2 一个实例可以挂多个库
高级情况(简单提一下,以后再慢慢研究)Oracle:RAC一个库被多个实例挂
DB2:DPF一个实例多个库
在数据库集群模式设计方面,有Share everything架构和Share nothing架构,前者以ORACLE RAC为代表,IBM DB2 Purescale为挑战者;后者以IBM DB2 DPF为代表。
posted @
2010-07-08 18:26 Jcat 阅读(412) |
评论 (0) |
编辑 收藏
行链接:
1. 一条记录的大小大于block size,则产生行链接
2. 容易发生在比较大的行上
3. 因为行链接是由db_block_size不够大引起的,所以对已有的行链接是无法清除的
4. 9i以后,可以对不同的表空间设置不同的db_block_size,可以将一些特殊的宽表放在大block size的表空间
例子:
表空间block size为8k(8192),因为数据块头也要占一定空间,所以如下例,实际只能放7948的数据,一旦超过,就产生行链接
--无
create table test7948(a char(2000),b char(2000),c char(2000),d char(1948))
tablespace test;
insert into test7948 values('a','b','c','d');
commit;
--有
create table test7949(a char(2000),b char(2000),c char(2000),d char(1949))
tablespace test;
insert into test7949 values('a','b','c','d');
commit;
行迁移:1. 本来是放的下的
2. 因为更新使row size变大了,一个block里又不足以放下增加的空间(PCTFREE相关),则产生行迁移
3. 容易发生在PCTFREE较小,对类似varchar类型的update又很多的表上
4. 无法避免,但通过把数据导出导入进行清除
例子:
--无
create table test7948_vchar(a char(2000),b char(2000),c char(2000),d char(1940), e varchar(9))
tablespace test;
insert into test7948_vchar values('a','b','c','d','12345678');
commit;
一更新,使得row size大于7948了,产生行迁移
--有
update test7948_vchar set e='123456789'
posted @
2010-06-13 14:08 Jcat 阅读(223) |
评论 (0) |
编辑 收藏
随着Oracle收购SUN,今天又爆出SAP收购Sybase的大料。
现状:
Oracle和IBM已经成为诺亚方舟级的厂商,啥都有。
微软,SAP成为航母级的厂商,软件方面啥都有,但目前没有硬件。
猜想:who's next? Dell? HP?
不然微软把Dell收了吧,组成BDll公司;
然后SAP和HP合并为SHP
posted @
2010-05-14 11:24 Jcat 阅读(228) |
评论 (0) |
编辑 收藏
--创建一个大一点的TEMP表空间
create temporary tablespace temp1
tempfile '/oracledatafile/temp01.dbf' SIZE 100m autoextend on next 100m maxsize 5000m;
--切换默认TEMP表空间
alter database default temporary tablespace temp1;
--删掉以前的TEMP表空间
drop tablespace temp including contents and datafiles;
posted @
2010-04-30 11:05 Jcat 阅读(275) |
评论 (0) |
编辑 收藏
1. 物化视图由于是物理真实存在的,故可以创建索引。
--为基表创建MLOG
--创建物化视图时应先创建存储的日志空间,否则建MV时报错
--ORA-23413: table "SCOTT"."EMP" does not have a materialized view log
create materialized view log on
scott.emptablespace test
/
--创建物化视图create materialized view test_mv
tablespace test
parallel (degree 4)
build immediate refresh fast
enable query rewrite
as
select * from
scott.emp/
--查看一下结果,果然很符合物化视图的定义,一个表+一个视图SQL> select object_name, object_type from user_objects where object_name = 'TEST_MV';
OBJECT_NAME OBJECT_TYPE
----------- --------
TEST_MV TABLE
TEST_MV MATERIALIZED VIEW
SQL> select mview_name, container_name from user_mviews;
MVIEW_NAME CONTAINER_NAME
---------------- ------------------------------
TEST_MV TEST_MV
(这就是那个存储表)--查看MLOG的情况--注意:MLOG的所属和MV的所属并不是同一个SQL> select log_owner, master, log_table from dba_mview_logs
LOG_OWNER MASTER LOG_TABLE
---------------------------------
SCOTT EMP MLOG$_EMP
(MLOG其实也就是一个表)SQL> desc scott.
mlog$_emp;
Name Type
-------------------------------
EMPNO NUMBER(4)
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)
--删除MLOGdrop materialized view log on 物化视图所依赖的表名;
--删除物化视图drop materialized view 物化视图名;
posted @
2010-01-13 00:04 Jcat 阅读(521) |
评论 (2) |
编辑 收藏
注意,为了能在终端看见put_line的输出,还需要先开启
set serveroutput on
--用来测试的表create table test_tri(
a1 int,
a2 int
)
tablespace test
-----行级insert触发器-----
1) 插入的一行新数据保存在:new
2) insert触发器没有:old值3) 对:new的修改,只能定义在before类型的触发器中---触发器语法---create or replace trigger 名称
[after|before] [delete|update|insert]
[of 列名] [on 表名]
[referencing new as 新行别名 old as 旧行别名]
[for each row] [when(条件)]
declare
....
begin
...
exception
....
end; --定义create or replace trigger test_before_insert
before insert on test_tri
for each row
when(new.a2 is null)begin
dbms_output.put_line('insert row original: a1=' || :new.a1 || ' a2=' || :new.a2);
:new.a2 := :new.a1 * 2;
end;
/
create or replace trigger test_after_insert
after insert on test_tri
for each row
begin
dbms_output.put_line('insert row actual: a1=' || :new.a1 || ' a2=' || :new.a2);
end;
/
--测试SQL> insert into test_tri(a1) values(1);
insert row original: a1=1
a2=insert row actual: a1=1 a2=2
SQL> insert into test_tri values(2,3);
insert row actual: a1=2 a2=3
SQL> select * from test_tri;
A1 A2
---------- ----------
1
2(由触发器生成的值) 2 3
-----DDL触发器-----
--任何create语句都会触发这个语句create or replace trigger test_ddl_trigger
before create on schema
begin
dbms_output.put_line( 'DDL Trigger' );
insert into test_tri values(9,9);
end;
posted @
2010-01-11 14:58 Jcat 阅读(251) |
评论 (0) |
编辑 收藏