Oracle管理

一、客户端连接服务器
1.查看服务器监听程序配置文件(先不用改动)
[[email protected]/]#su - oracle
[[email protected]~]$ cd $ORACLE_HOME/network/admin
[[email protected]]$ vim listener.ora

2.查看服务器的实例名
SQL> select instance_name from v$instance;

INSTANCE_NAME

Orcl

3.设置客户端配置文件tnsnames.ora
ORCL = //ORCL即为连接标识符
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel1.benet.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
4.连接实例
请输入用户名: sys/[email protected] as sysdba
5.停止监听器
[[email protected] admin]$lsnrctl stop listener
6.再连接

请输入用户名: sys/[email protected] as sysdba
ERROR:
ORA-12541: TNS: 无监听程序

7、再创建一个监听器,同时做静态注册,并进行连接
①.创建新的监听器
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel1.benet.com)(PORT = 1522))
)
)
SID_LIST_LISTENER1 =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /opt/oracle/product/11.2/db_1)
(GLOBAL_DBNAME = orclabc)
)//所有()前面至少加一个空格
)
②.重新加载配置文件(可以省略)
[[email protected] admin]$lsnrctl reload
③.启动listener1监听器
The command completed successfully
[[email protected] admin]$lsnrctl start listener1
④.在客户机上修改tnsnames.ora配置文件
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel1.benet.com)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)
ORCL1 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = rhel1.benet.com)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = orcl)
)
)
⑤.在客户机上连接连接listener1监听器
请输入用户名: sys/[email protected] as sysdba

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

二?管理控制文件
1.获得控制文件信息
SQL> select name from v$controlfile;

NAME

/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl

2.获取控制文件中包含的内容
SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;
3.创建多路复用控制文件
①先创建存放控制文件的目录,并更改属主位oracle
[[email protected] ~]$su - root
[[email protected] ~]#mkdir -p /backup1/control
[[email protected] ~]#mkdir -p /backup2/control
[[email protected] ~]#chown -R oracle /backup1
[[email protected] ~]#chown -R oracle /backup2
②在数据库仍然打开时,修改spfile中的contro_files参数
[[email protected] ~]#su - oracle
[[email protected] ~]$sqlplus sys/123456 as sysdba
SQL> alter system set
2 control_files=
3 ‘/opt/oracle/oradata/orcl/control01.ctl‘,
4 ‘/backup1/control/control02.ctl‘,
5 ‘/backup2/control/control03.ctl‘ scope=spfile;
③关闭数据库
SQL> shutdown immediate;
④使用操作系统命令将文件复制到新的位置
SQL> quit;
[[email protected] ~]$ cp /opt/oracle/oradata/orcl/control01.ctl /backup1/control/control02.ctl
[[email protected] ~]$ cp /opt/oracle/oradata/orcl/control01.ctl /backup2/control/control03.ctl
⑤重新启动数据库
[[email protected] ~]$sqlplus sys/123456 as sysdba
SQL>startup
4.备份与恢复控制文件
方法一:直接用现有的完好的控制文件覆盖损坏或丢失的控制文件
①模拟故障,停止数据库,删除控制文件
sql>shutdown immediat
sql>quit
$rm -f /badkup1/control/control02.ctl
②启动数据库
sql>startup 观察现象
③恢复控制文件
sql>shutdown abort;
sql>quit
$ cp /opt/oracle/oradata/orcl/control01.ctl /backup1/control/control02.ctl
④再次启动数据库
sql>startup
方法二:利用专用的备份数据库语句
①创建备份
SQL> quit
[[email protected] ~]$su - root
[[email protected] ~]#mkdir /opt/oracle/oradata/orcl/backup
[[email protected] ~]#chown -R oracle /opt/oracle/oradata/orcl/backup/
SQL> alter database backup controlfile to ‘/opt/oracle/oradata/orcl/backup/control.bkp‘;
②模拟故障
SQL> shutdown immediate
SQL> quit
[[email protected] ~]$ rm backup1/control/control02.ctl
[[email protected] ~]$sqlplus sys/123456 as sysdba
SQL> startup
ORACLE instance started.

Total System Global Area 780824576 bytes
Fixed Size 2217424 bytes
Variable Size 490736176 bytes
Database Buffers 281018368 bytes
Redo Buffers 6852608 bytes
ORA-00205: error in identifying control file, check alert log for more info
③恢复控制文件
? 使用os命令复制备份文件到原来的路径,为了保持一致,将没有丢失的控制文件也恢复一份
[[email protected] ~]$cp/opt/oracle/oradata/orcl/backup/control.bkp /opt/oracle/oradata/orcl/control01.ctl
[[email protected] orcl]$ cp /opt/oracle/oradata/orcl/backup/control.bkp /backup1/control/control02.ctl
[[email protected] orcl]$ cp /opt/oracle/oradata/orcl/backup/control.bkp /backup2/control/control03.ctl
[[email protected] orcl]$sqlplus sys/123456 as sysdba
SQL> alter database mount;
? 查看当前活动的日志文件
SQL> startup mount;
SQL> select group#,sequence#,archived,status from v$log;
GROUP# SEQUENCE# ARCHIV STATUS


 1      4 NO     INACTIVE
 3      6 NO     CURRENT
 2      5 NO     INACTIVE

? 利用控制文件来恢复数据库
SQL> select group#,status,type,member from v$logfile;
SQL> recover database using backup controlfile;
ORA-00279: change 1039911 generated at 05/30/2017 12:55:30 needed for thread 1
ORA-00289: suggestion :
/opt/oracle/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_16%u_.arc
ORA-00280: change 1039911 for thread 1 is in sequence #6 //根据提示在下面输入当前的日志文件
/opt/oracle/oradata/orcl/redo03.log
? 打开数据库
SQL> alter database open resetlogs;
resetlogs选项的意思是要打开数据时,重置重做日志,即将重做日志的sequence置零

三.管理重做日志文件

  1. 使用v$log查看重做日志信息
    [[email protected]~]$sqlplus / as sysdba
    SQL> select group#,sequence#,bytes,members,archived,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS ARCHIVED


    STATUS

    1 4 209715200 1 NO
    CURRENT

    2 2 209715200 1 NO
    INACTIVE

    3 3 209715200 1 NO
    INACTIVE

2.使用v$logfile查看重做日志组信息
SQL> select group#,status,type,member from v$logfile;

GROUP# STATUS        TYPE

MEMBER

 3           ONLINE

/u01/app/oracle/oradata/orcl/redo03.log

 2           ONLINE

/u01/app/oracle/oradata/orcl/redo02.log

 1           ONLINE

/u01/app/oracle/oradata/orcl/redo01.log

3.创建重做日志组
SQL> quitbr/>[[email protected]~]$su
密码:
[[email protected]]#mkdir -p /backup/orcl/log
[[email protected]]#chown -R oracle /backup
[[email protected]~]$sqlplus / as sysdba
SQL> alter database add logfile group 4
(‘/u01/app/oracle/oradata/orcl/redo04a.log‘,
‘/backup/orcl/log/redo04b.log‘) size 10m;
数据库已更改。

4.删除重做日志组4(只是删除了日志组,日志文件并没有删除)
①删除之前先查看下,然后再删除
SQL> select group#,sequence#,bytes,members,archived,status from v$log;

GROUP#  SEQUENCE#      BYTES    MEMBERS ARCHIVED

STATUS

 1  4  209715200      1 NO

CURRENT

 2  2  209715200      1 NO

INACTIVE

 3  3  209715200      1 NO

INACTIVE

GROUP#  SEQUENCE#      BYTES    MEMBERS ARCHIVED

STATUS

 4      0   10485760      2 YES

UNUSED

SQL> alter database drop logfile group 4;

数据库已更改。
说明:
① 当前的日志组不能删除,要删除当前日志组需要先对当前日志组进行切换,使用命令为alter system switch logfile
② 活动的日志组不可以删除
③ 没有归档的日志组不可以删除(前提是已经运行在归档模式)

5.添加/删除重做日志文件,分别向日志组1和2添加一个日志文件
①添加重做日志文件
SQL> alter database add logfile member
2 ‘/backup/orcl/log/redo01a.log‘ to group 1,
3 ‘/backup/orcl/log/redo02b.log‘ to group 2;

数据库已更改。

②删除日志文件
SQL> alter database drop logfile member
‘/backup/orcl/log/redo02b.log‘;

数据库已更改。
③查看日志文件
SQL> select group#,status,type,member from v$logfile;

GROUP# STATUS        TYPE

MEMBER

 3           ONLINE

/u01/app/oracle/oradata/orcl/redo03.log

 2           ONLINE

/u01/app/oracle/oradata/orcl/redo02.log

 1           ONLINE

/u01/app/oracle/oradata/orcl/redo01.log

GROUP# STATUS        TYPE

MEMBER

 1 INVALID       ONLINE

/backup/orcl/log/redo01a.log

说明:
? 不能删除当前组的成员,若要删除则先执行强制性切换重做日志的命令
? 活动的日志成员不可以删除
? 没有归档的日志文件不能删除(前提是已运行在归档模式下)
? 当日志组只有一个成员

6.日志切换和检查点时间
①强制切换日志文件
SQL> alter system swith logfile;
②强制产生检查点事件
SQL> alter system checkpoint;

四?管理归档日志文件

  1. 配置数据库归档日志
    ① 查看数据库归档模式,确定当前不处于归档模式
    SQL> archive log list;
    数据库日志模式 非存档模式
    自动存档 禁用
    存档终点 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
    最早的联机日志序列 2
    当前日志序列 4

② 关闭数据库并启动数据库到mount状态
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1023411032 bytes
Database Buffers 553648128 bytes
Redo Buffers 7983104 bytes
数据库装载完毕。

③ 将数据库设置为归档模式并查看归档模式是否改变
SQL> alter database archivelog;

数据库已更改。

SQL> archive log list;
数据库日志模式 存档模式
自动存档 启用
存档终点 /u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch
最早的联机日志序列 2
下一个存档日志序列 4
当前日志序列 4
SQL> alter database open ;

数据库已更改。

④ 查看归档日志文件的路径
查看当前有效的归档日志文件存储目录
SQL> selectdest_id,dest_name,status,destination from v$archive_dest ;
DEST_ID

DEST_NAME

STATUS

DESTINATION

 1

LOG_ARCHIVE_DEST_1
VALID
/u01/app/oracle/product/12.2.0/dbhome_1/dbs/arch

DEST_ID

DEST_NAME

STATUS

DESTINATION

 2

LOG_ARCHIVE_DEST_2
INACTIVE//省略部分信息
SQL> select dest_id,name,archived from v$archived_log;
DEST_ID NAME ARCHIV
1/opt/oracle/flash_recovery_area/ORCL/archivelog/2016_11_19/o1_mf_1_8d2yh7kfx.arc YES
⑤ 改归档日志文件存放路径
[[email protected]~]#mkdir /aa
[[email protected]~]#chown -R oracle /aa
[[email protected]~]#su – oracle
[[email protected]~]$sqlplus / as sysdba
SQL> alter system set log_archive_dest=‘/aa‘ scope=spfile;

实验五:数据字典管理
1.创建一个班级表空间,空间大小为100m,数据文件放在/data目录下
[[email protected] ~]#mkdir /data
[[email protected] ~]#chown -R oracle /data
[[email protected] ~]#su - oracle
[[email protected] ~]$sqlplus / as sysdba
SQL> create tablespace t374
datafile ‘/data/t374.dbf‘ size 100m;
2.创建本人用户,默认表空间为班级表空间
SQL> create user name
identified by 123456
default tablespace t374;

  1. 授予其连接数据库和创建以及创建视图表的权限
    SQL> grant connect,resource,create view to name;
  2. 切换称本人账户并创建表student,表里包含name和passwd字段
    SQL>SQL> conn name;
    SQL> create table student
    (name varchar(10),
    passwd varchar(20));
    5.创建视图student_view
    SQL> create view student_view
    2 as
    3 select * from student;

