分类:数据库

Mysql开启远程IP访问

oracle回收站管理<转>

临时记在记事本上,所以给忘记从哪转来的
——————————————-
oracle10g,在pl/sql中选中删除后会出现类似:BIN$nJ5JuP9cQmqPaArFei384g==$0的表。
1.查看回收站
select * from user_recyclebin;
2.清空回收站
purge recyclebin;
3.清空回收站中的某个表
–如下方式删除会提示:SQL命令未正确结束。
purge table BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0
–正确写法如下:
purge table “BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0”;
–如下方式删除会提示:SQL命令未正确结束。
drop table BIN$/UpBuh+LQ9yZGN95BFsk5Q==$0
–而如下这样写,则会提示:无法对回收站中的对象执行DDL/DML。
drop table “BIN$0iJ7/rWFQrSGdZexvGv3qQ==$0”
4.恢复回收站
FLASHBACK TABLE “BIN$0iJ7/rWFQrSGdZexvGv3qQ==$0” TO BEFORE DROP
这是10g 的新特性
在10g中,如果启用flash drop功能,在drop表时,数据库不会直接删除,而是将其放在回收站中,当空间出现短缺时,才会逐渐回收这部分空间。
bin$表示表放在了回收站,你想要的话还可以找回来
删除的话一个方法是直接删delete tanle bin$…..;
另一种方法就是使用 purge table table_name;
drop table时, 不产生他们,修改你的drop语句

写成 :
DROP TABLE TABLE_NAME PURGE ;
转载:
以前只知道Windows有个回收站,今天听说Oracle也有个回收站!
在Oracle中可能不小心会DROP掉一个表,如果没有定期做备份的话,将会带来很大的麻烦。如果有的情况下,每天的数据都很重要,而定期备份的周期又稍长,情况恐怕也不容乐观!
不过还好Oracle有个回收站,概念就跟Windows里的回收站一模一样。
比如有以下误操作:
DROP TABLE drop_test;
这个时候再用SELECT语句查询此表时,将会提示表或视图不存在。但可以用如下语句查询到这个表还在Oracle回收站中:
SELECT * FROM user_recyclebin WHERE original_name=‘drop_test’;
那么现在就可以用如下语句进行恢复:
FLASHBACK TABLE drop_test TO BEFORE DROP
但是,要注意的是,如果用toad工具进行鼠标操作,即右键drop table时,如果选择了purge选项,那么就是永久性删除,在oracle的回收站也不会存在了,所以在进行表的删除的时候一般不要选择该选项,除非你很肯定该表不再使用。

51CTO上两篇MYSQL引擎该如何选择的文章(转载)

转载地址:

http://database.51cto.com/art/200905/122382.htm

http://database.51cto.com/art/200905/124370.htm

——————————————————————————————

第一篇文章:

MyISAM 是MySQL中默认的存储引擎,一般来说不是有太多人关心这个东西。决定使用什么样的存储引擎是一个很tricky的事情,但是还是值我们去研究一下,这里的文章只考虑 MyISAM 和InnoDB这两个,因为这两个是最常见的。

下面先让我们回答一些问题:
◆你的数据库有外键吗?
◆你需要事务支持吗?
◆你需要全文索引吗?
◆你经常使用什么样的查询模式?
◆你的数据有多大?

思考上面这些问题可以让你找到合适的方向,但那并不是绝对的。如果你需要事务处理或是外键,那么InnoDB 可能是比较好的方式。如果你需要全文索引,那么通常来说 MyISAM是好的选择,因为这是系统内建的,然而,我们其实并不会经常地去测试两百万行记录。所以,就算是慢一点,我们可以通过使用Sphinx从 InnoDB中获得全文索引。

数据的大小,是一个影响你选择什么样存储引擎的重要因素,大尺寸的数据集趋向于选择InnoDB方式,因为其支持事务处理和故障恢复。数据库的在小 决定了故障恢复的时间长短,InnoDB可以利用事务日志进行数据恢复,这会比较快。而MyISAM可能会需要几个小时甚至几天来干这些事,InnoDB 只需要几分钟。

您操作数据库表的习惯可能也会是一个对性能影响很大的因素。比如: COUNT() 在 MyISAM 表中会非常快,而在InnoDB 表下可能会很痛苦。而主键查询则在InnoDB下会相当相当的快,但需要小心的是如果我们的主键太长了也会导致性能问题。大批的inserts 语句在MyISAM下会快一些,但是updates 在InnoDB 下会更快一些——尤其在并发量大的时候。

所以,到底你检使用哪一个呢?根据经验来看,如果是一些小型的应用或项目,那么MyISAM 也许会更适合。当然,在大型的环境下使用MyISAM 也会有很大成功的时候,但却不总是这样的。如果你正在计划使用一个超大数据量的项目,而且需要事务处理或外键支持,那么你真的应该直接使用InnoDB方 式。但需要记住InnoDB 的表需要更多的内存和存储,转换100GB 的MyISAM 表到InnoDB 表可能会让你有非常坏的体验。

——————————————————————————————————————————

第二篇文章

两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。

我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我目前运维的数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是我的首选。

原因如下:

1、首先我目前平台上承载的大部分项目是读多写少的项目,而MyISAM的读性能是比Innodb强不少的。

