Jcat
宠辱不惊,闲看庭前花开花落~~
posts - 173,comments - 67,trackbacks - 0
纯好人不用打:白羊

没人防:双子(迷宫)、天平(卡妙的冰箱)、射手(迷宫)

打死:巨蟹(紫龙)、山羊(紫龙自曝)、双鱼(阿瞬)、水瓶(冰河)

没打过,放水:狮子(星矢)、天蝎(冰河)、金牛(星矢)、处女(一辉)


这样看来紫龙是最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 mysql
Database 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.emp
tablespace 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)



--删除MLOG
drop 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)编辑 收藏