6.查询当前用户有哪些表
SQL> desc user_tables;
SQL>select * from user_tables;
SQL> select table_name fromuser_tables;
TABLE_NAME

STUDENT
7.查看当前用户有哪些视图
SQL> desc user_views;
SQL> select view_name fromuser_views;
VIEW_NAME

STUDENT_VIEW
8.查询当前用户有哪些数据库对象
SQL> select object_name from user_objects;
OBJECT_NAME

STUDENT_VIEW
STUDENT
9.查询当前用户的信息,包括用户id,用户状态,默认表空间
①查看表结构
SQL> desc user_users;
Name Null? Type



USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME
②格式化输出
SQL> col user_id for 999
SQL> col account_status for a10
SQL> col default_tablespace for a30
③查询
SQL> select user_id,account_status,default_tablespace from user_users;

USER_ID ACCOUNT_ST DEFAULT_TABLESPACE


 91 OPEN       T374

10.查询当前用户能访问的所有对象
SQL> select owner,object_name,object_type from all_objects;
11.查询所有的数据字典,并查询所有的以user开头的所有表
SQL> desc dictionary;
Name Null? Type



TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
SQL> select table_name from dictionary where table_name like ‘USER%‘;
12.查看scott用户的表和表空间
SQL> col owner for a10
SQL> col table_namefor a20
SQL> col tablespace_name for a30
SQL> select owner,table_name,tablespace_name from dba_tables where owner=‘SCOTT‘;
OWNER TABLE_NAME TABLESPACE_NAME



SCOTT DEPT USERS
SCOTT EMP USERS
SCOTT BONUS USERS
SCOTT SALGRADE USERS

实验六:动态数据字典
1.查看和日志文件相关的信息(注意大写)
SQL> select * from v$fixed_table where name like ‘v$LOG%‘;
2.查看日志组状态信息
SQL> select group#,members,archived,status from v$log;
GROUP# MEMBERS ARCHIV STATUS


 1      1 NO     INACTIVE
 2      1 NO     INACTIVE
 3      1 NO     CURRENT

3.查看日志文件信息
SQL> col type for a10
SQL> col group# for 99
SQL> select * fromv$logfile;
GROUP# STATUS TYPE MEMBER IS_REC


 3            ONLINE     /opt/oracle/oradata/orcl/redo03.log      NO
 2            ONLINE     /opt/oracle/oradata/orcl/redo02.log      NO
 1            ONLINE     /opt/oracle/oradata/orcl/redo01.log      NO

4.查看当前正在使用的重做日志文件的信息
SQL> select l.group#,l.archived,l.status,lf.type,lf.member from v$log l, v$logfilelf where l.group#=lf.group#;

GROUP# ARCHIV STATUS TYPE


MEMBER

 3 NO     INACTIVE                 ONLINE

/opt/oracle/oradata/orcl/redo03.log

 2 NO     INACTIVE                 ONLINE

/opt/oracle/oradata/orcl/redo02.log

 1 NO     CURRENT                  ONLINE

/opt/oracle/oradata/orcl/redo01.log
5.查看实例信息
SQL> col instance_name for a20;
SQL> col host_name for a10
SQL> select instance_name,host_name,version,startup_time,logins from v$instance;

INSTANCE_NAME HOST_NAME VERSION STARTUP_TIME


LOGINS

orcl rhel1.bene 11.2.0.1.0 30-MAY-17
t.com
ALLOWED
6.查看数据库信息
SQL> col name for a10;
SQL> select name,created,log_mode from v$database;

NAME CREATED LOG_MODE



ORCL 30-MAY-17 NOARCHIVELOG