2、MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率就对应提高了不少。能加载更多索引,而Innodb是索引和数据是紧密捆绑的,没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。

3、从平台角度来说,经常隔1,2个月就会发生应用开发人员不小心update一个表where写的范围不对,导致这个表没法正常用了,这个时候 MyISAM的优越性就体现出来了,随便从当天拷贝的压缩包取出对应表的文件,随便放到一个数据库目录下,然后dump成sql再导回到主库,并把对应的 binlog补上。如果是Innodb,恐怕不可能有这么快速度,别和我说让Innodb定期用导出xxx.sql机制备份,因为我平台上最小的一个数据 库实例的数据量基本都是几十G大小。

4、从我接触的应用逻辑来说,select count(*) 和order by 是最频繁的,大概能占了整个sql总语句的60%以上的操作,而这种操作Innodb其实也是会锁表的,很多人以为Innodb是行级锁,那个只是 where对它主键是有效,非主键的都会锁全表的。

5、还有就是经常有很多应用部门需要我给他们定期某些表的数据,MyISAM的话很方便,只要发给他们对应那表的frm.MYD,MYI的文件,让 他们自己在对应版本的数据库启动就行,而Innodb就需要导出xxx.sql了,因为光给别人文件,受字典数据文件的影响,对方是无法使用的。

6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表架构来解决。

7、如果是用MyISAM的话,merge引擎可以大大加快应用部门的开发速度,他们只要对这个merge表做一些select count(*)操作,非常适合大项目总量约几亿的rows某一类型(如日志,调查统计)的业务表。

当然Innodb也不是绝对不用,用事务的项目如模拟炒股项目,我就是用Innodb的,活跃用户20多万时候,也是很轻松应付了,因此我个人也是很喜欢Innodb的,只是如果从数据库平台应用出发,我还是会首选MyISAM。

另外,可能有人会说你MyISAM无法抗太多写操作,但是我可以通过架构来弥补,说个我现有用的数据库平台容量:主从数据总量在几百T以上,每天十 多亿 pv的动态页面,还有几个大项目是通过数据接口方式调用未算进pv总数,(其中包括一个大项目因为初期memcached没部署,导致单台数据库每天处理 9千万的查询)。而我的整体数据库服务器平均负载都在0.5-1左右。

MySql 引擎innodb和MyISAM的比较

MyISAM
———————————————————————————————-
(1)、MyISAM是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法)
(2)、不支持事务
(3)、不支持外键
(4)、如果用到大量的查询语句的时候,建议使用MYISAM内核
(5)、MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩
(6)、操作数据库表的习惯,如果使用select count(*)查询的话,在MyISAM下速度会很快,而在innodb下可能就有点慢了,但是如果
查询的是主键的话,在innodb下速度还是可以的,

innodb
———————————————————————————————-
(1)、事务安全的,支持行级锁
(2)、支持外键
(3)、如果使用大量的insert和update语句的时候,建议使用innodb内核
(4)、对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
(5)、大尺寸的数据趋向于选择innodb内核,因为这个内核支持事务和故障恢复,InnoDB可以利用事务日志进行数据恢复,这会比较快,而MyISAM可能会需要几个小时甚至几天来干这些事,InnoDB 只需要几分钟。

mysql查询当前库有多少张表

将其中的database_name改成自己的数据库名称就可以了

语法:MySQL中INSERT INTO SELECT的使用 (转载)

附上一个自己项目中用到的:

MySQL 数据库常用命令

1、MySQL常用命令

create database name; 创建数据库

use databasename; 选择数据库

drop database name 直接删除数据库,不提醒

show tables; 显示表

describe tablename; 表的详细描述

select 中加上distinct去除重复字段

mysqladmin drop databasename 删除数据库前,有提示。

显示当前mysql版本和当前日期

select version(),current_date;

2、修改mysql中root的密码:

shell>mysql -u root -p

mysql> update user set password=password(”xueok654123″) where user=’root’;

mysql> flush privileges //刷新数据库

mysql>use dbname; 打开数据库:

mysql>show databases; 显示所有数据库

mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后

mysql>describe user; 显示表mysql数据库中user表的列信息);

3、grant

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个

mysql> grant all privileges on *.* to user@localhost identified by ’something’ with

增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

删除授权:

mysql> revoke all privileges on *.* from root@”%”;

mysql> delete from user where user=”root” and host=”%”;

mysql> flush privileges;

创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb

mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’

重命名表:

mysql > alter table t1 rename t2;

4、mysqldump

备份数据库

shell> mysqldump -h host -u root -p dbname >dbname_backup.sql

恢复数据库

shell> mysqladmin -h myhost -u root -p create dbname

shell> mysqldump -h host -u root -p dbname < dbname_backup.sql

如果只想卸出建表指令,则命令如下:

shell> mysqladmin -u root -p -d databasename > a.sql

如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

shell> mysqladmin -u root -p -t databasename > a.sql

那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

mysqldump -T./ phptest driver

其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查

询,可如下执行这些查询:

例如,如果您想将建表语句提前写在sql.txt中:

mysql > mysql -h myhost -u root -p database < sql.txt

http://news.newhua.com/news1/program_database/2009/217/0921715343537K7H7IDI2CCI09JCI1DK8FJ4B07B3A04219G561C3JAB.html
转自: