Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
My company is now supporting Oracle for the first time, and most of my colleagues are SQL Server developers who haven't really worked with Oracle. I'm a little bit familiar with Oracle, but far from a genius on the subject. Unfortunately, that is enough to mean that I know more about Oracle than most of my co-workers, so I find myself constantly struggling to explain concepts I'm still learning myself in terms that people who aren't familiar with Oracle at all can understand.
The biggest problem that I run into is in knowing how SQL Server terminology translates into Oracle terminology. I understand that there's not a direct 1:1 mapping of terms, but it would be helpful to be able to know how to put Oracle concepts into SQL Server terminology and vice-versa when talking to my SQL Server-centric co-workers. Can someone tell me the best way to put these SQL Server terms into Oracle terminology?
database
instance
schema
And conversely, how to explain these Oracle concepts in SQL Server terms?
tablespace
database
listener
service name
SID
Oracle/SQLServer:
tablespace = doesn't exist
database = doesn't exist
instance = instance
schema = database
listener = doesn't exist
service name = database name
SID = database name
I don't know anything from sqlserver so what I can do is to try to explain what
* tablespace
* database
* listener
* service name
* SID
are.
A database is the collection of files that all together make the database. This can be datafiles but also parameter and password files.
That database is serviced by one or more instance[s]. An instance is the interface between client processes and the database. In a parallel server configuration - RAC - there can be multiple instances active on the same database.
A service is a connection handle to a database. A service van be serviced by multiple instances and every instance can serve multiple services. Services are used to make the combination of applications in one database possible. Every application connects to it's own service, ending up in an instance of the database.
A listener is the process that listens for clients that want to connect to an instance or service. the listeners hands over the connection request to an instance background process that performs the database interactions for the client.
A SID or ORACLE_SID is just the name of an instance.
The Concepts manual will be of great help.
I hope this helps.
Ronald
Some useful links:
Migrating from Oracle to SQL Server
SQL Server Migration Assistant for Oracle
A tablespace is a unit of database storage that is roughly equivalent to a file group in Microsoft SQL Server. Ref
The following book should answer all your questions:
Oracle Database Administration for Microsoft SQL Server DBAs (Osborne ORACLE Press Series) [Paperback]
Michelle Malcher (Author)
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I'm new to SQL, and i'm trying to understand something basic about it.
Why do we need a server to connect to when using SQL?
In my very narrow vision of it, it just uses some databases, which could be implemented as arrays for example (or whatever it is that is implemented "backstage").
For example, if I want to set up a table in my computer and do some operations on it, what usage does the server has? Why can't it "just be there"?
I think the reason for your confusion is too narrow interpretation of the word "server" as a separate hardware box.
A server does not need to run on separate hardware, or even in a separate virtual environment. It could be another process on the same computer, or even a library within your process. What makes it a server is an ability to accept and process requests from clients. It does not matter where the server runs physically: as long as you follow a protocol in which requests originate on the client side, you have a server.
What you're envisioning (roughly) is referred to as an in-process database and they do exist for SQL. SQL Server is set up to be used by multiple users or applications so it makes sense for it to be a central server that many clients can connect to so they can share the same data.
If you only want to process data locally, there is SQL Express LocalDB, SQLite and a few others that allow you to essentially embed a SQL engine inside your application.
You are, perhaps, confusing SQL the language with SQL Server, a Microsoft product that implements SQL.
SQL itself has many, many implementations. Many of those implementations do not use a server. MS Access, SQLite, FileMaker are common SQL-using products that rely on file-sharing rather than a client-server setup to provide multi-user access. These products can all also be used on a single machine without sharing files.
There are also implementations of SQL that use CSV files for storage although these are less common.
Finally, many of the client-server SQL products offer related, smaller-scale implementations that do not require a server. These are generally implemented using file-sharing as well.
It depends on what you are needing. Some instances of SQL, such as SQLite3, are local and file based. They have no server. Most provide a server because of the problem they address.
But lets address why a server is needed. Consider a Microsoft Access application where the databases are files shared over a network. Suppose 5 people are working with the same file. They each search for something, and the entire file must be passed over the network. Suppose one edits a record. The next time the others do a search, they will have to load the entire file again. If the file is large this is a huge performance hit. This is why servers were created.
A server receives only the SQL. The server does either a search, or an edit, and returns only the data that has been requested. For any database of reasonable size the performance improvement is huge.
Another benefit of a server is access control. With a server you can have multiple accounts and control what databases and even tables they have access to, and what activities they are allowed to perform.
In short, the server was created to address the problems that arise when you have multiple clients working with a single database.
I'm new to the forum and am studying Oracle SQL and PL/SQL. I have created a local database and a database link to a remote database to which I have to copy all my objects.
I think I'll be able to do the copying of the objects from local to remote database, but neither my course material nor my googling have given me much of a steer in terms of the modifying the objects to use the remote tables only if the local database is offline.
I'd be hugely grateful if anyone has done a similar task and could point me in the direction of any good material on the subject.
(I'm working with Oracle 11g Express and Oracle SQL Developer)
Many thanks in advance
Edit from original poster:
I got some clarification on the task requirement (see comments below) and I've created a new thread to ask my next question about creating packages at the remote database end. thanks guys for your help so far.
If database A is offline, a database link from database A to database B will not do you any good, as it will not be accessible. The same is the case with PL/SQL, PL/SQL on database A will not be available if database A is down. This is not a problem you will solve with PL/SQL and database links.
Transparent Application Failover (http://docs.oracle.com/cd/B19306_01/java.102/b14355/ocitaf.htm) could solve part of the problem, allowing a connection to failover to database B if database A is down. However, it will not automatically switch back to database A when the database comes back up, unless you try a connection to database A again. You will need to have your PL/SQL code copied on both databases.
There are already robust failover mechanisms in Oracle, some free and required some hacking, such as redo log application, some costly but well supported, such as Oracle Data Guard. I would suggest you review your design and what you are trying to accomplish. If I had to absolutely do what you are trying to do, I would throw a web service in front of each database, use a load balancer in front of the web services that always connected to service A, unless it was down, in which case it would connect to service B.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 years ago.
Improve this question
I can not understand how Microsoft licensing works.
Here is the system I am trying to cost.
Windows Server 2008 or 2012
SQL Server Standard
ASP.NET MVC 4 App 20 users
SSRS 20 users
SSIS data inports
So do I need 20 Cals for SSRS?
Do I need 20 Cals for the MVC app which is using the SQL Server?
Does SSIS need a Cal?
If you are running a public website using the SQL Server as a backend, you need to use Per Core licensing (or Per Processor licensing prior to SQL Server 2012). With this license, you do not need any CALs.
If you are saying you have an internal web application being used by 20 users, then you have several options and you'll have to figure out which is cheapest (keeping in mind future growth).
You can choose the Per Core licensing as described above and all your licensing needs will be met. Note, you need one license per processor core on your server. You did not specify how many cores your system has. If you have a backup server for fail-over, you will need additional licenses for that as well.
Alternatively, you can choose the Server+CAL model, which is the more confusing approach. First, you'll need a server license. Then, you have to determine how many "users" you have. For this purpose, a "user" is either a specific person (user) or a specific machine (device). You will need one CAL for each "user". If either the machine or the person logged in at the machine has a CAL license, they may use the SQL Server for any purpose, whether it be SSRS, SSIS, a web application, or whatever.
If you have backend systems (servers not being used by a person) that need to connect to the SQL Server to perform automated data imports or any such thing, those systems will need device CALs. If you have a traveling sales-person who needs to use the web app from anywhere, that person will need a user CAL. If you have typical cubicle employees, you can license their machine with a device CAL, or you can license the employee with a user CAL, it's up to you.
Edit:
You'll also need a Windows Server license of course. I think that's obvious, but you never know...
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I am crazy to know that, how login system works in large applications like Facebook, Gmail, youtube, yahoo etc. Once after entering credentials server is responding more quickly. How is that possible ?
There must be more db servers for storing user information. So my question is
How they look for authentication information over more db servers?
Do they look over all the db servers to check for a particular user and if so how it is responding more quickly ?
Do they allocate db server based on geographical location of the user ?
And do they also have more application servers and how these are interconnected with each other.
RDBMS have the functionality to link servers that issue distributed queries, updates, commands, and transactions on heterogeneous data sources.
The database system will use some form of cached information about the user, in SQL Server an execution plan is stored and used when a query is executed. The database management system will decide which execution plan to take in order to generate the fastest results or use a cached data set. Note: Google, Facebook, Amazon etc will lot of server processing power behind the scenes which will make it seem instantaneous. They will also have dedicated teams to manage their databases, perform indexes, tuning, optimization and identify bottlenecks.
The geographical location of the server could be a factor. The closer the server is to the user the faster they can get the information but IMO this would be a matter of nano/milli seconds difference depending on where their data center is located. If the server gets too busy then the load balance will migrate you/other users to a server with more available resources.
Yes. Using more than one web server is needed in scenarios like this and is tied in to part 3 of the question, which server you hit depends on how much available resources the closest server has and if it will accept your connection. They are distributed but the whole process seems transparent to the user, i.e. they think they are using the same server as every other client. They can be interconnected by using session management, Web Services and other interoperability techniques and technologies.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I have a web application using a database in SQL Server 2008. I am the developer of this project and this project has been hosted elsewhere.
I've delivered the project to the administrator. Now the administrator is able to connect to SQL Server but I don't want the administrator to be able to see the database tables.
Is there any way to do this?
I've seen this done before by the makers of ACT. Their product installs a new instance of SQL Server Express and as part of that process they encrypt the sa password for the instance. This makes it 'impossible' for others to connect to the database using anything other than their product and add-on tools.
I don't know exactly how they do it, but perhaps you could search for encrypting sa password or something similar and find out how to do it.
Shy of installing your own instance of SQL Server I am not sure how you would go about this.
Bear in mind that your application will need to then provide the ability to backup, tune, modify, etc the database as the DBA would not have access to the instance of SQL Server.
Incidentally, we threw ACT out once we saw this - I didn't, and still don't, like the idea of a black box running on one of our servers.
In the end, you'll probably find that this added layer of protection (for you, not the client) just isn't worth the aggravation. While you may have proprietary information in the form of the database schema the odds of the client reverse engineering your application and then making their own are slim. Even if they did, it is hard to make good software - they likely wouldn't get it 'right' anyway.
My advice, don't worry about this, focus on making your software great so there is no reason for them to roll their own or look elsewhere.
Simple: No, he is DBA. He can not do his job without the ability to work with the database. Get over your objections.
You cannot limit the rights of an administrator on a server.
The administrator also has access to pretty much all tables that store your encryption keys, so TDE won't work.
If he is a security admin or one of the other roles, that might solve the issue as by default such roles has no permissions on your data.
SQL Administrators normally have these roles to protect your data. They need it.
If the data is very sensitive, you need to use alternative means to secure it, such as applying your own encryption before saving the sensitive values. (AES etc.)