oracle容器数据库
❶ oracle 11g 和 12c 有什么区别
oracle11g和12c的区别如下:
1、对应关系。
在oracle12c前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。当进入oracle12C后,实例与数据库可以是一对多的关系。
2、版本完善程度。
oracle11g在DBA管理上较完善,提升了对数据库的管控能力,且提供了许多自动特性,相对来说oracle11g升级较为简单,而oracle12c则相较于oracle11g没有这么平滑。
3、新特性。
oracle12c的新特性是实现云数据库的支持,提供云平台管理,这是oracle11g所没有的功能,同时oracle12c增加了CDB和PDB的概念,功能较oracle11g更加齐全。
4、多分区支持。
oracle12c可以对多个分区同时进行维护操作,比如将一年的12个分区MERGE到1个新的分区中,比如将一个分区SPLIT成多个分区,多个分区同时操作自动并行完成,而oracle11g无法实现这个功能。
❷ oracle12c 什么是容器数据库
1.找到 tnsname.ora 此文件在oracle安装目录文件夹/(net80/admin)/admin/
2.打开该文件并输入如下:(Database数据库名,ipaddress:ip地址,1521是端口),如我的目录是 D:\DevSuiteHome_2\NETWORK\ADMIN ,因为oracle版本不同9i可能是D:\DevSuiteHome_2\net80\ADMIN。
Database =
(description =
(address_LIST =
(address = (protocol = tcp)(host = IPaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Database_Name)
)
)
3.输入上列文件并且保存后在dos模式下输入
sqlplus username/password@databasename
sqlplus 打开sqlplus工具
username/password@databasenameme
用户名/密码@数据库名
❸ oracle数据库和mysql数据库的区别
区别如下:
一、并发性
并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。
mysql:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
oracle:
oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。
二、一致性
oracle:
oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,
每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
mysql:
mysql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。
session更新数据时,要加上排它锁,其他session无法访问数据。
三、事务
oracle很早就完全支持事务。
mysql在innodb存储引擎的行级锁的情况下才支持事务。
四、数据持久性
oracle
保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,
如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
mysql:
默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。
五、提交方式
oracle默认不自动提交,需要用户手动提交。
mysql默认是自动提交。
六、逻辑备份
oracle逻辑备份时不锁定数据,且备份的数据是一致的。
mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。
七、热备份
oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
mysql:
myisam的引擎,用mysql自带的mysqlhost热备时,需要给表加读锁,影响dml操作。
innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。
innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。
八、sql语句的扩展和灵活性
mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。
oracle在这方面感觉更加稳重传统一些。
九、复制
oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。
十、性能诊断
oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等
mysql的诊断调优方法较少,主要有慢查询日志。
十一、权限与安全
mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
oracle的权限与安全概念比较传统,中规中矩。
十二、分区表和分区索引
oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
mysql的分区表还不太成熟稳定。
十三、管理工具
oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。
❹ 无法连接Oracle数据库使用Docker容器后问题,怎么解决
oracle在导入数据时报1659的错误的原因主要是数据库表空间剩余空间不足引起的。
分析原因
1、表空间剩余空间不足。
使用下面语句,查看表空间剩余空间
select Upper(f.tablespace_name) "表空间名",
d.tot_grootte_mb "表空间大小(M)",
d.tot_grootte_mb - f.total_bytes "已使用空间(M)",
to_char(round((d.tot_grootte_mb - f.total_bytes) /
d.tot_grootte_mb * 100, 2),'990.99') || '%' "使用比",
f.total_bytes "空闲空间(M)",
f.max_bytes "最大块(M)"
from (select tablespace_name,
round(sum(bytes) / (1024 * 1024), 2) total_bytes,
round(max(bytes) / (1024 * 1024), 2) max_bytes
from sys.dba_free_space
group by tablespace_name) f,
(select dd.tablespace_name,
round(sum(dd.bytes) / (1024 * 1024), 2) tot_grootte_mb
from sys.dba_data_files dd
group by dd.tablespace_name) d
where d.tablespace_name = f.tablespace_name
order by f.tablespace_name;
表空间剩余空间不足时,可以根据原数据库表空间大小增加表空间。
alter tablespace 表空间名 add datafile '数据文件名' size 数据文件大小;
2、剩余表空间还很多。
使用下面语句查看原数据库表表定义,找到initial_extent值大的表,将这些表的
创建语句导出后修改initial_extent值,在目标数据库中创建后再导入数据,导入时
增加参数ignore=y。
select table_name, initial_extent
from user_tables
where initial_extent is not null
order by initial_extent desc
如果找不到原数据库,可以使用
imp userid/userid@service_name file=dmp文件名 indexfile=index文件名 rows=n full=Y
命令将dmp文件中创建表的语句导入到indexfile文件中,查看indexfile如下:
REM CREATE TABLE "TEST"."DM_KJKM_COPY" ("KJZDMB_DM" VARCHAR2(100)
REM ENABLE, "KMID" NUMBER(20, 0), "KMBM" VARCHAR2(100), "KMMC"
REM VARCHAR2(500), "KMQC" VARCHAR2(1000), "KMLB_DM" VARCHAR2(100),
REM ...
使用文本编辑工具,查找INITIAL将过大的初始值改为65536后,将REM去除后,在数据库中创建后再使用exp导入数据,导入时增加参数ignore=y。
❺ oracle数据库问题,急等、。。。
1、简单的说:数据库可以理解为一个独立的数据容器,SID就是其名字,表空间是数据库中的存放单元,一个数据库中可以建很多个表空间,表空间之间相互独立,每个表空间中的数据存放在表空间对应的数据文件中,为了访问数据库,需要建立用户,用户可以访问哪些表空间是通过权限来控制的。
以上关系似乎有点复杂,其实可以这么说:数据库和SID是一一对应的,数据库和表空间是一对多关系,数据库和用户也是一对多关系,用户和表空间之间是多对多的关系。
2、建立一个完整的数据库,首先通过创建数据库,然后通过DatabaseConsole创建表空间和用户并为用户指定表空间分配权限,然后通过SqlPlus或其他工具(如Toad)执行SQL语句创建表并插入数据即可。
详细的还是建议看Oracle教程吧。
❻ 讨论什么时候需要建立oracle数据库
数据库实例是相当于一个容器,没这个容器就无法在里面存储东西的。
解释:这个实例是oracle的特点之一,通过不同的实例可以每次根据实际需要只启动相应的库即可,不需要每次启动都把所有的oracle程序全,可以说是一种数据上的优化,提高oracle的执行效率。
备注:如果每次启动就把所有的实例起来,即影响oracle的执行效率,又影响电脑的性能,所有建议用到那个启动那个。
❼ 查看oracle12c是不是容器数据库
1.找到 tnsname.ora 此文件在oracle安装目录文件夹/(net80/admin)/admin/
2.打开该文件并输入如下:(Database数据库名,ipaddress:ip地址,1521是端口),如我的目录是 D:\DevSuiteHome_2\NETWORK\ADMIN ,因为oracle版本不同9i可能是D:\DevSuiteHome_2\net80\ADMIN。
Database =
(description =
(address_LIST =
(address = (protocol = tcp)(host = IPaddress)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Database_Name)
)
)
3.输入上列文件并且保存后在dos模式下输入
sqlplus username/password@databasename
sqlplus 打开sqlplus工具
username/password@databasenameme
用户名/密码@数据库名