重庆思庄Oracle、Redhat认证学习论坛

标题: 通过oracle学mysql [打印本页]

作者: 郑全    时间: 2015-4-6 10:21
标题: 通过oracle学mysql

对于熟悉oracle的人,在学习mysql的过程中,可以利用对oracle的了解,来学习mysql,应该可以起到一定的帮助作用。

 

那么,我将把我看到的两者的异同点进行分享,这个是不断积累的过程,可能前后会有不同的认识,希望能帮助我们自己更快的学习。

 

1.不同点

   mysql主要面向分布式环境

   oracle更趋向于集中

 

   oracle 是多进程

   mysql 是单进程,多线程

 

2.对应的参数

   最大连接数

     oracle :processes  默认:150

     mysql:max_connections   默认:151

    

 

   内存分配

     oracle:sga_target

     mysql:innodb_buffer_pool_size

    

  

3.对应的功能

   分布式:

    oracle: dblink

    mysql:Federated MySQL storage engine

 

后面续。。。

 


作者: 郑全    时间: 2015-4-6 10:38

4.参数文件

   oracle:$ORACLE_HOME/dbs/spfilesid.ora  spfile.ora initsid.ora

   mysql:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

 

   启动时,可以指定不同的位置:

   oracle: startup pfile=pfile文件位置

   mysql: mysql --defaults-file=/etc/my-opts.cnf


作者: 郑全    时间: 2015-4-6 11:34

  查看参数

   oracle: show parameter pool;

   mysql: show variables like '%pool%';

 


作者: 郑全    时间: 2015-4-6 11:38

动态设置参数:

     oracle:

                全局:   alter system set sql_trace=true ;

                session:alter session set sql_trace=true ;

 

     mysql:

                全局:   set global tx_isolation=1;

                session: set session tx_isolation=1;

 


作者: 郑全    时间: 2015-4-6 12:39

5.数据库

   oracle:数据库是物理存储部分

   mysql:数据库,对应oracle的一个模式 (schema)

 

 


作者: 郑全    时间: 2015-4-6 13:08

6.日志文件

   oracle:alert文件,trace文件,审计日志文件,联机日志文件,归档日志文件。

   mysql:error 日志文件,General query log,slow query log,Binary log,audit log file

 

   oracle没有 slow query log对应的概念。


作者: 郑全    时间: 2015-4-6 13:24

 

  查看归档日志:

       oracle:archive log list;

 

       mysql:

               

mysql> show binary logs;
+---------------------+-----------+
| Log_name            | File_size |
+---------------------+-----------+
| mysql-binlog.000001 |       633 |
| mysql-binlog.000002 |       143 |
| mysql-binlog.000003 |       143 |
| mysql-binlog.000004 | 173036379 |
| mysql-binlog.000005 |       120 |
| mysql-binlog.000006 |       143 |
| mysql-binlog.000007 |       143 |
| mysql-binlog.000008 |       143 |
| mysql-binlog.000009 |       120 |
+---------------------+-----------+
9 rows in set (0.00 sec)

mysql> show master status;
+---------------------+----------+--------------+------------------+-------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------------+----------+--------------+------------------+-------------------+
| mysql-binlog.000009 |      120 |              |                  |                   |
+---------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


作者: 郑全    时间: 2015-4-6 13:26

 

   查看日志内容:

      oracle: logminer

  

      mysql: mysqlbinlog

         

      shell# mysqlbinlog mysql-binlog.000001


作者: 郑全    时间: 2015-4-6 13:41

删除日志

   oracle:删除归档

             使用rman命令

                rman>delete archivelog until time 'sysdate-7';

 

    mysql:删除binlog

             mysql>

                        purge binary logs before now()-interval 3 day;

                        purge binary logs to "mysql-binlog.000003";  (不包含 mysql-binlog.000003);

 


作者: 郑全    时间: 2015-4-6 16:43

7.把操作记录到文件

   oracle: sqlplus 中,使用 spool /home/oracle/test.txt

 

   mysql: tee /root/test.txt

 


作者: 郑全    时间: 2015-4-6 16:44

8.客户端工具

   oracle:sqlplus

 

   mysql:mysql

 

  


作者: 郑全    时间: 2015-4-6 16:45

9.调用某个文件

   oracle: 使用@,比如: 

             @/home/oracle/test.sql;

 

   mysql: 使用source ,比如: 

            source /home/mysql/test.sql;

 

 


作者: 郑全    时间: 2015-4-9 21:33

10.编程

    oracle:有过程,函数,触发器,包

 

    mysql:只有过程,函数,触发器

[此贴子已经被作者于2015-04-09 21:37:12编辑过]

作者: 郑全    时间: 2015-4-9 21:34
mysql修改过程,只有通过删除 ,并重建,没有or replace方式
作者: 郑全    时间: 2015-4-9 21:35

