分类目录归档:ORACLE

oracle的adg中的物理standby和逻辑standby

ORACLE的redo日志中存放的是数据变化向量,非SQL语句。

一、物理standby
物理standby是通过接收并应用primary数据库的redo log以介质恢复的方式(Redo Apply)实现同步。

优点:
1) 可保证standby和primary物理级别上的完全一致性,不丢失数据;
2) 效率高,因为是使用最底层的块级别上的复制。
缺点:
1) 在与primary同步时,standby不能open,无法分担primary上的负载。
11G后,可以同步的同时开启standby库用于查询。(ADG)

二、逻辑standby
逻辑standby是通过接收primary数据库的redo log并转换成sql语句,然后在standby数据库上执行SQL语句(SQL Apply)实现同步。

优点:
1) 在与primary同步时,standby处于open状态(read write),可分担primary上部分的查询和报表服务。
缺点:
1) standby和primary的物理结构不一致,且对某些数据和SQL语句有限制。
2) 效率较低,因为是执行SQL语句。

oracle 的块,区,段

1. 段区块是 Oracle 数据库的逻辑上的概念。块属于区,区属于段

2. Oracle 在创建表时,会分配一个段来装这个表。可以理解为一个表就是一个段。

3. 第 2 点说的不够准确。实际上, Oracle 在创建空表,在没有添加数据时,是不分配逻辑结构的(为了节省更多的空间),只有在添加数据的时候才会分配逻辑结构。当然,一个表还是一个段。

4. 区是由很多个连续的块组成。 Oracle 在创建好表,添加数据时,会产生一个新的区, Oracle 会往这些新的区中添加数据,这些区由很多个块组成。当这个区用完之后,会接着产生下一个区。

5. 块的大小默认是 8k, 可以修改。

6. Oracle 数据库是由很多个表组成,表又是由很多数据行来组成。

7. 每个块中会有多个数据行,一个数据行通常只能在一个块中。因为一个块是 8k, 一行数据肯定远小于这个数值,所以一个块可以装很多数据,够装了。

8. 块是 Oracle I/O 的最小单位。 I/O 是指从磁盘到内存的过程。数据是存放在磁盘上的。所以通常我们检索一行数据, Oracle 在磁盘中,不可能只调取一行数据,最少是调取一个块,也就是 8k 。比如我要读取的一行数据大小为 100 字节,但是 Oracle 每次读这行数据时,都会读取它所在的块,也就是 8k.

oracle的savepoint和OCP

一、基本概念

保存点savepoint是事务中的一点,通过rollback可以返回到某个保存点。一个事务中可以有多个保存点。一旦事务提交,该事务中的保存点会自动被删除,那么无论刚才做了多少个保存点,都统统没有了。

SQL> savepoint sp;

Savepoint created

SQL> delete from mytable;

15 rows deleted

SQL> rollback to sp;

Rollback complete

SQL> select count(*) from mytable;

COUNT(*)
———-
15

删除操作就被回退了。

 

二、详解

事务的几个重要操作
1 设置保存点 savepoint a
2 取消部分事务 rollback to a
3 取消全部事务 rollback
若执行SQL> commit;提交操作,则该事务中所有保存点都不存在了。如果没有手动执行commit而是exit会自动提交。

oracle的闪回区

闪回恢复区是为Oracle 数据库中所有与恢复相关的文件和活动提供的一个统一的存储位置。 将数据库从介质故障中完全恢复过来所需的全部文件都位于闪回恢复区中。 可以在闪回恢复区中创建的与恢复相关的文件包括:存档重做日志文件、控制文件、由Recovery Manager (RMAN) 创建的备份、闪回日志和更改跟踪文件。

oracle asm,关键字:dbca 11g select disk group is null

1、执行:

/usr/sbin/oracleasm scandisks和/usr/sbin/oracleasm listdisks

查看执行结果, listdisk可以正常的将磁盘组可显示出来.


2
、切换到 grid 用户下 ,查看ASM实例是否启动,并执行查询 

sqlplus / as sysdba

select group_number,path,mount_status,state from v$asm_disk;

select group_number,offline_disks,state from v$asm_diskgroup;

查看磁盘以及磁盘组及其磁盘状态都正常(正常状态为mount);


3
、用户组判断

id oracle 和id grid

查看oracle用户是否在admdba组里面,我这里的问题是把oracle加入到asmadmin组,问题解决

usermod -G asmadmin,asmdba,asmoper,dba,oper oracle


4
、查看oracle用户和grid用户的$ORACLE_HOME/bin/oracle文件的权限

$ORACLE_HOME/bin/oracle 该文件的默认权限为6751权限,有个s权限,如果s权限消失,这时通过OS认证将不能登录到数据库;

经过对问题的逐一排查,终于找到了问题的所在:

执行 chmod +s oracle 解决问题

oracle基础学习

安装。。。。。。稍稍有点linux基础的都会安装,尤其是运维人员,不再表述

oracle启动:
1、设置环境变量
$export ORACLE_HOME=/home/oracler/app/oracler/product/11.2.0/dbhome_1
$export ORACLE_SID=orcl

2、启动,连接
$sqlplus

oracle账户基础

sys和system用户的区别
【system】用户只能用normal身份登陆em。
【sys】用户具有“SYSDBA”或者“SYSOPER”权限,登陆em也只能用这两个身份,不能用normal。
“SYSOPER”权限,即数据库操作员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
“SYSDBA”权限,即数据库管理员权限,权限包括:
打开数据库服务器 关闭数据库服务器
备份数据库 恢复数据库
日志归档 会话限制
管理功能 创建数据库

normal 、sysdba、 sysoper有什么区别
normal 是普通用户 只有登陆的权限
另外两个,你考察他们所具有的权限就知道了
sysdba拥有最高的系统权限
sysoper主要用来启动、关闭数据库,sysoper 登陆后用户是 public
sysdba登陆后是 sys

SQL> conn / as sysdba已连接。
SQL> grant sysoper to test;

授权成功。

SQL> conn test/test as sysoper;
已连接。
SQL> show user
USER 为”PUBLIC”
SQL> conn test/test as sysdba
已连接。
SQL> show user
USER 为”SYS”
SQL>

dba和sysdba的区别
dba、sysdba这两个系统角色有什么区别呢
在说明这一点之前我需要说一下oracle服务的创建过程
·创建实例
·启动实例
·创建数据库(system表空间是必须的)
启动过程
·实例启动
·装载数据库
·打开数据库

sysdba,是管理oracle实例的,它的存在不依赖于整个数据库完全启动,
只要实例启动了,他就已经存在,以sysdba身份登陆,装载数据库、打开数据库
只有数据库打开了,或者说整个数据库完全启动后,dba角色才有了存在的基础!