oracle基础知识分享

Space1208 2017-12-08 03:11:53
创建一个和a表一样的空表----create table newtable as select * from a where 1=2;
创建一个和a表一样的表-----create table newtable as select * from a;
创建一个表---主键约束
CREATETABLE stu(
sid CHAR(6) PRIMARY KEY,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
创建一个表---主键自增长
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(20),
age INT,
gender VARCHAR(10)
);
----非空约束
CREATE TABLE stu(
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(10) NOT NULL,
age INT,
gender VARCHAR(10)
);
------------唯一约束 类似主键
CREATE TABLE tab_ab(
sidINT PRIMARY KEY AUTO_INCREMENT,
snameVARCHAR(10) UNIQUE
);
------------指定外键约束
CREATE TABLE t_section(
sid INTPRIMARY KEY AUTO_INCREMENT,
sname VARCHAR(30),
u_id INT,
CONSTRAINT t_user FOREIGN KEY(u_id) REFERENCES t_user(uid)
);

------授权语句
grant connect ,resource to user1; ---授予用户权限
grant connect, resource to user1 with admin option; //可以传递所获权限。
grant select, update on product to user02 with grant option;
grant create any table,create procedure to role1;
grant role1 to user1;
grant select on table1 to user1;
grant select any table to user1;
给用户精确赋予权限
GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字


----- 回收权限
Revoke connect, resource from user50;
Revoke select, update on product from user02;

----插入
insert into newTable select * from oldTable;
insert into Table1(Table1.c1,Table1.c2) select Table2.c1,Table2.c2 from Table2.


----数据库完全导出
exp system/manager@TEST file=d:daochu.dmp full=y
将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)
将数据库中的表inner_notify、notify_staff_relat导出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:daochu.dmp tables=(table1) query="""where filed1 like '00%'""" ---注意 双引号 不能少。
在上面的命令加上 compress=y 来实现压缩。
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
将d:daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)


------测试数据库是否可以连接
tnsping orcl

查看用户表空间使用情况
select
b.file_id 文件ID号,
b.tablespace_name 表空间名,
b.bytes/1024/1024||'M'字节数,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024||'M' 已使用,
sum(nvl(a.bytes,0))/1024/1024||'M' 剩余空间,
100 - sum(nvl(a.bytes,0))/(b.bytes)*100 占用百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_id,b.bytes
order by b.file_id;

查看临时表空间 (dba_temp_files视图)(v_$tempfile视图)
select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
select status,enabled, name, bytes/1024/1024 file_size from v$tempfile;--sys用户查看
查看空间地址
select file_name , tablespace_name from dba_data_files;

查看表空间是否为自动增长
select tablespace_name,file_name,autoextensible from dba_data_files where tablespace_name = 'USERS';

将空间设置为自动增长
alter database datafile '/home/oracle/ts01.dbf' autoextend on next 5m maxsize unlimited;
将临时数据文件设为自动扩展:
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ autoextend on next 5m maxsize unlimited;

增大临时文件大小:
alter database tempfile ‘/u01/app/oracle/oradata/orcl/temp01.dbf’ resize 100m;
增加文件大小
alter database datafile '\oracle\oradata\anita_2008.dbf' resize 4000m。

创建临时表空间
SQL> create temporary tablespace test1temp
tempfile '/home/u01/app/oracle/oradata/ytzx/test1temp01.dbf'
size 10240m
autoextend on next 1024m
maxsize 20480m
extent management local ;

创建数据表空间
create tablespace test1
logging
datafile '/home/u01/app/oracle/oradata/ytzx/test1.dbf'
size 10240M --50-100G
autoextend on next 2000M
maxsize unlimited
extent management local autoallocate
segment space management auto ;

同一空间新增存储文件
ALTER TABLESPACE 表空间名
ADD DATAFILE '数据文件路径'
SIZE 500M
AUTOEXTEND
ON NEXT 1M
MAXSIZE UNLIMITED;

为用户重新指定表空间 (设置为自动增长)
alter user username default tablespace userspace;



...全文
537 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
minsic78 2017-12-26
  • 打赏
  • 举报
回复
引用 8 楼 ifvlr 的回复:
[quote=引用 6 楼 minsic78 的回复:] [quote=引用 5 楼 qq_35086097 的回复:] 你确定这是oracle的?我怎么感觉是mysql的?毕竟 oracle你不创建序列能自增长????
我要是不创建序列实现自增长了你又如何? [/quote] 还请大神指教~ [/quote] 自己写程序,无论是PL/SQL,还是其他语言,Java啊,C啊,我想程序员实现这种东西都是分分钟的事情吧 另外,12c支持自增字段。
ifvlr 2017-12-26
  • 打赏
  • 举报
回复
引用 6 楼 minsic78 的回复:
[quote=引用 5 楼 qq_35086097 的回复:] 你确定这是oracle的?我怎么感觉是mysql的?毕竟 oracle你不创建序列能自增长????
我要是不创建序列实现自增长了你又如何? [/quote] 还请大神指教~
ChinaITOldMan 2017-12-25
  • 打赏
  • 举报
回复
Thank you for your sharing !
minsic78 2017-12-20
  • 打赏
  • 举报
回复
引用 5 楼 qq_35086097 的回复:
你确定这是oracle的?我怎么感觉是mysql的?毕竟 oracle你不创建序列能自增长????
我要是不创建序列实现自增长了你又如何?
Stuild Stuil 2017-12-20
  • 打赏
  • 举报
回复
你确定这是oracle的?我怎么感觉是mysql的?毕竟 oracle你不创建序列能自增长????
强长黑粗硬 2017-12-16
  • 打赏
  • 举报
回复
支持楼主,学习了。
卖水果的net 2017-12-09
  • 打赏
  • 举报
回复
不错,鼓励一下。 ps:有些知识(语法)是mysql的,建议分开写。
wandier 2017-12-08
  • 打赏
  • 举报
回复
学习了,!!!!!!!!
碧水幽幽泉 2017-12-08
  • 打赏
  • 举报
回复
不错,学习了。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