11.job

    oracle:job

       dbms_job来创建。

    mysql:event

      

   


作者: 郑全    时间: 2015-4-11 10:54

12.事务隔离级别

    oracle:默认读提交,不能修改

 

    mysql:默认重复读,可以修改为其他


作者: 郑全    时间: 2015-4-11 12:08

13.数据字典

   oracle:

           一般通过 dictionary 来查询,比如要查有哪些数据字典

            select table_name  from dict;

 

   mysql:

          查询 information_schema数据库中的表

          比如:

          use information_schema;

          show tables;

 


作者: 郑全    时间: 2015-4-12 10:44

13.匿名块

    oracle:支持

 

    mysql:不支持

             变通办法,写一个存储过程来实现。

             下面为一个往表插入50000条记录的例子 :

 

delimiter //

             

create procedure p_insert(p_upper int)
begin
   declare i int default 1;
     while i < p_upper do
     insert into orders_range(id) values(i);
     set i=i+1;
     end while;
end;

//

call p_insert(50000);

//

 

 

 

            

[此贴子已经被作者于2015-04-12 10:52:34编辑过]

作者: 郑全    时间: 2015-4-12 10:46

14.for loop

    oracle:支持

  

    mysql:不支持for loop

    在编程中,使用到循环,只支持:loop ...  end loop,while ... do,repeat while ... end repeat;等。 


作者: 郑全    时间: 2015-4-12 13:50

15.日期字段默认值

 

    oracle:hire_date date default sysdate; 

 

    mysql :

              默认值不支持函数,对于 date类型,不能使用 date default now(),

              如果需要,可以使用触发器来实现,或者使用 timestamp类型 ,默认为 current_timestamp;

              hire_date timestamp;

 

               比如下面的例子:

 

               create table test(last_name varchar(20),hire_date timestamp );

               insert into test (last_name) values('zq');

              

               mysql> select * from test;
+-----------+---------------------+
| last_name | hire_date           |
+-----------+---------------------+
| zq        | 2015-04-12 13:45:34 |
+-----------+---------------------+
1 row in set (0.00 sec)

              


作者: 郑全    时间: 2015-4-22 10:55

16.移动数据

    oracle:

             外部表,sqlloader,expdp\exp /impdp/imp

 

    mysql:

             select into outfile / load data [local] infile 对应 sqlloader

            

             下面是例子:

             

select * into outfile '/u01/test/emp2.sql'
   fields terminated by ','
from emp;

[root@sztech1 test]# more emp2.sql
100,smitty,5000,2015-04-05
200,\N,\N,\N
300,\N,\N,\N

 

mysql> desc emp_bak
    -> ;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| empid     | int(11)     | YES  |     | NULL    |       |
| last_name | varchar(20) | YES  |     | NULL    |       |
| salary    | double      | YES  |     | NULL    |       |
| hire_date | date        | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)


load data infile '/u01/test/emp2.sql'
 into table emp_bak
 fields terminated by ',' ;

         

   

            外部表好像没有看到

            mysqldump 对应 oracle的 exp/imp

            

     

[此贴子已经被作者于2015-04-22 22:54:13编辑过]

作者: bikong123    时间: 2015-4-22 10:57

本来Oracle就具代表性,所以有如此情况!学习的话,还是先学Oracle感觉更有好处!当然直接学MySQL的话要简单些,Oracle难度要大些。


作者: 郑全    时间: 2015-5-3 15:30

17.设置日志文件大小

     oracle: 

                创建联机日志文件时,指定大小

                alter database add logfile group xxx ('/home/oracle/redo01.dbf') size 500m;

 

     mysql :

                修改变量来实现:

                innodb_log_file_size=500m

 

 


作者: 郑全    时间: 2015-5-3 16:30

18.查看执行计划:

    比如下面这条sql语句:

    SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
 FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

 

 

    oracle:

               可以使用

             explain plan

             for

           SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
             FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

             然后,使用 select * from table(dbms_xplan.display);进行查看

 

   mysql:

           explain

             SELECT COUNT(*) as 'Cities', SUM(Country.Population) AS Population, Continent
             FROM Country JOIN City
 ON CountryCode = Code
 GROUP BY Continent
 ORDER BY Population;

           显示:

               +----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
| id | select_type | table   | type | possible_keys | key         | key_len | ref                | rows | Extra                           |
+----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
|  1 | SIMPLE      | Country | ALL  | PRIMARY       | NULL        | NULL    | NULL               |  239 | Using temporary; Using filesort |
|  1 | SIMPLE      | City    | ref  | CountryCode   | CountryCode | 3       | world.Country.Code |    9 | Using index                     |
+----+-------------+---------+------+---------------+-------------+---------+--------------------+------+---------------------------------+

 

           

jYtQYhgJ.png
登录/注册后可看大图