378 发表于 2018-9-9 12:50:50

ORACLE 管理 数据库增删改名

  启动和停止数据库
  启动数据库
  数据库启动的阶段:很重要!
  nomount:第一个台阶
  shoutdown --> nomount:
  startup nomount
  1.读参数文件分配实例
  2.产生警报日志文件
  select instance_name,status from v$instance;
  INSTANCE_NAME STATUS
  ---------------- ------------
  orcl STARTED
  nomount 状态下可以:
  创建数据库
  重建控制文件
  修改初始化参数
  能够查询于内存和进程相关的数据字典
  mount:第二个台阶
  加载控制文件的信息到内存
  nomount --> mount:
  alter database mount;
  select instance_name,status from v$instance;
  INSTANCE_NAME STATUS
  ---------------- ------------
  orcl MOUNTED
  备份
  还原
  恢复
  修改数据库的归档模式
  打开和关闭闪回数据库的功能
  移动数据文件和联机日志文件
  可以进行数据文件级别的offline但不能作表空间级别的offline
  可以访问所有的v$xxx
  open:第三个台阶
  需要所有的数据文件和联机日志文件
  mount --> open
  alter database open;
  alter database open read only;
  只能查询不能修改数据
  可以执行本地管理的表空间的磁盘排序!(没讲!)
  select open_mode from v$database;
  受限会话访问模式:(只有拥有RESTRICTED SESSION权限
  的用户才可以创建会话)
  select logins from v$instance;
  alter system enable RESTRICTED SESSION;
  alter system disable RESTRICTED SESSION;
  grant RESTRICTED SESSION to scott;
  revoke RESTRICTED SESSION from scott;
  练习:启动空实例(demo)
  创建参数文件(pfile):
  vi $ORACLE_HOME/dbs/initdemo.ora
  -----------------------------------------------
  db_name=demo
  shared_pool_size=100m
  如果有多个参数文件存在,由$ORACLE_SID环境
  变量的值决定使用哪一个参数文件!
  问题:
  如果想启动orcl实例怎么办?
  echo $ORACLE_SID
  export ORACLE_SID=orcl
  如果想启动demo实例怎么办?
  echo $ORACLE_SID
  export ORACLE_SID=demo
  sqlplus /nolog
  conn / as sysdba
  startup nomount --启动的实例是哪一个?
  停止数据库
  shutdown normal
  不允许建立新的连接(普通用户)
  等待查询结束
  等待事务结束
  产生检查点(完全检查点)
  关闭数据文件
  卸载控制文件
  关闭实例
  shutdown transactional
  不允许建立新的连接(普通用户)
  不等待查询结束(查询的会话被杀掉)
  等待事务结束
  产生检查点(完全检查点)
  关闭数据文件
  卸载控制文件
  关闭实例
  shutdown immediate
  不允许建立新的连接(普通用户)
  不等待查询结束(查询的会话被杀掉)
  不等待事务结束(将事务rollback)
  产生检查点(完全检查点)
  关闭数据文件
  卸载控制文件
  关闭实例
  shutdown abort
  对oracle数据库相当于拔电源!
  是脏库!重新启动数据库时需要实例的恢复!
  startup force = shutdown abort + startup
  startup force nomount | mount
  --从控制文件读取信息:
  select file#,checkpoint_change#,last_change# from v$datafile;
  --从数据文件头直接读取信息:
  select file#,CHECKPOINT_CHANGE#,fuzzy from v$datafile_header;
  数据库必至少在mount状态才能查询!
  练习
  如何判断数据库是正常停止的?
  dbca创建数据库
  export ORACLE_SID=test
  sqlplus /nolog
  conn / as sysdba
  export ORACLE_SID=orcl
  sqlplus /nolog
  conn / as sysdba
  ps -ef | grep ora_
  手工创建数据库(demo)
  1.准备相关路径:
  trace file (实例管理的目录):$ORACLE_BASE/admin//
  mkdir -p /u01/app/oracle/admin/demo/adump
  mkdir -p /u01/app/oracle/admin/demo/bdump
  mkdir -p /u01/app/oracle/admin/demo/cdump
  mkdir -p /u01/app/oracle/admin/demo/udump
  存放数据库文件的目录:
  mkdir /u01/app/oracle/oradata/demo
  2.设置环境变量:
  export ORACLE_SID=demo
  3.创建口令文件:
  cd $ORACLE_HOME/dbs
  orapwd file=orapwdemo password=oracle
  4.准备参数文件:
  cd $ORACLE_HOME/dbs
  --vi initdemo.ora-------------------------------------
  compatible=10.2.0.1.0
  db_name=demo
  shared_pool_size=200m
  audit_file_dest='/u01/app/oracle/admin/demo/adump'
  background_dump_dest='/u01/app/oracle/admin/demo/bdump'
  core_dump_dest='/u01/app/oracle/admin/demo/cdump'
  user_dump_dest='/u01/app/oracle/admin/demo/udump'
  control_files='/u01/app/oracle/oradata/demo/control01.ctl'
  db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
  db_recovery_file_dest_size=1g
  undo_management=auto
  undo_tablespace=undotbs1
  5.启动数据库到nomount
  show parameter name --校验进入的实例是demo
  6.创建数据库
  create database demo
  maxinstances 8
  maxloghistory 1
  maxlogfiles 16
  maxlogmembers 3
  maxdatafiles 100

  datafile '/u01/app/oracle/oradata/demo/system01.dbf'>
  sysaux datafile '/u01/app/oracle/oradata/demo/sysaux01.dbf'>
  default temporary tablespace temp tempfile '/u01/app/oracle/oradata/demo/temp01.dbf'>
  undo tablespace undotbs1 datafile '/u01/app/oracle/oradata/demo/undotbs01.dbf'>  character set we8iso8859p1
  national character set al16utf16
  logfile

  group 1 '/u01/app/oracle/oradata/demo/redo01.log'>
  group 2 '/u01/app/oracle/oradata/demo/redo02.log'>  创建数据字典:
  @?/rdbms/admin/catalog
  构造PL/SQL运行环境:
  @?/rdbms/admin/catproc
  创建用户安全审核表:
  conn system/manager
  @?/sqlplus/admin/pupbld
  insert into PRODUCT_USER_PROFILE (PRODUCT,USERID,ATTRIBUTE,CHAR_VALUE)
  values ('SQL*Plus','SCOTT','DROP','DISABLED');
  commit;
  创建scott用户:
  @?/rdbms/admin/utlsampl
  练习
  手工创建一个数据库,db_name=madrid
  数据字典
  数据字典:
  select count(table_name) from dict;
  字典表:数据库必须open才能访问,数据相对是静态的
  user_xxx :当前方案所拥有的对象的信息
  all_xxx :当前方案所拥有的以及有有权力查看的对象的信息
  dba_xxx :数据库所有对象的信息
  动态性能视图:在mount状态都可以访问,是累加器模式,在实例生命周期时刻在变
  select name from v$fixed_table;
  v$xxx :的信息来源于gv$xxx
  gv$xxx :包含所有实例的信息
  select TEXT from dba_views where VIEW_NAME='DBA_TABLESPACES';
  使用模糊匹配查找感兴趣的数据字典:
  select table_name from dict where table_name like '%TABLESPACE%'; --open可用,记录所有数据字典的信息
  select name from v$fixed_table where name like 'v$%XXX%'; --mount可用,记录所有动态性能视图的信息
  SELECT VIEW_DEFINITION FROM V$FIXED_VIEW_DEFINITION WHERE VIEW_NAME='GV$TABLESPACE';
  dict_columns记录数据字典中列的信息:
  select table_name from dict_columns where COLUMN_NAME='SQL_HASH_VALUE';
  用户表
  select text
  from dba_views
  where view_name='DBA_TABLESPACES';
  练习
  什么是数据字典?
  数据字典分几类?都是如何命名的?
  mount状态下可以查询什么字典不可以查询什么字典?
  字典信息的来源是什么?
  怎样寻找你感兴趣的数据字典?
  DICT记录的是什么信息?v$fixed_table记录的是什么信息?有了dict为什么还要v$fixed_table?
  控制文件的管理
  select TYPE,
  RECORD_SIZE,
  RECORDS_TOTAL,
  RECORDS_USED
  from v$controlfile_record_section;
  select * from v$controlfile;
  最少1个最多8个!所有的控制文件都是镜像关系!
  数据库启动时使用几个控制文件由什么决定?
  由初始化参数control_files决定!!
  show parameter control_files
  练习1.增加控制文件
  1.修改参数control_files,增加一个新指针!
  alter system set control_files='/u01/app/oracle/oradata/demo/control01.ctl','/u01/app/oracle/oradata/demo/control02.ctl' scope=spfile;
  2.正常停止数据库:
  shutdown immediate
  3.使用现有的控制文件复制出新的控制文件
  cp /u01/app/oracle/oradata/demo/control01.ctl /u01/app/oracle/oradata/demo/control02.ctl
  4.启动数据库
  startup
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  ORA-00205: error in>  show parameter background_dump_dest
  vi /u01/app/oracle/admin/demo/bdump/alert_demo.log
  练习2.减少控制文件
  练习3.移动控制文件
  练习4.控制文件改名
  创建控制文件:
  create controlfile reuse database demo noresetlogs
  maxinstances 8
  maxloghistory 1
  maxlogfiles 16
  maxlogmembers 3
  maxdatafiles 100
  datafile
  '/u01/app/oracle/oradata/demo/system01.dbf',
  '/u01/app/oracle/oradata/demo/undotbs01.dbf',
  '/u01/app/oracle/oradata/demo/sysaux01.dbf'
  logfile

  group 1 '/u01/app/oracle/oradata/demo/redo01.log'>
  group 2 '/u01/app/oracle/oradata/demo/redo02.log'>  character set we8iso8859p1;
  --联机日志文件丢失
  alter tablespace temp add tempfile '/u01/app/oracle/oradata/demo/temp01.dbf' reuse;
  create controlfile reuse database demo resetlogs
  maxinstances 8
  maxloghistory 1
  maxlogfiles 16
  maxlogmembers 3
  maxdatafiles 100
  datafile
  '/u01/app/oracle/oradata/demo/system01.dbf',
  '/u01/app/oracle/oradata/demo/undotbs01.dbf',
  '/u01/app/oracle/oradata/demo/sysaux01.dbf'
  logfile

  group 1 '/u01/app/oracle/oradata/demo/redo01.log'>
  group 2 '/u01/app/oracle/oradata/demo/redo02.log'>  character set we8iso8859p1;

页: [1]
查看完整版本: ORACLE 管理 数据库增删改名