Oracle管理

原文地址:http://blog.51cto.com/13468179/2315457

时间: 2024-10-11 13:26:20

Oracle管理的相关文章

[ORACLE]管理方面的脚本收集

-----------------------------Cryking原创------------------------------ -----------------------转载请注明出处,谢谢!------------------------ 1.查询AWR相关的视图名称 SELECT table_name FROM dba_tables t WHERE table_name LIKE 'WRH$%' AND NOT EXISTS (SELECT 'x' FROM dba_tab_c

ORACLE管理存储结构之物理机构+逻辑结构【weber出品】

一.数据库的存储结构有物理结构和逻辑结构组成的 物理结构:物理上,oracle是由一些操作系统文件组成的 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/orcl/undotb

《oracle管理4》

Oracle NET 1.客户端通过@ora10g的名字去tnsname.ora文件获取服务器的具体连接信息 2.客户端通过tnsname.ora中的描述向服务器发出链接请求服务器端 3.服务器的监听器接收到连接请求后,验证请求的服务的有效性 4.服务器端产生一个服务进程和客户端进程建立连接 查看会话建立过程: $ netstat -tlnp | grep 1521 $ sqlplus sys/[email protected] as sysdba $ netstat -tnp | grep s

《oracle管理6》

audit 开启开关参数: SQL> show parameter audit_trail 设置审计选项: 每次设置新的审计选项,测试用户需要重新连接 sys准备工作: SQL> drop user user01 cascade; SQL> create user user01 identified by password; SQL> grant create session, create table, create any table to user01; 审计系统权限: SQ

Oracle管理基础

1.exp导出命令 2.imp导入命令 3.oem管理 4.用户角色管理 创建用户 选择用户所在表空间 选择用户角色 修改表定义 oem主页面 Oracle执行计划

《oracle管理7》

撤销管理 什么是撤销数据: 1.交易的回退:没有提交的交易可以rollback 2.交易的恢复:数据库崩溃时,将磁盘的不正确数据恢复到交易前 3.读一致性  :被查询的记录有事务占用,转向回滚段找改前镜像 4.闪回数据  :从回滚段中构造历史数据 事务与撤销数据: redo和undo: AUM: 3个参数,两个表空间属性 undo_management=AUTO 回滚表空间段的段管理模式,管理员只需要备足够的表空间容量,oracle会自动管理扩展回滚段的数量.只能使用一个UNDO表空间. und

oracle数据库多实例实时同步(利用oracle管理平台实现)

环境: Windows 2008 服务器,Oracle 11g  r2 数据库 任务要求: 有三个数据库实例,一个实例供管理子系统使用,一个实例供利用子系统使用,还有一个实例专门做备份. 选择的技术: Oracle Stream Replication(流复制) 创建另外两个实例 源实例:orcl 目标1:target 目标2:target2 停止应用服务器,防止用户因为使用应用服务器而对数据库做出的改变. 并导出 orcl 实例中用户的数据,用 exp 命令 例如 exp nt_gxt/[em

[转]ORACLE 管理 安全与审计

口令安全和资源的管理查看当前profile文件信息:select * from dba_profiles order by 1; 口令管理风格:FAILED_LOGIN_ATTEMPTS PASSWORD 10 --指定在锁定帐户之前试图登录用户帐户的失败次数PASSWORD_LIFE_TIME PASSWORD UNLIMITED --生存期,过期失效 2/1440PASSWORD_REUSE_TIME PASSWORD UNLIMITED --许多系统不许用户重新启用过去用过的口令.该资源项

《oracle管理5》

用户管理 AAA: Authentication: 身份验证 Authorization: 权限管理 Audition: 审计 authentication 预定义的系统用户: SQL> select USERNAME, ACCOUNT_STATUS from dba_users; open状态的用户: SQL> select USERNAME, ACCOUNT_STATUS from dba_users ACCOUNT_STATUS='OPEN'; 系统管理账号: SYS SYSTEM DB