Oracle 数据库的基本操作

本文详细介绍Oracle数据库的用户及表空间管理、监听配置、密码过期处理、数据导出导入等关键操作,并提供实用SQL命令示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle 创建用户:
select*from dba_users;
--1.查询默认数据文件的存储位置
select * from dba_data_files;
--2.创建表空间命令
CREATE TABLESPACE "dqs_DATA" DATAFILE 'C:\APP\WIN10\ORADATA\ORCL\DZQZ.DBF' SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
--3.创建用户命令
CREATE USER DZQZ PROFILE "DEFAULT" IDENTIFIED BY DZQZ DEFAULT TABLESPACE "DZQZ_DATA"  ACCOUNT UNLOCK;
--4.给用户授权
GRANT "CONNECT" TO DZQZ;--//授予用户连接权限
GRANT "RESOURCE" TO DZQZ;--//授予创建和使用资源的权限(如:允许用户创建表以及使用表和试图)
GRANT SELECT ANY DICTIONARY TO DZQZ;
GRANT SELECT ANY TABLE TO DZQZ;
GRANT UNLIMITED TABLESPACE TO DZQZ;--1.查询默认数据文件的存储位置
GRANT dba TO DZQZ;--管理员权限
删除表空间
1.删除用户
drop user "KSJR" cascade;
2.删除表空间,到数据文件的位置删除表空间的物理数据文件 即 KSJR.dbf
drop tablespace "KSJR_DATA" including contents and datafiles
oracle  添加监听配置的方法:
修改:   D:\app\Lzj\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora,添加一条记录
oracle用户密码过期 修改办法:
确定是由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致。
1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

11. oracle 如何查看建表时间?
   SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='YWGL_NEWMATERIAL';
   注意:  你的table名字一定要大写  在数据字典里是分大小写的。
其他知识:
cmd中远程其他数据库:
C:\Users\Administrator>sqlplus XXGX/XXGX@192.168.200.70/orcl as sysdba;
数据导出: 
 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 
   exp XXGX/XXGX@XXGX file=d:\daochu.dmp full=y log=d:\daochu.log
 2 将数据库中system用户与sys用户的表导出 
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
   exp HYCHWX/HYCHWX@HYCHWX file=d:\daochu.dmp full=y owner=(HYCHWX) 
 3 将数据库中的表table1 、table2导出 
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)  
 4 将数据库中的表table1中的字段filed1以"00"打头的数据导出 
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like ’00%’\" 
   
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。 
                     不过在上面命令后面 加上 compress=y  就可以了 
数据的导入 
 1 将D:\daochu.dmp 中的数据导入 TEST数据库中。 
   imp system/manager@TEST  file=d:\daochu.dmp 
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 
   在后面加上 ignore=y 就可以了。 
 2 将d:\daochu.dmp中的表table1 导入 
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)  
 3 将按照用户(owner=a)导出的表文件 file=d:\daochu.dmp 导入到用户b的所在表空间中 
 imp userid=b/pwd file=d:\daochu.dmp fromuser=a touser=b logs=d:/xx.log

解决 the account is locked 问题:
用有DBA权限的用户或本地conn / as sysdba 登陆进行解锁命令:alter user lxy account unlock;
ora-28000 the account is locked, 出现这种原因,是因为用户被锁定了,
一般出现这种原因,是因为程序连接数据库的数量大于配置的连接数,按照我的所遇到的问题,以下步骤可以解决。
1. 程序连接大于 oracle 连接数;      
   处理方式: 重新设置 连接数: 用管理员进去,执行以下脚本,  
   alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS 10; --设定连接数  
   alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED; --不限制连接数
2. 程序连接大于 连接池配置的连接数;     
   处理方式:把连接池的连接数设置大一些;
3. 释放用户锁:  
   用超级管理员,执行 alter user 用户名 account unlock;
--查询所有的用户
select*from dba_users;
--快速接入导入 log_message 的日志序列
create sequence username.HIBERNATE_SEQUENCE minvalue 1 maxvalue 9999999999999999999999999999 start with 8533 increment by 1 cache 20 ;
//创建删除存储过程
create or replace procedure delbigtab(
   p_tablename   IN   VARCHAR2,  
   p_condition   IN   VARCHAR2,  
   p_count       IN   VARCHAR2  
)
as
   pragma autonomous_transaction;
   n_delete NUMBER :=0;
begin
   WHILE 1 = 1 
   LOOP  
      EXECUTE IMMEDIATE    'delete from ' 
                        || p_tablename  
                        || ' where ' 
                        || p_condition  
                        || ' and rownum <= :rn' 
                  USING p_count;  
 
      IF SQL%NOTFOUND  
      THEN  
         EXIT;  
      ELSE  
         n_delete := n_delete + SQL%ROWCOUNT;  
      END IF;  
 
      COMMIT;  
   END LOOP;  
 
   COMMIT;  
   DBMS_OUTPUT.put_line ('Finished!');  
   DBMS_OUTPUT.put_line ('Totally ' || TO_CHAR (n_delete)  
                        || ' records deleted!' 
                        );  
end delbigtab;
--调用存储过程  3000  15分钟   1000  4分钟
begin
   delbigtab('buss_orbit_gpx','satellitename=''SPOT5''','500' );
  end;


  --只删除内容,不删除表结构
TRUNCATE TABLE buss_orbit_gpx;

--创建主键sequence:TBL_USER_SEQUENCE
create sequence TBL_SYS_USER_SEQUENCE
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
--(TBL_SYS_USER)用户表主键自动添加触发器
CREATE OR REPLACE TRIGGER TBL_SYS_USER_TG
  BEFORE INSERT ON TBL_SYS_USER
  FOR EACH ROW
  WHEN (new.user_id is null)
begin
  select TBL_SYS_USER_SEQUENCE.nextval into :new.user_id from dual;
end;

create or replace table TBL_SYS_USER
(
  user_id             NUMBER(19) not null,
  user_name           VARCHAR2(60 CHAR),
  user_pwd            VARCHAR2(60 CHAR)
)
alter table TBL_SYS_USER
  add primary key (ID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值