oracle 创建用户:
select*from dba_users;
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;--管理员权限
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
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,添加一条记录
修改: 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;
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;
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
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 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;
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;
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 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
);