设为首页 收藏本站
查看: 846|回复: 0

[经验分享] oracle 基本

[复制链接]

尚未签到

发表于 2018-9-14 09:25:48 | 显示全部楼层 |阅读模式
  ###########################scott用户登陆解锁##############################
  新装完Oracle11g后,用system/password可以正常登录,而使用scott/tiger用户却不能登录:
  conn scott/tiger
  error:oracle10g the account is locked
  oracle10g the password has expired
  原因:默认Oracle10g的scott不能登陆。被禁用了。
  解决方法:
  首先确认已经安装oracle 数据库和客户端
  .在客户端DOS下执行如下语句:
  注意提示符号
  c:\sqlplus /nolog
  sqlp\connsys/system@oracle10assysdba// sys为当前的oracle 用户 system 为该用户密码oracle10 为SID
  # alterusersocttaccountlock;// 把 scott用户锁定
  # alteruserscottaccountunlock;//把scott用户解锁
  # alteruser scottidentifiedbyscott//修改scott用户密码为 scott,scott用户默认密码为 tiger
  1 Dos下输入C:\sqlplus /nolog
  2 以DBA的身份登录
  conn sys/password@SID as sysdba;
  3 解锁
  alter user scott account unlock;
  4 弹出一个修改密码的对话框,修改密码
  conn scott/tiger
  (1-4如下):
  SQL> conn sys/sys as sysdba;
  Connected.
  SQL> alter user scott account unlock;
  User altered.
  SQL> commit;
  Commit complete.
  SQL> conn scott/tiger//请输入新密码,并确认后OK
  Password changed
  Connected.
  ###################oracle查看数据文件, 控制文件, 及日志文件命令########
  conn sys/benson@oracle as sysdba;
  一. 查看数据文件
  SQL> select name from v$datafile;
  NAME
  --------------------------------------------------------
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF
  二. 查看控件文件
  SQL> select name from v$controlfile;
  NAME
  ----------------------------------------------------------
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL01.CTL
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL02.CTL
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\CONTROL03.CTL
  三. 查看日志文件
  SQL> select member from v$logfile;
  MEMBER
  --------------------------------------------------
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO03.LOG
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
  D:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO01.LOG
  ###### ############################
  查看当前登陆的用户名:
  select user from dual; 或者select * from user_users;
  查看当前用户拥有的角色和权限:
  select * from user_role_privs;
  select * from session_privs;
  查看创建的表
  select tname from tab where tname='PRODUCTINFO'; 或者
  select table_name from user_tables where table_name='PRODUCTINFO';
  ##########################333
  1.oracle
  (1)启动监听
  lsnrctl start;
  (2)进入sqlplus界面
  sqlplus /nolog
  SQL>conn sys/jiaxiaoai@orcl as sysdba;
  (3)启动数据库实例
  SQL>startup;
  (4)查看当前所有的数据库
  select * from v$database;
  或 select name from v$database;
  (5)查看哪些用户拥有sysdba、sysoper权限
  select * from V_$PWFILE_USERS;
  show user;查看当前数据库连接用户
  (6)进入某个数据库:database 数据库名;
  查看数据库结构:desc v$database;
  (7)查看所有用户实例:
  select * from v$instance;
  或 select instance_name from v$instance;
  (8)查看当前库的所有数据表
  select * from all_tables;
  select table_name from all_tables;
  select table_name from user_tables;
  select table_name from all_tables where owner='用户名';
  (9)查看表结构
  desc 表名;
  (10)增加数据库用户
  create user 用户名 identified by 密码 default tablespace users Temporary TABLESPACE Temp;
  (11)用户授权
  grant connect,resource,dba to 用户名;
  grant sysdba to 用户名;
  (12)更改数据库用户密码
  alter user 用户名 identified by 密码;
  (13)查看当前用户创建的表
  select tname from tab;
  查看约束条件。
  desc user_constraints;
  select owner,constraint_name,CONSTRAINT_TYPE,table_name from user_constraints;
  desc user_cons_colums;
  select a.owner,a.constraint_name,a.constraint_type,a.table_name,b.column_name from user_constraints a,user_cons_colums b where a.constraint_name=b.constraint_name;
  ###########################################################################
  执行insert的时候出现这个错误。
  insert into 表1 values (123,2423,12);
  表1的结构有4个column,显然插入的值只有三个,因此才会出现这个问题。
  再加个column 的值执行后,ok。
  倘若只想插入三个数值的话:
  insert into 表1(a,b,c) values (123,2423,12);
  用这个语句就可以了。
  #######################################################
  无法打开OEM https://baoshengzhu-pc:1158/em
  请先启动服务OracleDBConsoleoracle ,在打开即可。
  Scott 用户无法打开autot,报如下错误
  SQL> set autot on
  SP2-0618: 无法找到会话标识符。启用检查 PLUSTRACE 角色
  SP2-0611: 启用 STATISTICS 报告时出错
  解决办法:
  conn sys as sysdba
  SQL>create role plustrace;
  SQL>grant select on v_$sesstat to plustrace;
  SQL>grant select on v_$statname to plustrace;
  SQL>grant select on v_$mystat to plustrace;
  SQL>grant plustrace to dba with admin option;
  SQL> set echo off
  SQL> grant plustrace to scott;
  DB_RECOVERY_FILE_DEST定义RMAN 备份位置
  DB_CREATE_ONLINE_LOG_DEST_n定义重做日志文件和控制文件的创建位置
  DB_CREATE_FILE_DEST定义数据文件和临时文件的默认文件系统目录的位置
  示例 DB_CREATE_FILE_DEST文件:
  参数说明:这个参数用于指定Oracle数据库服务器创建以下文件的缺省路径:
  SQL> ALTER SYSTEM SET DB_CREATE_FILE_
  ■ Datafiles
  ■ Tempfiles
  ■ Redo log files
  ■ Control files
  ■ Block change tracking files
  在设置这个路径参数之前先看一下:
  show parameter DB_CREATE_FILE_DEST;
  SQL> show parameter DB_CREATE_FILE_DEST;
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  db_create_file_deststring/soft/datafile
  SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='/u01/app/oracle/oradata';
  开始设置:
  ALTER SYSTEM SET DB_CREATE_FILE_DEST
  SQL> alter system set DB_CREATE_FILE_DEST='/soft/datafile';
  System altered.
  SQL> show parameter DB_CREATE_FILE_DEST;
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  db_create_file_deststring/soft/datafile
  示例: DB_CREATE_ONLINE_LOG_DEST_n定义重做日志文件和控制文件的创建置
  SQL> show parameter db_create_online_log_dest;
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  db_create_online_log_dest_1string
  db_create_online_log_dest_2string
  db_create_online_log_dest_3string
  db_create_online_log_dest_4string
  db_create_online_log_dest_5string
  通过定义db_create_online_log_dest_n参数,实现日志组成员的多元化。
  SQL> alter system set db_create_online_log_dest_1='/disk1/redo';
  SQL> alter system set db_create_online_log_dest_2='/disk2/redo';
  SQL> alter system set db_create_online_log_dest_3='/disk3/redo';
  SQL> show parameter db_create_online_log_dest
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  db_create_online_log_dest_1string/disk1/redo
  db_create_online_log_dest_2string/disk2/redo
  db_create_online_log_dest_3string/disk3/redo
  db_create_online_log_dest_4string
  db_create_online_log_dest_5string
  oracle 告警日志位置查询:
  SQL> show parameter background_dump_dest;
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  background_dump_deststring/u01/app/oracle/admin/BENSON1/ bdump
  请输入用户名:sys as sysdba
  输入口令:
  ERROR:
  ORA-12560: TNS: 协议适配器错误
  解决:
  1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板启动oraclehome92TNSlistener服务。
  2.2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
  3.SID没有设置对。输set oracle_sid=XXXX,XXXX就是你的database SID.
  DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 使用实例:
  注:如果所管理的数据库包含字典管理表空间,而且要将这些表空间转换为本地管理表
  空间,请使用DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL过程完成此操作。EXECUTE dbms_space_admin.tablespace_migrate_to_local("tablespace"); ---转换表空间
  在前几天的log中提到了如何将system表空间从dictionary-management tablespace转换为local management tablespace。
  在本文中将讲述dbms_space_Admin.tablespace_migrate_to_local的另一个实用的案例。
  当我们需要drop 一个包含很多extents的数据字典管理表空间是一件比较头痛的问题。
  他需要不停的访问UET$和FET$表,执行插入,删除操作,长期占有ST enqueue,造成数据库长时间无法allocate和deallocate extents,情况严重可能会造成很严重的后果。
  如何减少drop tablespace的时间呢?请看下面这个例子
  例子取自metalink note:311512.1
  执行时间从50多分钟减少到1分钟左右
  Following are the test results -
  CASE 1 - Dropping a DMT directly
  -----------------------------------------------
  SQL> select bytes,count(*) from dba_extents where tablespace_name='DMT_DROP' group by bytes;
  BYTES COUNT(*)
  ---------- ----------
  2048 92359
  4096 1
  14:41:42 SQL> drop tablespace dmt_drop including contents;
  Tablespace dropped.
  15:32:31 SQL>
  -----> Takes around 50 minutes to drop.
  CASE 2 - Dropping a DMT after converting to LMT
  --------------------------------------------------------------------
  select bytes,count(*) from dba_extents where tablespace_name='DMT_DROP' group by bytes;
  BYTES COUNT(*)
  ---------- ----------
  2048 92359
  4096 1
  17:00:33
  SQL>exec dbms_space_Admin.tablespace_migrate_to_local(tablespace_name=>'DMT_DROP')
  PL/SQL procedure successfully completed.
  17:01:14 SQL> drop tablespace dmt_drop including contents;
  Tablespace dropped.
  17:01:32 SQL>
  -----> Takes around 1 minute to drop.
  创建临时表:
  ON COMMIT DELETE ROWS:指定插入行的生存期仅为事务处理的持续时间
  ON COMMIT PRESERVE ROWS:指定插入行的生存期为会话的持续时间
  CREATE GLOBAL TEMPORARY TABLE employees_temp
  ON COMMIT PRESERVE ROWS
  AS SELECT * FROM employees;
  创建序列列子
  create sequence "scott"."xulie2" nocycle noorder cache 20 maxvalue 10000 minvalue 1 increment by 2 start with 1
  使用MERGE 命令可通过一个命令同时执行INSERT 和
  UPDATE 操作。
  MERGE 命令
  使用MERGE 命令可在一个命令中执行UPDATE 和INSERT。可将一个源中的数据合并到
  另一个源,因而可选择插入新行和更新特定列(如果行已经存在)。
  请考虑以下示例。
  JOBS 表中的某些数据如下所示:
  JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
  ---------- -------------- ---------- ----------
  AD_PRES President 20000 40000
  FI_ACCOUNT Accountant 4200 9000
  ST_CLERK Stock Clerk 2000 5000
  IT_PROG Programmer 4000 10000
  以下是JOBS_ACQUISITION 表的内容:
  JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY
  ---------- -------------- ---------- ----------
  AD_PRES VP 20000 40000
  DBA DB Admin 4200 9000
  SA Sys Admin 2000 5000
  使用MERGE 命令可将具有新JOB_ID 的所有行插入到JOBS 表中,如果JOB_ID 已存在,
  则使用JOB_TITLE 更新现有JOBS 行。结果“President”职位更改为“VP”,并且添加
  了新职务“SA”和“DBA
  merge into jobs j
  using(select * from jobs_acqulstion) a
  on (j.job_id=a.job_id)
  when matched then update set j.job_title=a.job_titel
  when not matched then insert
  (j.job_id,j.job_title,j.min_salary,j.max_salary)
  values(a.job_id,a.job_title,a.min_salary,a.max_salary)
  COMMIT ROLLBACK 命令
  默认情况下,不会提交输入的每个DML 命令。几个工具(包括iSQL*Plus)提供了一些
  选项,使用这些选项可以基于每个命令进行提交,或基于一组命令进行提交。
  在发出COMMIT 或ROLLBACK 之前,更改处于暂挂状态。仅执行更改的用户可以查看更
  改后的数据。其他用户可选择相同数据,但只能看到更改之前的数据。其他用户不能对别
  的用户已更改的数据发出DML。
  默认情况下,当一个用户尝试更改另一个用户正更改的行时,此用户必须等待,直到执行
  更改的用户提交或回退更改为止。这由Oracle 数据库的锁定机制自动进行控制。由于锁定机制已经内置到行中,所以数据库绝不会用完锁。
  锁
  数据并发处理
  默认情况下,锁定机制采用细粒度行级锁定模式。不同的事务处理可在同一个表内更新不同的行,彼此不相互干扰。
  尽管默认模式是行级锁定,但Oracle 数据库在需要时也支持在更高级别执行手动锁定。
  SQL> LOCK TABLE employees IN EXCLUSIVE MODE;
  Table(s) Locked.
  使用以上语句时,尝试更新锁定表中的行的任何其它事务处理都必须等待,直到发出锁定
  请求的事务处理完成为止。EXCLUSIVE 是最严格的锁定模式。下面列出了其它锁定模式:
  • ROW SHARE:允许并发访问锁定的表,但禁止会话锁定整个表进行独占访问。
  • ROW EXCLUSIVE:与ROW SHARE 相同,但是还禁止以SHARE 模式锁定。更新、插入或删除数据时会自动获取ROW EXCLUSIVE 锁定。
  • SHARE:允许并发查询,但禁止更新锁定的表。需要有(并且会自动请求)SHARE锁定才能创建表的索引。
  SHARE ROW EXCLUSIVE:用于查询整个表,允许其他人查询表中的行,但禁止其他人在SHARE 模式下锁定表或更新行。
  • EXCLUSIVE:允许查询锁定表,但禁止对锁定表执行任何其它活动。需要有EXCLUSIVE 锁定才能删除表。
  与任何锁定请求一样,手动锁定语句会一直等待,直到持有锁定(或先前请求锁定)的会话释放锁定为止。LOCK 命令接受用于控制等待行为的特殊参数NOWAIT。
  如果指定表已经由另一会话锁定,NOWAIT 会立即将控制权还给您:
  SQL> LOCK TABLE hr.employees IN SHARE MODE NOWAIT;
  LOCK TABLE hr.employees IN SHARE MODE NOWAIT
  *
  ERROR at line 1:
  ORA-00054: resource busy and acquire with NOWAIT specified
  通常不需要手动锁定对象。自动锁定机制提供大多数应用程序所需的数据并发处理能力。
  使用SQL 解决锁定冲突
  SQL 语句可用来确定阻塞会话并终止会话。
  SQL> select sid, serial#, username from v$session where sid in
  (select blocking_session from v$session)
  SQL> alter system kill session '144,8982' immediate;
  07_DICTIONARY_ACCESSIBILITY参数
  SQL> show parameter o7
  O7_DICTIONARY_ACCESSIBILITY boolean FALSE
  alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;
  重启之后生效
  实例:
  SQL> show parameter o7
  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  O7_DICTIONARY_ACCESSIBILITY boolean FALSE
  SQL> create user test1 identified by test1;
  User created.
  SQL> grant connect,select any table to test1;
  Grant succeeded.
  open others window to logon:
  SQL> conn test1/test1@testdb
  Connected.
  SQL> select count(*) from user_tables;
  COUNT(*)
  ----------
  0
  SQL> select count(*) from dba_tables;
  select count(*) from dba_tables
  *
  ERROR at line 1:
  ORA-00942: table or view does not exist
  SQL> select count(*) from v$session;
  select count(*) from v$session
  *
  ERROR at line 1:
  ORA-00942: table or view does not exist;
  Explicit grant privilege to test1;
  SQL> grant select on dba_tables to test1;
  Grant succeeded.
  SQL> grant select on v_$session to test1;
  Grant succeeded.
  test1 window:
  SQL> select count(*) from dba_tables;
  COUNT(*)
  ----------
  816
  SQL> select count(*) from v$session;
  COUNT(*)
  ----------
  13
  Set .parameter value=true;
  SQL> show parameter o7
  NAME TYPE VALUE
  ------------------------------------ ----------- -----------
  O7_DICTIONARY_ACCESSIBILITY boolean TRUE
  SQL> create user test2 identified by test2;
  User created.
  SQL> grant connect ,select any table to test2;
  Grant succeeded.
  SQL>
  SQL> conn test2/test2@testdb
  Connected.
  SQL> select count(*) from user_tables;
  COUNT(*)
  ----------
  0
  SQL> select count(*) from dba_tables;
  COUNT(*)
  ----------
  816
  SQL> select count(*) from v$session;
  COUNT(*)
  ----------
  10
  select any dictionary系统权限可以override O7_DICTIONARY_ACCESSIBILITY=false的情况去访问系统数据字典
  1本地操作系统认证
  操作系统用户oracle,创建操作系统认证的用户ops$oracle.
  SQL>show parameter os_authent_prefix;
  NAME                       TYPE       VALUE
  --------------------------- ----------- --------
  os_authent_prefix          string     ops$
  SQL>create user ops$oracle identified externally;
  User created.
  SQL>grant connect, resource to ops$oracle;
  Grant succeeded.
  [oracle@cent4 ~]$sqlplus /
  SQL>show user
  USER is "OPS$ORACLE"
  2远程操作系统认证
  remote_os_authent改成true后,才可以远程操作系统认证.
  SQL>show parameter remote_os_authent
  NAME                   TYPE       VALUE
  ----------------------- ----------- ------------
  remote_os_authent      boolean    FALSE
  SQL>alter system set remote_os_authent=true scope=spfile;
  System altered.
  [oracle@cent4 ~]$sqlplus /@centtns
  SQL*Plus: Release 10.2.0.1.0 - Production on星期一6月6 10:56:12 2011
  Copyright (c) 1982, 2005, Oracle. All rights reserved.
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  With the Partitioning, OLAP and Data Mining options
  SQL>
  注意: 1.客户端的操作系统用户也要是oracle,这样才能实现远程操作系统认证.
  2. remote_os_authent这个参数开启后,存在很大的安全隐患,远端服务器只要根据数据库中存在的外部用户来创建用户,就可以登陆到数据库中,因此除非必要,否则不建议开启这个参数.
  查看某表的约束条件:
  1.系统包 获取DBMS_METADATA.GET_DDL('TABLE','你的表名') //红色字体为大写
  select dbms_metadata.get_ddl('TABLE','VOTE_ANSWER') FROM DUAL;
  2.数据字典获取
  select a.owner,a.constraint_name,a.constraint_type from all_constraints a where a.owner=upper('SCOTT') and a.table_name=upper('VOTE_ANSWER')
  select column_name,constraint_name from user_cons_columns a where a.constraint_name='CHECKEY';
  以上两个句子结合为如下
  select c.column_name,c.constraint_name from (select a.owner,a.constraint_name,a.constraint_type from all_constraints a where a.owner=upper('SCOTT') and a.table_name=upper('VOTE_ANSWER')) b,
  (select column_name,constraint_name from user_cons_columns a) c
  where b.constraint_name=c.constraint_name
  merge 语句练习,注意using的表,无重复。
  SQL> merge into yes
  2using(select distinct group# from benson ) benson
  3on(benson.group#=yes.hao3)
  4when matched then update
  5set yes.hao2=benson.group#
  ######################################################################33
  错误信息:
  [oracle@VM_Center5_wusy u01]$ netca
  Oracle Net Services 配置:
  # An unexpected error has been detected by HotSpot Virtual Machine:
  # SIGSEGV (0xb) at pc=0xa43ea4d4, pid=4341, tid=3086784720
  # Java VM: Java HotSpot(TM) Client VM (1.5.0_17-b02 mixed mode)
  # Problematic frame:
  # C [libnnz11.so+0x3c4d4]
  # An error report file with more information is saved as hs_err_pid4341.log
  # If you would like to submit a bug report, please visit:
  # http://java.sun.com/webapps/bugreport/crash.jsp
  /u01/oracle/bin/netca: line 178: 4341 已放弃 $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $*
  解决办法:
  在hosts文件中的127.0.0.1 后面添加对应的主机名,如:
  vi /etc/hosts
  127.0.0.1 localhost.localdomain localhost VMRHEL5
  案列1
  不能打开到主机的连接,在端口1521:连接失败的解决方法
  telnet IP 1521
  不能打开到主机的连接, 在端口 1521: 连接失败
  不存在防火墙拒绝的情况,
  我打开另一台也装有Oracle且1521可以连接的机器,查看NETWORK\ADMIN\listener.ora文件,仔细对比两个Oracle该文件的区别,发现正常的Oracle服务器上,listener.ora文件,如下这段HOST显示的是机器名,而不能连接的是“localhost”。
  LISTENER =
  (DESCRIPTION =
  www.iyunv.com
  (ADDRESS = (PROTOCOL = TCP)(HOST = lggsuper_pc)(PORT = 1521))
  )
  Oracle错误

  解决:
  第一步:
  Shutdown abort
  Startup mount
  SQL> show parameter background_dump_dest;
  NAMETYPEVALUE
  ------------------------------------ ----------- ------------------------------
  background_dump_deststringd:\app\baoshengzhu\diag\rdbms\
  oracle\oracle\trace
  进入该路径,查看alert_oracle.log,可见文件记录错误:
  ####################错误信息以及建议解决的方法##########################################################
  Errors in file d:\app\baoshengzhu\diag\rdbms\oracle\oracle\trace\oracle_ora_6988.trc:
  ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。
  ************************************************************************
  You have following choices to free up space from recovery area:
  1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
  then consider changing RMAN ARCHIVELOG DELETION POLICY.
  2. Back up files to tertiary device such as tape using RMAN
  BACKUP RECOVERY AREA command.
  3. Add disk space and increase db_recovery_file_dest_size parameter to
  reflect the new space.
  4. Delete unnecessary files using RMAN DELETE command. If an operating
  system command was used to delete files, then use RMAN CROSSCHECK and
  DELETE EXPIRED commands.
  ###################################################################################
  第二步:
  select * from v$recovery_file_dest;
  alter system set db_recovery_file_dest_size=10737418240

  alter database open
  exit
  第三步:
  rman target /
  进入rman工具窗口
  rman target /
  RMAN>crosscheck archivelog all;-- 运行这个命令可以把无效的expired的archivelog标出来。
  RMAN>delete expired archivelog all; -- 直接全部删除过期的归档日志。
  RMAN>delete noprompt archivelog until time "sysdate -3";  -- 也可以直接用一个指定的日期来删除。
  重新打开数据库:
  如果遇到一些情况:

  lusrmgr.msc 查看用户是否属于oracleDBA组里面。

  然后,认证方式改一下,找到sqlnet.ora文件

  控制文件丢失,重建控制文件步骤:
  查看文件信息:
  SQL> select member from v$logfile;
  MEMBER
  --------------------------------------------------------------------------------
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO03.LOG
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO02.LOG
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO01.LOG
  ######################
  SQL> select name from v$controlfile;
  NAME
  ------------------------------------------------------------------
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL01.CTL
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL03.CTL
  D:\APP\BAOSHENGZHU\FLASH_RECOVERY_AREA\ORACLE\CONTROL02.CTL
  ##############
  SQL> select name from v$datafile;
  NAME
  ----------------------------------------------------------------
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSTEM01.DBF
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSAUX01.DBF
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\UNDOTBS01.DBF
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\USERS01.DBF
  D:\APP\BAOSHENGZHU\ORADATA\ORACLE\EXAMPLE01.DBF
  D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEST1.DBF
  #################################################################################################
  删除所有的控制文件,后操作
  第一步:
  shutdown immediate
  第二步:
  create controlfile
  reuse database "oracle" noresetlogs noarchivelog
  maxlogfiles 35
  maxlogmembers 3
  maxinstances 1
  maxloghistory 400
  logfile
  group 1 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO01.LOG' size 50M,
  group 2 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO02.LOG' size 50M,
  group 3 'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\REDO03.LOG' size 50M
  datafile
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSTEM01.DBF',
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\SYSAUX01.DBF',
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\UNDOTBS01.DBF',
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\USERS01.DBF',
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\EXAMPLE01.DBF',
  'D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEST1.DBF'
  character set we8dec
  第三步:
  alter system set control_files=
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL01.CTL',
  'D:\APP\BAOSHENGZHU\ORADATA\ORACLE\CONTROL03.CTL',
  'D:\APP\BAOSHENGZHU\FLASH_RECOVERY_AREA\ORACLE\CONTROL02.CTL' scope=spfile;
  第四步:
  alter database open
  完成

  select * from dba_temp_files; //查看临时表空间
  ALTER DATABASE TEMPFILE 'D:\APP\BAOSHENGZHU\PRODUCT\11.2.0\DBHOME_2\DATABASE\TEMPORARY01.DBF' AUTOEXTEND ON NEXT 1G MAXSIZE 10G; //修改临时表空间大小
  select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';或select temporary_tablespace from user_users;//查看默认的临时表空间
  exp user/passwd@xxx file='/xxx/xx/xx.dmp'
  log='/xxx/xx/xx.log' owner=xxx
  imp user/passwd@xxx file='/xxx/xx/xx.dmp'
  log='/xxx/xx/xx.log' fromuser=xxx
  touser=xxx
  Oracle下查看索引的语句
  1. 查询一张表里面索引
  select * from user_indexes where table_name=upper('表名');
  2. 查询被索引字段
  select * from uer_ind_columnss where index_name=('索引名');
  3. 给某一字段创建索引
  create index 索引名 on 表名(字段名1,字段名2)


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-581948-1-1.html 上篇帖子: oracle错误代码及解决办法整合 下篇帖子: ORACLE 非归档变成归档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表